Skip to main content
عند فشل دفعة، يخبرك Dodo Payments بالسبب من خلال error_code موحّد وerror_message قابل للفهم. يوضح هذا الدليل كيفية قراءة هذه الحقول، وتحديد ما إذا كانت إعادة المحاولة مجدية، واسترداد الدفعة دون كشف معلومات حساسة للعملاء.

كيف يُبلغ Dodo Payments عن الفشل

تحمل كل دفعة فاشلة — سواء كانت عملية دفع لمرة واحدة أو تجديدًا لاشتراك — حقول الفشل نفسها في كائن الدفعة:
يكون كل من error_code وerror_message بقيمة null إلى أن تفشل الدفعة فعليًا. تحقق دائمًا من status أولًا، ثم اقرأ حقول الخطأ.
error_message من merchant API هو نص موجّه للتاجر. ويمكن أن يذكر السبب الحقيقي للرفض، بما في ذلك الأسباب المرتبطة بالاحتيال، لذلك لا تعرضه مباشرةً للعميل مطلقًا. اربط error_code بصياغتك الخاصة الآمنة للعميل بدلًا من ذلك، كما هو موضح في عرض الأخطاء للعملاء بأمان.

Webhook الخاص بـ payment.failed

الطريقة الأكثر موثوقية لاكتشاف الفشل هي webhook الخاص بـ payment.failed. يغلّف الحدث كائن الدفع الكامل في data:
payment.failed payload
يقرأ المعالج الأساسي error_code ويوجّه المعالجة وفقًا له:
تحقق دائمًا من توقيع webhook قبل معالجته. راجع دليل Webhooks للاطلاع على الإعداد الكامل، بما في ذلك التحقق من التوقيع وضمان عدم التكرار.

تحديد ما إذا كنت ستعيد المحاولة: حالات الرفض المؤقتة مقابل النهائية

يخبرك error_code ما إذا كانت إعادة المحاولة باستخدام طريقة الدفع نفسها تستحق العناء. يسرد مرجع Transaction Failures نوع الرفض والإجراء المقترح لكل error_code.

معالجة حالات الفشل عند الدفع مقابل التجديد

تعتمد طريقة الاسترداد على ما إذا كان العميل حاضرًا.
العميل يجري عملية الدفع بنشاط. اعرض رسالة واضحة واسمح له بإعادة المحاولة فورًا أو باستخدام بطاقة أخرى.
  • requires_payment_method — لم يقدّم العميل طريقة دفع مطلقًا: إما أنه لم يُدخل تفاصيل البطاقة، أو طُلبت منه ولم يتخذ أي إجراء. عادةً ما يكون هذا تخلّيًا عن عملية الدفع، وليس رفضًا — أعد إشراك العميل لإكمال الدفع (راجع استرداد سلة التسوق المتروكة).
  • requires_customer_action — يلزم إجراء مصادقة إضافي (مثل 3DS)؛ اطلب من العميل إكماله. راجع معالجة 3D Secure.

إعادة محاولة دفعة فاشلة

  • الاشتراكات: فعّل إعادة محاولات دفع الاشتراك لاسترداد حالات الرفض المؤقتة دون الحاجة إلى أعمال دمج. يمكنك أيضًا تشغيل الاسترداد من خلال مطالبة العميل بتحديث طريقة الدفع عبر Update Payment Method API، الذي يخصم أي مستحقات معلّقة.
  • الدفعات لمرة واحدة: أعد إرسال صفحة الدفع أو payment_link حتى يتمكن العميل من المحاولة مجددًا باستخدام طريقة مختلفة. لا توجد إعادة محاولة تلقائية للدفعات لمرة واحدة.
لا تعِد محاولة حالات الرفض النهائية باستخدام البطاقة نفسها. قد تعتبر شبكات البطاقات عمليات الرفض المتكررة مسيئة، مما يضر بمعدل التفويض لديك.

عرض الأخطاء للعملاء بأمان

اعرض للعملاء رسالة ودية — وليس error_code الخام مطلقًا، ولا error_message الموجّه للتاجر مطلقًا.
في الواجهات التي تتحكم بها Dodo Payments — صفحة الدفع وCustomer Portal ورسائل البريد الإلكتروني لمتابعة التحصيل — تم تنفيذ هذا الربط نيابةً عنك بالفعل، بما في ذلك الرجوع إلى رسالة عامة لحالات الرفض المرتبطة بالاحتيال. لا تحتاج إلى الربط أدناه إلا عندما تعرض حالات الفشل في منتجك الخاص.
Customer-facing messaging
لا تكشف مطلقًا السبب الحقيقي لـ STOLEN_CARD أو LOST_CARD أو PICKUP_CARD أو FRAUDULENT. قد يؤدي عرض هذه الأسباب إلى تنبيه جهة احتيالية. اعرض رسالة رفض عامة، وسجّل فقط error_code المحدد داخليًا.

ذات صلة

Transaction Failures

كل رمز رفض ونوعه والإجراء المقترح.

Error Codes

أخطاء API وأخطاء منطق الأعمال التي لا تُعد حالات رفض للبطاقات.

Subscription Payment Retries

الاسترداد التلقائي لحالات الرفض المؤقتة عند تجديد الاشتراكات.

Subscription Dunning

تسلسلات البريد الإلكتروني التي تسترد حالات الرفض النهائية.

Payment Webhooks

مخطط الحمولة الكامل لأحداث الدفع.

Testing Failures

بطاقات اختبار تحاكي حالات الرفض وفشل التجديد.
آخر تعديل في ٨ أغسطس ٢٠٢٦