الانتقال إلى المحتوى الرئيسي

المتطلبات الأساسية

لدمج واجهة برمجة تطبيقات مدفوعات دودو، ستحتاج إلى:
  • حساب تاجر مدفوعات دودو
  • بيانات اعتماد واجهة برمجة التطبيقات (مفتاح API ومفتاح سرية webhook) من لوحة التحكم
للحصول على دليل أكثر تفصيلاً حول المتطلبات الأساسية، تحقق من هذا القسم.

تكامل واجهة برمجة التطبيقات

جلسات الدفع

استخدم جلسات الدفع Checkout Sessions لبيع منتجات الاشتراك من خلال صفحة دفع مستضافة وآمنة. مرّر منتج الاشتراك الخاص بك في product_cart وأعد توجيه العملاء إلى checkout_url.
Mixed Checkout: يمكنك دمج منتجات الاشتراك مع منتجات لمرة واحدة في نفس جلسة الدفع. يتيح ذلك حالات استخدام مثل رسوم الإعداد مع الاشتراكات، حزم الأجهزة مع برامج الخدمة السحابية، والمزيد. راجع دليل جلسات الدفع للحصول على أمثلة.

استجابة واجهة برمجة التطبيقات

فيما يلي مثال على الاستجابة:
إعادة توجيه العميل إلى checkout_url.

Webhooks

عند دمج الاشتراكات، ستستلم webhooks لمتابعة دورة حياة الاشتراك. تساعدك هذه webhooks في إدارة حالات الاشتراك وسيناريوهات الدفع بشكل فعال. لإعداد نقطة نهاية webhook الخاصة بك، يُرجى اتباع دليل التكامل التفصيلي.

أنواع أحداث الاشتراك

تتبع الأحداث التالية في webhook تغييرات حالة الاشتراك:
  1. subscription.active - تم تنشيط الاشتراك بنجاح.
  2. subscription.updated - تم تحديث كائن الاشتراك (يتم تشغيله عند تغيير أي حقل).
  3. subscription.on_hold - تم تعليق الاشتراك بسبب فشل التجديد.
  4. subscription.failed - فشل إنشاء الاشتراك أثناء إنشاء التفويض.
  5. subscription.renewed - تم تجديد الاشتراك لفترة الفوترة التالية.
لإدارة دورة حياة الاشتراكات بشكل موثوق، نوصي بتتبع هذه الأحداث الخاصة بالاشتراك.
استخدم subscription.updated للحصول على إشعارات في الوقت الفعلي حول أي تغييرات في الاشتراك، مما يبقي حالة التطبيق متزامنة دون الاستطلاع من API.

سيناريوهات الدفع

تدفق الدفع الناجح عند نجاح الدفع، ستستلم webhooks التالية:
  1. subscription.active - يُشير إلى تنشيط الاشتراك
  2. payment.succeeded - يُؤكد الدفع الأولي:
    • للفواتير الفورية (0 أيام تجربة): يُتوقع الاستلام خلال 2-10 دقائق
    • لأيام التجربة: بمجرد انتهائها
  3. subscription.renewed - يُشير إلى خصم الدفع وتجديد الدورة القادمة. (بشكل أساسي، كلما تم خصم الدفع للمنتجات المشتركة، ستحصل على subscription.renewed webhook مع payment.succeeded)
سيناريوهات فشل الدفع
  1. فشل الاشتراك
  • subscription.failed - فشل إنشاء الاشتراك بسبب فشل في إنشاء التفويض.
  • payment.failed - يُشير إلى فشل الدفع.
  1. تعليق الاشتراك
  • subscription.on_hold - تم تعليق الاشتراك بسبب فشل تجديد الدفع أو فشل رسوم تغيير الخطة.
  • عند تعليق الاشتراك، لن يتم تجديده تلقائيًا حتى يتم تحديث طريقة الدفع.
أفضل ممارسة: لتبسيط التنفيذ، نوصي بتتبع أحداث الاشتراك بشكل أساسي لإدارة دورة حياة الاشتراك.
للحصول على إرشادات كاملة لقراءة error_code/error_message، وتحديد متى يتم إعادة المحاولة، وتوضيح الفشل للعملاء، انظر تعامل مع فشل الدفع.

subscription.failed مقابل subscription.on_hold

هذان الحدثان سهلان في الخلط بينهما، لكنهما يتطلبان معالجة مختلفة تمامًا:
subscription.failed نهائي — لا يمكن إعادة تنشيط الاشتراك. يجب على العميل إنشاء اشتراك جديد. لا تمنح الامتيازات عند حدوث هذا الحدث.

