استحقاق اشتراك غير مؤدّى: التذكيرات والمهلة وقراراتكم
استحقاق اشتراك غير مؤدّى: التذكير اليومي بالبريد الإلكتروني، ومهلة 14 يومًا، والإلغاء التلقائي، وقراراتكم، ورسائل جاهزة لزبنائكم، والأثر المحاسبي.
يمرّ الاستحقاق غير المؤدّى في اشتراك لدى ChariPay بمسار بسيط: في تاريخ الاستحقاق، تلقّى زبونكم بالبريد الإلكتروني رابط دفع للفترة؛ وما دام لم يؤدّه، يتلقى كل يوم تذكيرًا بالرابط نفسه، ولا تُفتح أي فترة جديدة. ويبقى الرابط قابلًا للأداء 14 يومًا بعد تاريخ الاستحقاق؛ وبعد انقضاء هذه المهلة دون أداء، يُلغى الاشتراك تلقائيًا ويتلقى خادمكم الويب هوك subscription.canceled. أما ما يعود إليكم فهو: تقرير مصير الخدمة، ومتابعة الزبون عبر قناتكم الخاصة عند الحاجة، والحفاظ على أثر محاسبي سليم. يعرض هذا الدليل كل مرحلة، ثم الخيارات المتاحة لكم.
ما يحدث حين لا يُؤدّى استحقاق، خطوة بخطوة
ChariPay منصة دفع مغربية، مزوّد خدمات دفع (PSP) تشغّله Chari Money، مؤسسة أداء مرخَّصة من بنك المغرب. وتعمل اشتراكاتها بروابط الدفع: عند كل استحقاق، تُنشئ ChariPay رابط دفع لاستعمال واحد للفترة وترسله بالبريد الإلكتروني إلى زبونكم، فيؤدّيه بالبطاقة في صفحة الدفع المستضافة مع 3-D Secure. والإعداد الكامل موصوف في دمج الاشتراكات عبر API. وحين لا يُؤدّى هذا الرابط، إليكم ما يحدث بالترتيب:
- 1يُرسَل رابط الاستحقاق بالبريد الإلكتروني. في تاريخ الاستحقاق، يتلقى الزبون بريدًا إلكترونيًا بعنوان «Nouvelle échéance» (استحقاق جديد) متبوعًا بوصف الاشتراك، وفيه رابط دفع الفترة.
- 2يُرسَل تذكير كل يوم. ما دام الاستحقاق غير مؤدّى، يتلقى الزبون كل يوم بريدًا إلكترونيًا بعنوان «Rappel de paiement» (تذكير بالأداء)، بالرابط نفسه.
- 3لا تُفتح أي فترة جديدة. ما دام الاستحقاق غير مؤدّى، لا يُنشأ أي رابط جديد: فلا تتراكم على الزبون عدة استحقاقات متأخرة.
- 4المحاولة المرفوضة لا تُغلق الرابط. إن حاول الزبون الأداء ورُفضت بطاقته، يتلقى خادمكم
subscription.payment_failed؛ ويبقى الرابط قابلًا للأداء، ويمكن للزبون إعادة المحاولة. - 5الأداء يسوّي الاستحقاق. بمجرد أن يؤدي الزبون، يتلقى خادمكم
subscription.payment_succeeded، ويواصل الاشتراك مساره. - 6دون أداء داخل المهلة، يُلغى الاشتراك. يبقى رابط الاستحقاق قابلًا للأداء 14 يومًا بعد تاريخ الاستحقاق — أو بعد إرساله إن أُرسل لاحقًا. وإن انتهت صلاحيته دون أداء، ينتقل الاشتراك إلى حالة «ملغى» (
CANCELED) ويتلقى خادمكمsubscription.canceled.
لا يتطلب هذا المسار أي تدخّل منكم. لكنه يترك بين أيديكم قرارات — بشأن الخدمة، والمتابعة، والاشتراك نفسه — تفصّلها الأقسام التالية.
الجدول الزمني لاستحقاق غير مؤدّى
تُحسب المهلة ابتداءً من تاريخ الاستحقاق، على توقيت Africa/Casablanca مثل الاستحقاقات نفسها.
| الموعد | ما يتلقاه الزبون | ما يحدث في الاشتراك |
|---|---|---|
| تاريخ الاستحقاق | بريد «Nouvelle échéance» برابط الفترة | يُفتح الرابط؛ ولا تتغير حالة الاشتراك |
| كل يوم موالٍ، ما دام الاستحقاق غير مؤدّى | بريد «Rappel de paiement» بالرابط نفسه | لا تُفتح أي فترة جديدة |
| أداء ناجح، في أي وقت داخل المهلة | لا تذكير بعدُ لهذا الاستحقاق | استحقاق مؤدّى؛ subscription.payment_succeeded |
| بعد 14 يومًا من الاستحقاق، دون أداء | — | اشتراك ملغى؛ subscription.canceled |
مثال: لاستحقاق يحلّ يوم 5 من الشهر، يتلقى الزبون الرابط يوم 5، ثم تذكيرًا كل يوم ما دام لم يؤدِّ؛ ويبقى الرابط قابلًا للأداء إلى يوم 19؛ وإن ظل غير مؤدّى عند انتهاء صلاحيته، يُلغى الاشتراك. ويُعلَن الاستحقاق المؤدّى عبر الحدث subscription.payment_succeeded. دوّنوا هذا الجدول في مساطركم: فهو الذي يضبط إيقاع رسائلكم الخاصة إلى الزبون.
وقبل أن يتعلق الأمر بزبون حقيقي، اطّلعوا في بوابة التاجر على شكل الاشتراك واستحقاقاته وأحداث الويب هوك الخاصة به. يُفتح وضع الاختبار بمجرد تفعيل حسابكم، دون موافقة تنتظرونها: ابدؤوا في وضع الاختبار — ثلاثة حقول (الاسم، والبريد الإلكتروني المهني، والمؤسسة)، ورابط تفعيل يصلكم بالبريد لاختيار كلمة المرور، ثم بوابة التاجر حيث تنشئون بأنفسكم مفتاح الاختبار بعد إعادة مصادقة؛ ولا يُعرض المفتاح كاملًا إلا مرة واحدة. ادفعوا ببطاقة الاختبار 4918 9141 0719 5005، CVV 123، وأي تاريخ انتهاء مستقبلي، ورمز 3-D Secure 555: هذه البطاقة هي الوحيدة المقبولة، ولا يتحرك أي مال حقيقي. ويجري التحقق من مؤسستكم (KYB) بالتوازي ولا يشترطه إلا الانتقال إلى الإنتاج. وفي وضع الاختبار، أنشئوا اشتراكًا تاريخ بدايته اليوم: يُنشأ الرابط الأول فورًا ويُعاد في currentCharge. أدّوه ببطاقة الاختبار — فيصبح الاشتراك نشطًا ويصل subscription.payment_succeeded —، ثم، بدورية يومية (DAILY)، اتركوا استحقاق الغد دون أداء وتابعوا حالته عبر GET /v1/subscriptions/{reference}/charges.
ما يتلقاه زبونكم: رابط الاستحقاق وتذكيراته
كل بريد — بريد الاستحقاق وكل تذكير — يحمل رابط الدفع نفسه. يفتح صفحة دفع لدى ChariPay يؤدّي فيها الزبون الاستحقاق بالبطاقة. وككل أداء بالبطاقة، يمرّ عبر مصادقة 3-D Secure: يؤكّد حامل البطاقة العملية لدى بنكه. ويظهر وصف الاشتراك في كل رابط وفي عنوان بريد الاستحقاق: اكتبوه بحيث يتعرّف الزبون على خدمتكم من النظرة الأولى، «باقة Pro — شهري» بدل رمز داخلي.
لكن ينبغي أن يكون الأداء ممكنًا. فإن كان لبطاقة الزبون سقف يحدّ الأداء عبر الإنترنت، أو كانت مغلقة أمام هذا النوع من الأداء — وكثير من البطاقات المغربية مغلقة افتراضيًا أمام الأداء عبر الإنترنت —، تُرفض محاولته: تتلقون subscription.payment_failed، ويبقى الرابط قابلًا للأداء. وعلى زبونكم حينها أن يسوّي الأمر مع بنكه، أو أن يؤدّي ببطاقة أخرى، على الرابط نفسه. وأسباب الرفض كما يراها المشتري، وما يمكنه فعله في كل حالة، مشروحة في رفض البطاقة في الدفع الإلكتروني؛ أما قياس حالات الفشل من جهة التاجر ففي 3-D Secure ونسب النجاح.
ودوركم في هذه المرحلة: أن تتأكدوا من أن الزبون يعلم بوجود هذا الرابط وبأنه صادر عنكم فعلًا. ورسالة منكم، موقَّعة باسم علامتكم (انظروا الرسائل الجاهزة أسفله)، تمنعه من تجاهله أو من اعتباره بريدًا مريبًا.
ما ترونه أنتم: الحالات والاستحقاقات والويب هوك
خلال المهلة، لا تتغير حالة الاشتراك: يبقى نشطًا — أو «في انتظار الانطلاق» (INCOMPLETE) إن تعلق الأمر بالاستحقاق الأول، لأن الأداء الأول هو ما يفعّل الاشتراك. فالاستحقاق نفسه هو الذي يحمل صفة «غير مؤدّى». وفي بوابة التاجر، تسرد صفحة الاشتراكات اشتراكاتكم واستحقاقها القادم وحالتها، وتعرض صفحة كل اشتراك كل استحقاق أُرسل مع حالته. وعبر API، يسرد GET /v1/subscriptions/{reference}/charges الاستحقاقات، الأحدث أولًا، كلٌّ بحالته ورابطه (payUrl)؛ ويحمل ردّ GET /v1/subscriptions/{reference} رابط الفترة الجارية في currentCharge. وثلاثة أحداث ويب هوك تتابع حياة الاشتراك:
| الحدث | متى يُرسل | ما تفعلونه به |
|---|---|---|
subscription.payment_succeeded | أُدّي استحقاق | وسم الاستحقاق مؤدّى، والإبقاء على الخدمة أو إعادتها |
subscription.payment_failed | فشلت محاولة أداء بالبطاقة على الرابط؛ ويبقى الرابط قابلًا للأداء | تسجيل الحادث، وإعداد رسالتكم إن لم يُعِد الزبون المحاولة |
subscription.canceled | انتهت صلاحية الرابط دون أداء: أُلغي الاشتراك تلقائيًا | إغلاق الملف وفق شروطكم |
لا يُرسل أي حدث لمجرد حلول تاريخ الاستحقاق: يبقى الاستحقاق غير مؤدّى ما دمتم لم تتلقوا subscription.payment_succeeded لفترته. ثلاث قواعد للاستقبال تجنّبكم الأخطاء المعهودة. وجّهوا كل حدث حسب الترويسة Chari-Event-Type. وأزيلوا التكرار على Chari-Event-Id لا على Chari-Webhook-Id — فهذا الأخير يعرّف عملية التسليم لا الحدث. وتعرّفوا على الزبون والفترة من خلال ما يعيده إليكم كل حدث اشتراك: metadata الخاص بكم كما هو، ومعرّف اشتراككم (ExternalId)، وتاريخ الفترة المعنية (PeriodDate) — لا حاجة إلى التخمين انطلاقًا من مبلغ أو من تاريخ الاستلام.
ولا تجيبوا بـ2xx إلا بعد تسجيل الحدث وتحديث ملف الزبون؛ فالتسليم يتمّ مرة واحدة على الأقل، وأحيانًا دون ترتيب. أما التحقق من التوقيع ومعالجة الإعادات فمفصّلان في إنجاح دمج الويب هوك.
قراراتكم: الانتظار أو المتابعة بطريقة أخرى أو الإيقاف المؤقت أو الإلغاء
لا تنتزع التذكيرات التلقائية زمام الأمر منكم. أمامكم أربعة قرارات — والإيقاف المؤقت والاستئناف والإلغاء متاحة من صفحة الاشتراك في بوابة التاجر، أو عبر API:
| القرار | متى تتخذونه | أثره |
|---|---|---|
| ترك المهلة تجري | تأخر عارض لدى زبون منتظم عادةً | تستمر التذكيرات كل يوم؛ والأداء يسوّي الاستحقاق |
| المتابعة عبر قناتكم الخاصة | لا يقرأ الزبون بريده الإلكتروني، أو تنتهي التذكيرات في الرسائل غير المرغوب فيها | تعيدون إرسال رابط الاستحقاق (payUrl) إليه عبر واتساب أو SMS أو الهاتف |
| الإيقاف المؤقت | يخبركم الزبون بصعوبة عابرة | لا يُنشأ أي رابط جديد إلى حين الاستئناف؛ ولا تُفوتَر بأثر رجعي الفترات التي انقضت خلال الإيقاف |
| الإلغاء | لا يرغب الزبون في الاستمرار | ينتهي الاشتراك نهائيًا، دون أي استحقاق إضافي؛ وتقطعون الخدمة في الوقت نفسه |
والرابط الذي تعيدون إرساله هو الذي يحمله currentCharge، أو الاستحقاق المعلَّق في قائمة الاستحقاقات: إنه رابط رسائل البريد نفسه، ولا يُؤدّى إلا مرة واحدة. والزبون الذي يريد الأداء ببطاقة أخرى لا يحتاج إلى تغيير أي شيء في الاشتراك: يُدخل البطاقة التي يختارها في صفحة الرابط.
ويخص الإيقاف المؤقت المستقبل: فهو يوقف إنشاء روابط جديدة خلال صعوبة أُعلن عنها — زبون موسمي، أو شهر صعب. ولا يغني عن حوار مع الزبون بشأن الاستحقاق الذي أُرسل.
ويمكن الجمع بين هذه القرارات: تتركون المهلة تجري وتراسلون الزبون، ثم تلغون الاشتراك إن طلب ذلك. والنداءات المقابلة — الإيقاف، والاستئناف، والإلغاء، وقائمة الاستحقاقات — موصوفة في دمج الاشتراكات عبر API وفي مرجع وحدة الاشتراكات.
قطع الخدمة أو الإبقاء عليها: قاعدتكم، يُطلقها الويب هوك
ChariPay تستخلص المال؛ أما الخدمة التي تقدّمونها — الولوج إلى برنامج، أو إرسال علبة، أو دخول القاعة — فتبقى تحت تصرفكم. حدّدوا قاعدتكم مسبقًا واربطوها بأحداث الويب هوك، لا بإعادة التوجيه أبدًا: فإعادة التوجيه تعني أن المشتري عاد، لا أن الأداء قد تمّ. ولكل حالة دليلها: فوترة SaaS في المغرب، والبيع بالاشتراك، واشتراكات قاعات الرياضة.
ثلاث سياسات تتكرر كثيرًا:
| السياسة | خلال مهلة الأداء | عند subscription.canceled |
|---|---|---|
| مرنة | الخدمة مستمرة | الخدمة مقطوعة |
| متدرجة | الخدمة مستمرة، ثم مقيَّدة بعد عدد من الأيام تحدّدونه | الخدمة مقطوعة |
| صارمة | الخدمة معلَّقة بمجرد ألّا يُؤدّى الاستحقاق في تاريخه | الخدمة مقطوعة |
وتعتمد السياستان المتدرجة والصارمة على جدولكم الخاص: يعرف نظامكم تاريخ كل استحقاق، ويلاحظ عدم وصول subscription.payment_succeeded لتلك الفترة. وحين تلغون الاشتراك بأنفسكم، من بوابة التاجر أو عبر API، فاقطعوا الخدمة في الوقت نفسه، دون انتظار أي حدث: فردّ الإلغاء يحمل أصلًا الحالة CANCELED. ولإعادة الخدمة، اعتمدوا على subscription.payment_succeeded الذي يعلن أداء استحقاق. وإن أخبركم الزبون بأنه أدّى، فتحقّقوا من أداء الاستحقاق — في صفحة الاشتراك ببوابة التاجر، أو عبر API — قبل إعادة فتح الولوج. وبعد الإلغاء، تتطلب استعادة العلاقة اشتراكًا جديدًا.
واكتبوا هذه القاعدة في شروط الاشتراك — ما يحدث خلال مهلة الأداء، وعند الإلغاء، وكيف يعود الزبون —، دون الوعد بآجال لا تتوقف عليكم. فالزبون الذي يعرف القاعدة يعرف ما ينتظره.
متابعة استحقاق غير مؤدّى: رسائلكم الجاهزة
تقوم التذكيرات اليومية بدورها؛ ورسالة منكم، موقَّعة باسم علامتكم ومرسلة عبر قناتكم المعتادة، تمنحها سياقها. ثلاث رسائل للتكييف:
بعد الاستحقاق ببضعة أيام
مرحبًا سلمى، لم يُؤدَّ بعدُ استحقاق اشتراككم. لقد توصلتم منا، بالبريد الإلكتروني، برابط دفع: يكفي أن تفتحوه لتؤدّوا بالبطاقة. لم تجدوه؟ ردّوا على هذه الرسالة وسنعيد إرساله إليكم.
قبل انتهاء المهلة
مرحبًا سلمى، ما زال استحقاقكم غير مؤدّى إلى اليوم. ويبقى رابط الدفع الذي توصلتم به بالبريد الإلكتروني صالحًا إلى يوم 19؛ وبعد ذلك سيُلغى اشتراككم. وإن رُفضت بطاقتكم، يمكن لبنككم فتحها للأداء عبر الإنترنت، أو يمكنكم الأداء ببطاقة أخرى على الرابط نفسه.
عند الإلغاء
مرحبًا سلمى، لتعذّر الأداء، أُلغي اشتراككم وعُلّق ولوجكم. وإن رغبتم في العودة، ردّوا على هذه الرسالة وسنعدّ معكم اشتراكًا جديدًا.
ثلاث نصائح لتكييفها: الْتزموا بقاعدة خدمتكم (لا تتحدثوا عن تعليق إن كنتم تُبقون الولوج مفتوحًا)، والزموا الوقائع — فرفض البطاقة ليس خطأً من الزبون —، وامنحوا الزبون دائمًا وسيلة للرد. أما الفاتورة المنفردة فتُتابَع بطريقة أخرى: راجعوا استخلاص الفواتير عبر الإنترنت.
الأثر المحاسبي لاستحقاق غير مؤدّى
لا ينبغي أن يصبح الاستحقاق غير المؤدّى سطرًا شبحيًا في حساباتكم. تُستعرض استحقاقات الاشتراك في بوابة التاجر وعبر API (GET /v1/subscriptions/{reference}/charges): يبقى الاستحقاق غير المؤدّى ظاهرًا بحالته، وبما أنه لا تُفتح أي فترة جديدة ما دام قائمًا، فلا توجد خلفه أبدًا استحقاقات وهمية تحتاج إلى مطابقة.
ولربط كل حدث بملف زبونكم، اعتمدوا على metadata وExternalId وPeriodDate التي تعيدها أحداث الاشتراك. ثم يصبح كل استحقاق مؤدّى حركةً في الحساب بمرجعها، تظهر في تصدير CSV للمعاملات.
ثلاث عادات لمحاسبكم:
- تسجيل الاستحقاق مؤدّى عند وصول
subscription.payment_succeeded، لا قبله أبدًا؛ - تتبّع الاستحقاقات غير المؤداة في قائمة مستقلة تُراجَع كل أسبوع، مع آخر أجل لأدائها؛
- إغلاق ملف الزبون عند الإلغاء، مع تدوين آخر فترة مؤدّاة فعلًا.
أما العرض ووظائفه الأخرى فمعروضة في صفحة الاشتراكات والمدفوعات المتكررة.
أسئلة شائعة
كم من الوقت أمام الزبون لأداء استحقاق؟
يبقى رابط الاستحقاق قابلًا للأداء 14 يومًا بعد تاريخ الاستحقاق — أو بعد إرساله إن أُرسل لاحقًا —، تُحسب على توقيت Africa/Casablanca. وخلال هذه المهلة، يتلقى الزبون كل يوم تذكيرًا بالبريد الإلكتروني بالرابط نفسه. وإن لم يؤدِّ قبل انتهاء صلاحية الرابط، يُلغى الاشتراك تلقائيًا ويتلقى خادمكم subscription.canceled.
هل يُنبَّه الزبون حين لا يُؤدّى استحقاقه؟
نعم: ما دام الاستحقاق غير مؤدّى، يتلقى كل يوم بريدًا إلكترونيًا بعنوان «Rappel de paiement» (تذكير بالأداء)، برابط الفترة. ولا شيء يمنعكم من إضافة رسالتكم الخاصة، باسم علامتكم، لشرح الوضع والتذكير بآخر أجل وبيان طريقة التواصل معكم. ويمكنكم أيضًا إعادة إرسال الرابط إليه عبر واتساب أو SMS.
هل يستمر اشتراك غير مؤدّى في فوترة فترات جديدة؟
لا. ما دام استحقاق غير مؤدّى، لا تُفتح أي فترة جديدة ولا يُرسل أي رابط جديد: فلا تتراكم على زبونكم عدة استحقاقات متأخرة، ولا تحمل حساباتكم دَينًا صامتًا. وإن لم يُؤدَّ الاستحقاق المعلَّق أبدًا، يُلغى الاشتراك تلقائيًا عند انتهاء صلاحية الرابط، ويُخبَر خادمكم بذلك عبر subscription.canceled.
متى يُلغى الاشتراك غير المؤدّى تلقائيًا؟
حين تنتهي صلاحية رابط الاستحقاق دون أداء، بعد 14 يومًا من تاريخ الاستحقاق. فتصبح الحالة «ملغى» (CANCELED) ويتلقى خادمكم الحدث subscription.canceled. والإلغاء نهائي: لاستئناف العلاقة مع هذا الزبون، سيتعيّن إنشاء اشتراك جديد على سجله.
ماذا يحدث إن رُفضت بطاقة الزبون على الرابط؟
يتلقى خادمكم subscription.payment_failed، لكن الرابط يبقى قابلًا للأداء: يمكن للزبون إعادة المحاولة بعد تسوية الأمر مع بنكه، أو الأداء ببطاقة أخرى في الصفحة نفسها. وتستمر التذكيرات اليومية ما دام الاستحقاق غير مؤدّى، في حدود 14 يومًا. وأكثر أسباب الرفض شيوعًا مشروحة في رفض البطاقة في الدفع الإلكتروني.
أي ويب هوك يُعلن استحقاقًا غير مؤدّى؟
لا يُرسل أي حدث لمجرد حلول التاريخ: يبقى الاستحقاق غير مؤدّى ما دمتم لم تتلقوا subscription.payment_succeeded لفترته (PeriodDate). ويُعلن subscription.payment_failed محاولة أداء بالبطاقة رُفضت على الرابط، وsubscription.canceled الإلغاء عند انقضاء المهلة. وجّهوا المعالجة حسب Chari-Event-Type، وأزيلوا التكرار على Chari-Event-Id، وأجيبوا بـ2xx بعد تسجيل الحدث.
ماذا نرى في بوابة التاجر حين لا يُؤدّى استحقاق؟
تسرد صفحة الاشتراكات اشتراكاتكم واستحقاقها القادم وحالتها. وفي صفحة الاشتراك، يظهر كل استحقاق أُرسل بحالته: ويبقى غير المؤدّى منها معلَّقًا ما دام لم يُؤدَّ. ومن هذه الصفحة يمكنكم إيقاف الاشتراك مؤقتًا أو استئنافه أو فسخه. وإن أُلغي عند انتهاء صلاحية الرابط، تصبح حالته «ملغى»، في بوابة التاجر كما عبر API.
الخطوة التالية
أنشئوا اشتراك اختبار، واربطوا أحداث الويب هوك subscription.*، واكتبوا قاعدة خدمتكم عند عدم أداء استحقاق قبل تسجيل أول زبون في اشتراك: ابدؤوا في وضع الاختبار. ولمراجعة طريقة إعداد الاشتراك، من سجل الزبون إلى الرابط الأول، أعيدوا قراءة دمج الاشتراكات عبر API؛ ولمرجع النداءات، راجعوا توثيق وحدة الاشتراكات.
بقلم فريق ChariPay.