الحالات
كل حالات الدفعة، والتغييرات الممكنة بينها، والحدث الذي يرسله كل تغيير.
لكل دفعة دائماً حالة واحدة status:
| الحالة | المعنى | نهائية؟ |
|---|---|---|
pending |
أُنشئت وتنتظر أن يدفع العميل. | لا |
paid |
أكد المزوّد الدفع. سلّم الطلب. | لا، يمكن استردادها |
failed |
رُفضت البطاقة أو رفض المزوّد الدفع. | نعم، ما لم تضبطها ألفابت يدوياً |
cancelled |
ألغاها العميل أو خادمك أو ألفابت قبل الدفع. | تقريباً، راجع أدناه |
expired |
لم يدفع أحد قبل expires_at. |
نعم، ما لم تضبطها ألفابت يدوياً |
partially_refunded |
مدفوعة، واستُرد جزء من المبلغ. | لا |
refunded |
مدفوعة، واستُرد المبلغ كاملاً. | نعم |
التغييرات الممكنة
| من | إلى | الحدث |
|---|---|---|
pending |
paid |
payment.paid |
pending |
failed |
payment.failed |
pending |
cancelled |
payment.cancelled |
pending |
expired |
payment.expired |
paid |
partially_refunded |
payment.partially_refunded |
paid |
refunded |
payment.refunded |
partially_refunded |
partially_refunded (استرداد جزئي آخر) |
payment.partially_refunded |
partially_refunded |
refunded |
payment.refunded |
cancelled، أو failed/expired ضبطتها ألفابت يدوياً (حتى موعد expires_at الأصلي) |
paid |
payment.paid |
كل تغيير يرسل إشعار Webhook واحداً بالضبط. راجع إشعارات Webhook.
الدفع بعد الإغلاق
لا يمكن إغلاق صفحة البطاقة لدى المزوّد من الخارج، لذلك يستطيع العميل دفع دفعة سبق أن أغلقها الجسر.
ويشمل ذلك الدفعة الملغاة عبر الواجهة البرمجية، والدفعة التي ضبطتها ألفابت يدوياً على failed أو
expired. يواصل الجسر التحقق من هذه الدفعة حتى موعد expires_at الأصلي، فإن أبلغ المزوّد أنها
مدفوعة تصبح paid ويصلك payment.paid.
بما أن المال قد اقتُطع، فعلى تطبيقك عندها أن يسلّم الطلب أو يسترد المبلغ. وتظهر هذه الدفعات لدى ألفابت معلَّمة للمراجعة.
أما الدفعات التي رفضها المزوّد نفسه أو انتهت لديه فهي نهائية.
المبالغ والاسترداد
refunded_amount هو مجموع كل الاستردادات المؤكدة بالدينار، والمبلغ الذي ما زال قابلاً للاسترداد
هو amount − refunded_amount. طلب الاسترداد الفعلي الذي لم يُؤكَّد بعد لا يغيّر الحالة ولا
refunded_amount، راجع الاسترداد.
انتهاء المهلة
تنتهي الدفعة غير المدفوعة بعد 30 دقيقة من إنشائها افتراضياً، ويمكن لألفابت ضبط مدة مختلفة لكل
تطبيق. الوقت الدقيق هو expires_at في الدفعة. يتحقق الجسر من الدفعات المعلّقة لدى المزوّد مرة في
الدقيقة تقريباً، لذلك قد تصل حالة expired وإشعارها بعد expires_at ببضع دقائق.