التعامل مع تعليق الاشتراك

عندما يدخل الاشتراك في حالة on_hold، تحتاج إلى تحديث طريقة الدفع لإعادة تنشيطه. تشرح هذه القسم متى يتم تعليق الاشتراكات وكيفية التعامل معها.

متى يتم تعليق الاشتراكات

يتم وضع الاشتراك على تعليق عندما:
  • فشل دفع التجديد: يفشل الشحن التلقائي للتجديد بسبب نقص الأموال أو انتهاء صلاحية البطاقة أو رفض من البنك
  • فشل رسوم تغيير الخطة: فشل الشحن الفوري خلال الترقية/الخفض
  • فشل تفويض طريقة الدفع: لا يمكن تفويض طريقة الدفع للرسوم المتكررة
الاشتراكات في حالة on_hold لن يتم تجديدها تلقائيًا. يجب تحديث طريقة الدفع لإعادة تنشيط الاشتراك.

إعادة تنشيط الاشتراكات من حالة التعليق

لإعادة تنشيط اشتراك من حالة on_hold، استخدم API تحديث طريقة الدفع. يتم تلقائيًا:
  1. إنشاء شحن للديون المتبقية
  2. إنشاء فاتورة للشحن
  3. معالجة الدفع باستخدام طريقة الدفع الجديدة
  4. إعادة تنشيط الاشتراك إلى حالة active عند الدفع الناجح
1

Handle subscription.on_hold webhook

عند تلقي subscription.on_hold webhook، قم بتحديث حالة التطبيق الخاصة بك وإخطار العميل:
2

Update payment method

عندما يكون العميل جاهزًا لتحديث طريقة الدفع الخاصة به، قم باستدعاء API تحديث طريقة الدفع:
يمكنك أيضًا استخدام معرّف طريقة الدفع الحالية إذا كان لدى العميل طرق دفع محفوطة:
3

Monitor webhook events

بعد تحديث طريقة الدفع، راقب هذه الأحداث في webhook:
  1. payment.succeeded - النجاح في شحن الديون المتبقية
  2. 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 يتجاوز حساب الإئتمانات ويخصم المبلغ الكامل للخطة الجديدة
اختر خيار التسعير المتناسب بعناية: استخدم prorated_immediately للتسعير العادل الذي يُحسب الوقت غير المستخدم، أو full_immediately عندما تريد تحصيل المبلغ الكامل للخطة الجديدة بغض النظر عن دورة الفوترة الحالية.

معالجة الشحن

  • عادة ما يكتمل الشحن الفوري الذي يبدأ عند تغيير الخطة في أقل من دقيقتين
  • إذا فشل هذا الشحن الفوري لأي سبب من الأسباب، يتم وضع الاشتراك تلقائيًا على تعليق حتى يتم حل المشكلة

الاشتراكات حسب الطلب

تتيح لك الاشتراكات حسب الطلب تحصيل رسوم العملاء بمرونة، وليس فقط وفق جدول ثابت. تتوفر هذه الميزة لجميع الحسابات.
لإنشاء اشتراك حسب الطلب: لإنشاء اشتراك حسب الطلب، استخدم (POST /subscriptions)[/api-reference/subscriptions/post-subscriptions] لنقطة نهاية API وقم بتضمين حقل on_demand في نص الطلب الخاص بك. يتيح لك هذا تفويض طريقة دفع بدون شحن فوري أو تحديد سعر بداية مخصص. لتحصيل رسوم اشتراك حسب الطلب: لإجراء شحنات لاحقة، استخدم نقطة النهاية POST /subscriptions//charge وحدد المبلغ المراد خصمه من العميل لتلك المعاملة.
للحصول على دليل كامل خطوة بخطوة - بما في ذلك أمثلة الطلب/الاستجابة وسياسات المحاولة المأمونة ومعالجة webhook - راجع دليل الاشتراكات حسب الطلب.

مرجع API ذو صلة

Create Subscription

مرجع API لإنشاء منتجات الاشتراك وإدارة دورة حياة الاشتراك

Change Subscription Plan

مرجع API لترقية أو تخفيض أو تغيير خطط الاشتراك مع خيارات التسعير المتناسب

Update Payment Method

مرجع API لتحديث طرق الدفع وإعادة تنشيط الاشتراكات المعلقة

Patch Subscription

مرجع API لتحديث تفاصيل الاشتراك والتكوين
آخر تعديل في ٩ يوليو ٢٠٢٦