المتطلبات الأساسية
لدمج واجهة برمجة تطبيقات مدفوعات دودو، ستحتاج إلى:- حساب تاجر مدفوعات دودو
- بيانات اعتماد واجهة برمجة التطبيقات (مفتاح 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- يتم تعليق الاشتراك بسبب فشل دفع التجديد أو فشل رسوم تغيير الخطة.- عندما يتم تعليق اشتراك، لن يتجدد تلقائيًا حتى يتم تحديث وسيلة الدفع.
أفضل ممارسة: لتبسيط التنفيذ، نوصي بالتركيز بشكل أساسي على تتبع أحداث الاشتراك لإدارة دورة حياة الاشتراك.
التعامل مع الاشتراك المعلق
عندما يدخل الاشتراك في حالةon_hold، تحتاج إلى تحديث وسيلة الدفع لإعادة تنشيطه. توضح هذه القسم متى يتم تعليق الاشتراكات وكيفية التعامل معها.
متى يتم تعليق الاشتراكات
يتم تعليق الاشتراك عندما:- يفشل دفع التجديد: تفشل رسوم التجديد التلقائية بسبب عدم كفاية الأموال، أو انتهاء صلاحية البطاقة، أو رفض البنك
- يفشل رسوم تغيير الخطة: تفشل الرسوم الفورية أثناء ترقية/تخفيض الخطة
- يفشل تفويض طريقة الدفع: لا يمكن تفويض طريقة الدفع للرسوم المتكررة
إعادة تفعيل الاشتراكات من حالة المعلق
لإعادة تفعيل الاشتراك من حالةon_hold، استخدم واجهة برمجة تطبيقات تحديث وسيلة الدفع. هذا يقوم تلقائيًا بـ:
- إنشاء رسم للمستحقات المتبقية
- توليد فاتورة للرسم
- معالجة الدفع باستخدام وسيلة الدفع الجديدة
- إعادة تفعيل الاشتراك إلى حالة
activeعند نجاح الدفع
Handle subscription.on_hold webhook
عندما تتلقى webhook
subscription.on_hold، حدّث حالة تطبيقك وأخبر العميل: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 وحدد المبلغ الذي سيتم فرضه على العميل لتلك المعاملة.
للحصول على دليل كامل خطوة بخطوة — بما في ذلك أمثلة الطلب/الاستجابة، سياسات إعادة المحاولة الآمنة، ومعالجة الويب هوك — راجع دليل الاشتراكات حسب الطلب.