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

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

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

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 الخام مطلقًا.
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

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