الكوديكس · III

الحالات والمبالغ المستردة

حالات المعاملات

لكل صف معاملة في لوحة التحكم واحدة من هذه الحالات. وتعكس الحالة أحدث حدث لتلك المعاملة؛ وتحدّث المبالغ المستردة والنزاعات الصف القائم بدلاً من إدراج صف شقيق.

الحالةالمعنى
succeededاكتملت الدفعة. المال في حسابك (بعد رسوم المزود).
pendingالدفعة في طريقها. شائع مع طرق الدفع غير المتزامنة (ACH، وبعض وسائل العملات الرقمية) حيث يستغرق التأكيد دقائق إلى ساعات.
failedلم تكتمل الدفعة: رُفِضت البطاقة، أو انتهت صلاحية التفويض، أو رفض صريح. لم يتحرك مال.
partialدفع المشتري أقل من المُفوتَر (شائع حين يرسل مشترٍ عملة رقمية مبلغاً مخفَّضاً برسوم الشبكة). يعكس amount الصف ما استُلِم فعلاً؛ افحص metadata.invoicedAmount لما طُلِب.
refundedأُعيد المال إلى المشتري، كلياً أو جزئياً. وamount الصف هو المبلغ المسترد؛ ويمكن أن تحدث المبالغ المستردة بعد أيام أو أسابيع من الدفعة الأصلية.
disputedفتح المشتري (أو مصرفه) نزاعاً أو استرداداً قسرياً. افحص واجهة المزود لنافذة الرد. ويحمل metadata.reason الصف تصنيف المزود حرفياً.
pending_manualمعاملة دفع بالبريد تنتظر تأكيدك المادي. انظر القسم التالي.
manual_canceledنقرت إلغاء على صف دفع بالبريد معلّق قبل وصول دفعة المشتري.
manual_expiredبقي صف دفع بالبريد معلّق لمدة 30 يوماً دون تأكيد وانتهت صلاحيته تلقائياً.
manual_revokedأكّدت استلام دفعة دفع بالبريد لكنك تراجعت لاحقاً عن التأكيد (مثلاً تبيّن أن الدفعة غير صالحة). ينتقل الصف من succeeded عودةً إلى هذه الحالة النهائية.

المبالغ المستردة، والنزاعات، والدفعات الجزئية

ينصت Coin Moebius لأحداث المزود هذه ويحدّث صف المعاملة الأصلي في لوحة التحكم. وتحديداً:

  • المبالغ المستردة: حدث charge.refunded في Stripe (مبالغ مستردة كلية أو جزئية، بما فيها amount_refunded لتُظهر المبالغ المستردة الجزئية الشريحة التي أُعيدت). وrefunded IPN لـ NOWPayments. تنقلب حالة الصف إلى refunded، ويعكس amount المبلغ المسترد، ويحمل metadata.originalChargeId / metadata.originalAmount سياق الدفعة الأصلية.
  • النزاعات (الاسترداد القسري): حدث charge.dispute.created في Stripe. تنقلب حالة الصف إلى disputed. ويمرّ السبب المذكور من المزود إلى metadata.reason حرفياً، ويمكنك تصييره في واجهتك الخاصة كما تشاء.
  • الدفعات الجزئية: partially_paid IPN لـ NOWPayments. تنقلب حالة الصف إلى partial. ويعكس amount ما استُلِم فعلاً (actually_paid)؛ وmetadata.invoicedAmount هو ما طُلِب.

في الإصدار الأول، تُعرَض هذه الأحداث في لوحة التحكم وعبر نقطة نهاية /status. وسيضيف إصدار مستقبلي إشعارات بريد إلكتروني ومُحوِّل webhook صادراً ليتفاعل خادمك الخلفي تلقائياً. وفي الوقت الحالي، أعِدّ مهمة استطلاع صغيرة (انظر القسم التالي) أو تحقق من لوحة التحكم.

جاهز لربطه؟

تغطي الطبقة المجانية معظم المواقع ولا تطلب بطاقة أبداً.