الانتقال إلى المحتوى الرئيسي
توثيق الواجهة البرمجية

9 نقاط نهاية

الاشتراكات

خصم متكرر على وسيلة دفع محفوظة، باستحقاقاته وتوقّفاته ومحاولات اقتطاعه.

عناوين النقاط وأوصافها تأتي من عقد OpenAPI، بالإنجليزية — فلا يمكن أن تحيد عن الواجهة.

بكلمات بسيطة

استخلاص من الزبون نفسه على فترات منتظمة، تلقائيًا.

متى تستعملونها

لأي إيراد متكرر: اشتراك شهري، أو باقة، أو خدمة مقسّطة.

كيف تدمجونها

  1. 1أنشئوا الاشتراك لزبون قائم — ببريد إلكتروني صالح: إشعار ما قبل الخصم الإلزامي يُرسل دائمًا بالبريد —، بدوريته ومبلغه.
  2. 2تتم الدفعة الأولى بحضور الزبون، بموافقته الصريحة على حفظ وسيلة دفعه.
  3. 3عيّنوا وسيلة الدفع المراد خصمها، أو اتركوا الوسيلة الافتراضية للزبون.
  4. 4علّقوا أو استأنفوا أو ألغوا بحسب حياة العقد؛ واطّلعوا على الاستحقاقات لفوترتكم.
  5. 5وعند تعثر خصم، يتحول الاشتراك إلى PAST_DUE: حتى 4 محاولات تلقائية، ورابط دفع احتياطي يُرسل للزبون، ثم الإلغاء — تابعوا subscription.payment_failed وsubscription.canceled.
  6. 6في السندبوكس، تفرض نقطة مخصّصة الاستحقاق التالي لتختبروا سنة اشتراك في دقيقة.
PUT

اختيار وسيلة الدفع لاشتراك

يحوّل اشتراكاً بالخصم التلقائي إلى إحدى وسائل الدفع المحفوظة لدى زبونه. يُقبل فقط UUID المحلي لوسيلة الدفع؛ ولا يتم أبداً كشف رموز المزوّد ولا CVV.

المخطط · SelectSubscriptionPaymentMethodRequest

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوب
paymentMethodIdstring (uuid)bodyمطلوبUUID المحلي لوسيلة الدفع، الخاص بالزبون.
POST200

فرض الدفع التلقائي التالي (السندبوكس فقط)

أداة اختبار متاحة فقط مع مفتاح API من نوع SANDBOX. تنشئ الخصم الخاص بالفترة المستحقة حاليًا أو تعيد استخدامه، وتضع بريد ما قبل الخصم في قائمة الانتظار، ثم تنفّذ فورًا الدفع بالرمز المحفوظ باستخدام CVV المفكوك تشفيره داخليًا مع تعطيل 3DS. لا يظهر CVV أبدًا في الطلب ولا في الاستجابة. يجب أن يكون الاشتراك في الحالة INCOMPLETE أو ACTIVE أو PAST_DUE القابلة لإعادة المحاولة، وأن يكون autoPay مفعّلًا، وأن تكون أول جلسة دفع keepAlive + 3DS قد ربطت بالفعل وسيلة دفع محفوظة. عند النجاح، يتقدّم nextRunDate. عند الفشل، لا يتقدّم: يبقى الفشل الأولي INCOMPLETE، ويتحوّل فشل التجديد إلى PAST_DUE. تتضمّن الاستجابة فئة ورمز فشل آمنين، وعدد المحاولات، وتوقيت إعادة المحاولة أو الإلغاء، وقيمة fallbackPayUrl. تتطلّب حالات الرفض النهائي، مثل البطاقة المنتهية الصلاحية، وسيلة دفع بديلة أو دفعًا يدويًا. Idempotency-Key إلزامي؛ وتؤدي إعادة إرساله إلى إرجاع العملية نفسها دون خصم جديد.

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوبمرجع الاشتراك.
Idempotency-Keystringheaderمطلوبمفتاح فريد إلزامي. لا تُعيدوا استخدامه إلا لإعادة إرسال طلب الاختبار هذا بعينه.
POST

استئناف اشتراك

يستأنف دورة فوترة اشتراك موقوف مؤقتًا.

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوب
POST

إيقاف اشتراك مؤقتاً

يوقف الخصومات المستقبلية مؤقتًا دون إلغاء. يمكنكم الاستئناف لاحقًا عبر /resume.

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوب
POST

إلغاء اشتراك

يُنهي الاشتراك نهائيًا. لا تُنشأ أي خصومات أخرى.

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوب
GET

عرض الاشتراكات

يُعيد اشتراكات المستدعي لبيئة المفتاح، على شكل Page مقسّمة إلى صفحات.

الحقلالنوعالموضعمطلوبالوصف
originenumqueryاختياريالتصفية حسب مصدر الإنشاء (API أو DASHBOARD).القيم APIDASHBOARD
pageablePageablequeryمطلوب
POST200

إنشاء اشتراك

