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