المتطلبات الأساسية
لدمج واجهة برمجة تطبيقات مدفوعات دودو، ستحتاج إلى:- حساب تاجر مدفوعات دودو
- بيانات اعتماد واجهة برمجة التطبيقات (مفتاح API ومفتاح سرية webhook) من لوحة التحكم
تكامل واجهة برمجة التطبيقات
جلسات الدفع
استخدم جلسات الدفع Checkout Sessions لبيع منتجات الاشتراك من خلال صفحة دفع مستضافة وآمنة. مرّر منتج الاشتراك الخاص بك فيproduct_cart وأعد توجيه العملاء إلى checkout_url.
- Node.js SDK
- Python SDK
- REST API
استجابة واجهة برمجة التطبيقات
فيما يلي مثال على الاستجابة:checkout_url.
Webhooks
عند دمج الاشتراكات، ستستلم webhooks لمتابعة دورة حياة الاشتراك. تساعدك هذه webhooks في إدارة حالات الاشتراك وسيناريوهات الدفع بشكل فعال. لإعداد نقطة نهاية webhook الخاصة بك، يُرجى اتباع دليل التكامل التفصيلي.أنواع أحداث الاشتراك
تتبع الأحداث التالية في webhook تغييرات حالة الاشتراك:subscription.active- تم تنشيط الاشتراك بنجاح.subscription.updated- تم تحديث كائن الاشتراك (يتم تشغيله عند تغيير أي حقل).subscription.on_hold- تم تعليق الاشتراك بسبب فشل التجديد.subscription.failed- فشل إنشاء الاشتراك أثناء إنشاء التفويض.subscription.renewed- تم تجديد الاشتراك لفترة الفوترة التالية.
سيناريوهات الدفع
تدفق الدفع الناجح عند نجاح الدفع، ستستلم webhooks التالية:subscription.active- يُشير إلى تنشيط الاشتراكpayment.succeeded- يُؤكد الدفع الأولي:- للفواتير الفورية (0 أيام تجربة): يُتوقع الاستلام خلال 2-10 دقائق
- لأيام التجربة: بمجرد انتهائها
subscription.renewed- يُشير إلى خصم الدفع وتجديد الدورة القادمة. (بشكل أساسي، كلما تم خصم الدفع للمنتجات المشتركة، ستحصل علىsubscription.renewedwebhook معpayment.succeeded)
- فشل الاشتراك
subscription.failed- فشل إنشاء الاشتراك بسبب فشل في إنشاء التفويض.payment.failed- يُشير إلى فشل الدفع.
- تعليق الاشتراك
subscription.on_hold- تم تعليق الاشتراك بسبب فشل تجديد الدفع أو فشل رسوم تغيير الخطة.- عند تعليق الاشتراك، لن يتم تجديده تلقائيًا حتى يتم تحديث طريقة الدفع.
أفضل ممارسة: لتبسيط التنفيذ، نوصي بتتبع أحداث الاشتراك بشكل أساسي لإدارة دورة حياة الاشتراك.
subscription.failed مقابل subscription.on_hold
هذان الحدثان سهلان في الخلط بينهما، لكنهما يتطلبان معالجة مختلفة تمامًا:
التعامل مع تعليق الاشتراك
عندما يدخل الاشتراك في حالةon_hold، تحتاج إلى تحديث طريقة الدفع لإعادة تنشيطه. تشرح هذه القسم متى يتم تعليق الاشتراكات وكيفية التعامل معها.
متى يتم تعليق الاشتراكات
يتم وضع الاشتراك على تعليق عندما:- فشل دفع التجديد: يفشل الشحن التلقائي للتجديد بسبب نقص الأموال أو انتهاء صلاحية البطاقة أو رفض من البنك
- فشل رسوم تغيير الخطة: فشل الشحن الفوري خلال الترقية/الخفض
- فشل تفويض طريقة الدفع: لا يمكن تفويض طريقة الدفع للرسوم المتكررة
إعادة تنشيط الاشتراكات من حالة التعليق
لإعادة تنشيط اشتراك من حالةon_hold، استخدم API تحديث طريقة الدفع. يتم تلقائيًا:
- إنشاء شحن للديون المتبقية
- إنشاء فاتورة للشحن
- معالجة الدفع باستخدام طريقة الدفع الجديدة
- إعادة تنشيط الاشتراك إلى حالة
activeعند الدفع الناجح
1
Handle subscription.on_hold webhook
عند تلقي
subscription.on_hold webhook، قم بتحديث حالة التطبيق الخاصة بك وإخطار العميل:2
Update payment method
عندما يكون العميل جاهزًا لتحديث طريقة الدفع الخاصة به، قم باستدعاء API تحديث طريقة الدفع:
يمكنك أيضًا استخدام معرّف طريقة الدفع الحالية إذا كان لدى العميل طرق دفع محفوطة:
3
Monitor webhook events
بعد تحديث طريقة الدفع، راقب هذه الأحداث في webhook:
payment.succeeded- النجاح في شحن الديون المتبقيةsubscription.active- تم إعادة تنشيط الاشتراك
نموذج حمولة حدث الاشتراك
تغيير خطط الاشتراك
يمكنك ترقية أو تخفيض خطة الاشتراك باستخدام نقطة نهاية API لتغيير الخطة. يتيح لك ذلك تعديل منتج الاشتراك والكمية والتعامل مع التسعير المتناسب.Change Plan API Reference
لمزيد من المعلومات التفصيلية حول تغيير خطط الاشتراك، يُرجى الرجوع إلى وثائق API لتغيير الخطة.
خيارات التسعير المتناسب
عند تغيير خطط الاشتراك، لديك خياران للتعامل مع الشحن الفوري:1. prorated_immediately
- يحسب المبلغ المتناسب بناءً على الوقت المتبقي في دورة الفوترة الحالية
- يخصم من العميل فقط الفرق بين الخطة القديمة والجديدة
- خلال فترة التجربة، سيتم نقل المستخدم مباشرة إلى الخطة الجديدة، مع تحصيل الرسوم من العميل في الحال
2. full_immediately
- يخصم من العميل المبلغ الكامل للاشتراك للخطة الجديدة
- يتجاهل أي وقت متبقي أو ائتمانات من الخطة السابقة
- مفيد عند الرغبة في إعادة ضبط دورة الفوترة أو تحصيل المبلغ الكامل بغض النظر عن التسعير المتناسب
3. difference_immediately
- عند الترقية، يتم خصم الفرق بين مبلغي الخطة على الفور من العميل.
- على سبيل المثال، إذا كانت الخطة الحالية 30 دولارًا وترقي العميل إلى 80 دولارًا، يتم خصم 50 دولارًا فورًا.
- عند التخفيض، يتم إضافة المبلغ غير المستخدم من الخطة الحالية كائتمان داخلي ويتم تطبيقه تلقائيًا على تجديدات الاشتراك المستقبلية.
- على سبيل المثال، إذا كانت الخطة الحالية 50 دولارًا وانتقل العميل إلى خطة 20 دولارًا، فإن المبلغ المتبقي 30 دولارًا يُضاف كائتمان ويُستخدم في دورة الفوترة التالية.
السلوك
- عند استدعاء هذا API، يقوم Dodo Payments فورًا ببدء شحن استنادًا إلى خيار التسعير المتناسب المحدد
- إذا كان التغيير في الخطة خفضًا واستخدمت
prorated_immediately، سيتم حساب الإئتمانات تلقائيًا وإضافتها إلى رصيد ائتمان الاشتراك. هذه الإئتمانات خاصة بذلك الاشتراك ولن تستخدم إلا لتعويض عمليات الدفع المتكررة المستقبلية لنفس الاشتراك - خيار
full_immediatelyيتجاوز حساب الإئتمانات ويخصم المبلغ الكامل للخطة الجديدة
معالجة الشحن
- عادة ما يكتمل الشحن الفوري الذي يبدأ عند تغيير الخطة في أقل من دقيقتين
- إذا فشل هذا الشحن الفوري لأي سبب من الأسباب، يتم وضع الاشتراك تلقائيًا على تعليق حتى يتم حل المشكلة
الاشتراكات حسب الطلب
تتيح لك الاشتراكات حسب الطلب تحصيل رسوم العملاء بمرونة، وليس فقط وفق جدول ثابت. تتوفر هذه الميزة لجميع الحسابات.
on_demand في نص الطلب الخاص بك. يتيح لك هذا تفويض طريقة دفع بدون شحن فوري أو تحديد سعر بداية مخصص.
لتحصيل رسوم اشتراك حسب الطلب:
لإجراء شحنات لاحقة، استخدم نقطة النهاية POST /subscriptions//charge وحدد المبلغ المراد خصمه من العميل لتلك المعاملة.
للحصول على دليل كامل خطوة بخطوة - بما في ذلك أمثلة الطلب/الاستجابة وسياسات المحاولة المأمونة ومعالجة webhook - راجع دليل الاشتراكات حسب الطلب.
مرجع API ذو صلة
Create Subscription
مرجع API لإنشاء منتجات الاشتراك وإدارة دورة حياة الاشتراك
Change Subscription Plan
مرجع API لترقية أو تخفيض أو تغيير خطط الاشتراك مع خيارات التسعير المتناسب
Update Payment Method
مرجع API لتحديث طرق الدفع وإعادة تنشيط الاشتراكات المعلقة
Patch Subscription
مرجع API لتحديث تفاصيل الاشتراك والتكوين