يبدأ اشتراكًا متكررًا لزبون موجود. الدفع التلقائي مفعّل افتراضيًا (true)؛ وتبقى الحالة المُعادة INCOMPLETE حتى تنجح فترة الفوترة الأولى. تستخدم صفحة الدفع المستضافة الأولى ‎3DS، وتحفظ رمزًا (token) من المزوّد، وتُخفي رقم البطاقة (PAN)، وتخزّن عناصر مصادقة قابلة لإعادة الاستخدام في الخزنة المقيّدة الخاضعة للتدقيق. لا يُعاد الرمز ولا CVV. يُعلَن عن الخصومات اللاحقة عبر البريد الإلكتروني وتُحصَّل عند billingTime بتوقيت Africa/Casablanca. إذا كان تاريخ البدء هو اليوم أو قبله، يُفتح القسط الأول فورًا ويُعاد في currentCharge. قدّموا externalId اختياريًا خاصًا بكم (فريدًا لكل تاجر) لجعل الإنشاء غير قابل للتكرار (idempotent): يؤدي externalId مكرر إلى إعادة الاشتراك الموجود مع 200 OK.

المخطط · CreateSubscriptionRequest

الحقلالنوعالموضعمطلوبالوصف
clientIdstring (uuid)bodyمطلوبUUID الخاص بالزبون المراد فوترته (أنشئوه أولًا عبر /v1/clients).
amountnumberbodyمطلوبالمبلغ المراد خصمه في كل فترة، بالوحدات الرئيسية للدرهم.
descriptionstringbodyمطلوبالوصف الظاهر على كل خصم يتم إنشاؤه.
frequencyenumbodyمطلوبوتيرة الفوترة.القيم DAILYWEEKLYMONTHLYYEARLY
startDatestring (date)bodyمطلوبتاريخ فترة الفوترة الأولى (YYYY-MM-DD).
endDatestring (date)bodyاختياريتاريخ انتهاء اختياري؛ بلا نهاية محددة عند إغفاله.
channelsarray of enumbodyمطلوبالقنوات المستخدمة لإشعار الزبون بكل خصم.
externalIdstringbodyاختياريمعرّف الاشتراك الخاص بكم، فريد لكل تاجر ولكل بيئة. إنشاء اشتراك بـ externalId موجود مسبقاً يُرجع الاشتراك الموجود. يُعاد إرساله في ExternalId ضمن كل ويب هوك خاص بدفع الاشتراك لأغراض المطابقة.
metadataobjectbodyاختياريسمات مطابقة اختيارية خاصة بالتاجر (بحد أقصى 4 كيلوبايت بعد التسلسل)، تُعاد كما هي ضمن metadata في كل ويب هوك لدفع الاشتراك. استخدموا معرّفات مبهمة مثل customerId أو contractId؛ ولا تُدرجوا بيانات البطاقة أو CVV أو بيانات الاعتماد أو بيانات شخصية غير ضرورية.
autoPaybooleanbodyاختيارييحفظ وسيلة الدفع بعد أول عملية دفع ‎3DS ويُحصّل الفترات اللاحقة تلقائيًا. القيمة الافتراضية true.
billingTimeLocalTimebodyاختياريوقت الخصم المتكرر بتوقيت Africa/Casablanca.
billingTime.hourinteger (int32)bodyاختياري
billingTime.minuteinteger (int32)bodyاختياري
billingTime.secondinteger (int32)bodyاختياري
billingTime.nanointeger (int32)bodyاختياري
reminderDaysBeforeinteger (int32)bodyاختياريعدد الأيام التي تسبق الخصم التلقائي لإرسال بريد إلكتروني إلى الزبون (0-30).
paymentMethodIdstring (uuid)bodyاختياريUUID اختياري لوسيلة دفع تخص الزبون. عند إغفاله، يُعاد استخدام وسيلة الدفع الافتراضية للزبون إن وُجدت؛ وإلا تلتقط جلسة الدفع الأولى وسيلة جديدة.
GET

عرض أقساط اشتراك

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

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوب
GET

استرجاع اشتراك

يجلب اشتراكًا مع بيانات العرض الآمنة لوسيلة الدفع المحفوظة، والقسط المفتوح، وحالة استرجاع الفوترة. في حالة إعداد INCOMPLETE فاشل أو تجديد PAST_DUE، يتضمن billingRecovery سببًا موحّدًا، والإجراء المطلوب من الزبون، وعدد المحاولات، وموعد إعادة المحاولة التالية، والمهلة النهائية للإلغاء؛ ولا يُعاد أبدًا JSON خطأ المزوّد ولا بيانات البطاقة الحساسة.

الحقلالنوعالموضعمطلوبالوصف
referencestringpathمطلوبمرجع الاشتراك.

تحدّثوا إلى مختص دمج

سؤال حول الدمج؟

يجيب فريقنا التقني فرق الإدماج، من أول استدعاء في السندبوكس حتى الانتقال إلى الإنتاج.