Skip to main content
تُعيد Manual Retry محاولة دفع تجديد الاشتراك الفاشلة فور طلبك، من صفحة تفاصيل الدفع أو عبر API. وتخصم المبلغ من طريقة الدفع المحفوظة في الاشتراك، وتعمل بشكل مستقل عن جدول Payment Retries التلقائي.

ما هي Manual Retry؟

عند فشل دفعة التجديد، ينتقل الاشتراك إلى on_hold، وتعيد Payment Retries محاولة تحصيل المبلغ وفق جدول زمني متدرج. أحيانًا تعرف أن الدفع سينجح الآن: فقد يؤكد العميل أنه شحن رصيده، أو قد يكون فريق الدعم على اتصال به. تتيح لك Manual Retry إرسال محاولة واحدة فورًا بدلًا من الانتظار ساعات أو أيامًا حتى موعد المحاولة المجدولة التالية.
  • دفعات التجديد فقط: تنطبق Manual Retry على فواتير تجديد الاشتراكات عندما يكون الاشتراك في on_hold. ولا تكون الدفعات الأولى، والدفعات لمرة واحدة، والرسوم الناتجة عن تغيير الخطة، والرسوم عند الطلب مؤهلة.
  • لا يتطلب إجراءً من العميل: تُرسل عملية الخصم إلى طريقة الدفع المحفوظة مسبقًا في الاشتراك.
  • مستقلة عن الإعادات التلقائية: لا تستهلك إعادة المحاولة اليدوية محاولةً من الجدول التلقائي، ولا تغيّر موعد إعادة المحاولة المجدولة التالية، وتعمل حتى عند إيقاف Payment Retries.
  • تعيد محاولة الفاتورة، وليس الدفع: الدفع الفاشل هو نقطة البداية فقط. يبحث Dodo Payments عن فاتورة التجديد المفتوحة المرتبطة به ويحصّل ذلك الدين، لذلك لا يهم أي دفعة فاشلة في الفاتورة تعيد المحاولة منها.

إعادة المحاولة من لوحة التحكم

1

Open the failed payment

انتقل إلى المعاملات ← الدفعات وانقر على دفعة التجديد الفاشلة لفتح صفحة تفاصيل المعاملة.
2

Click Retry Payment Manually

انقر على Retry Payment Manually في الزاوية العلوية اليسرى. لا يتوفر الزر إلا عندما تكون الدفعة مؤهلة.
3

Check the result

يُنشأ دفع جديد للمحاولة ويظهر في سجل النشاط. إذا نجحت عملية الخصم، يعود الاشتراك إلى active ويتقدم تاريخ الفوترة التالي كالمعتاد. وإذا لم يكن معالج الدفع قد سوّى عملية الخصم بعد، فستظهر الدفعة قيد التنفيذ إلى أن تُبلغ webhook‏ payment.succeeded أو payment.failed بالنتيجة.
صفحة تفاصيل المعاملة لدفعة فاشلة تعرض رمز الخطأ والرسالة وسجل النشاط وزر إعادة محاولة الدفع يدويًا

Retry Payment Manually on the transaction details page of a failed renewal

الأهلية

لا تُرسل إعادة المحاولة اليدوية إلا عند اجتياز جميع الفحوصات أدناه. يعرض عمود رمز السبب ما يعيده API: في reason على GET /payments/{payment_id}/retry، وكخطأ code على POST /payments/{payment_id}/retry.
Manual Retry أضيق نطاقًا من الإعادات التلقائية في نقطة واحدة: فهي تتطلب أن يكون الاشتراك في on_hold. تستمر الإعادات التلقائية في الحالات الأخرى غير النشطة؛ راجع انتقالات حالة الاشتراك.
لا يمكن أن تنجح إعادة محاولة الرفض النهائي باستخدام البطاقة نفسها، كما أن الرفض المتكرر يضر بمعدل التفويض لديك. عندما يكون السبب MANUAL_RETRY_HARD_DECLINE، اطلب من العميل تحديث طريقة الدفع بدلًا من ذلك. تتولى Subscription Dunning هذا الأمر تلقائيًا.

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

تسمح كل فاتورة تجديد بـ 3 إعادات محاولة يدوية، مع فترة تهدئة بينها: تنطبق الحدود في كل من وضع الاختبار والوضع المباشر. عند رفض إعادة المحاولة لهذا السبب، يعيد API القيمة MANUAL_RETRY_LIMIT_REACHED ‏(HTTP 429). ولا يحتوي نص الخطأ إلا على code وmessage. لمعرفة موعد فتح إعادة المحاولة التالية، تحقق من حالة إعادة المحاولة واقرأ retry_available_at. وتكون null بعد استنفاد الإعادات الثلاث جميعها. لا تُحتسب الإعادات التلقائية ضمن هذا الحد، ولا تُحتسب الإعادات اليدوية ضمن محاولات الجدول التلقائي البالغ عددها 8.

الإعادات اليدوية مقابل التلقائية

إعادة المحاولة عبر API

تحقق من الأهلية أولًا، ثم أرسل إعادة المحاولة. يتطلب كلا النقطتين معرّف دفعة فاشلة.

التحقق مما إذا كان يمكن إعادة محاولة الدفع

لا يفشل GET /payments/{payment_id}/retry أبدًا عند التعامل مع دفعة غير مؤهلة. بل يعيد can_retry: false مع رمز reason، حتى تتمكن لوحة التحكم أو أدوات الدعم لديك من عرض الحالة نفسها التي تعرضها لوحة تحكم Dodo Payments. ويتطلب ذلك دور Viewer.
Response

إرسال إعادة محاولة يدوية

ينشئ POST /payments/{payment_id}/retry دفعة جديدة ويخصم المبلغ من طريقة الدفع المحفوظة. ويتطلب ذلك دور Editor.
Response

استجابات الخطأ

يُوضَّح كل رمز في مرجع رموز الخطأ.

Webhooks

تنشئ إعادة المحاولة اليدوية دفعة عادية، لذلك تُطلق webhooks نفسها كما هو الحال مع أي محاولة تجديد: في كائن الدفع ضمن هذه الأحداث، تكون retry_attempt بقيمة 1 أو أعلى، وتُعيّن subscription_id، تمامًا كما في الإعادة التلقائية. احتفظ بقيمة payment_id من استجابة إعادة المحاولة إذا احتجت إلى تمييز المحاولة اليدوية عن المجدولة.

Payment Webhook Payloads

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

ذات صلة

Subscription Payment Retries

الجدول الزمني التلقائي المتدرج الذي يعمل بالتوازي مع الإعادات اليدوية.

Subscription Dunning

أرسل بريدًا إلكترونيًا إلى العميل لتحديث طريقة الدفع بعد الرفض النهائي.

Handle Payment Failures

اقرأ رموز الرفض وحدد متى تستحق إعادة المحاولة.

Error Codes

كل رمز MANUAL_RETRY_*، والمشغّل الخاص به، ورسالته.
آخر تعديل في ٢٥ سبتمبر ٢٠٢٦