أكواد أخطاء الدفع
كل قيمة لـ `lastPaymentError.code`، متجمّعة حسب المجال. الـ URL بتاع كل إدخال هو قيمة `lastPaymentError.docUrl`.
الصفحة دي هي وجهة كل lastPaymentError.docUrl اللي كوده جه من PaymentErrorCode. الإرساء (anchors) هنا بيطابق قيمة code، فـ https://docs.xpay.app/integrate/errors/payment-error-codes#card_declined بيوصلك مباشرةً للصف اللي تحت.
لسبب الرفض المحدّد للبنك المُصدِر على دفع بالبطاقة (lastPaymentError.declineCode)، شوف أكواد الرفض. للنموذج ونمط المعالِج، شوف أخطاء الدفع.
التحقّق من البطاقة
العميل دخّل بيانات بطاقة ما بتعدّيش التحقّق الأساسي. paymentMethodType: "card". الإرشاد: confirm_card_data (خلّي العميل يدخّل بياناته تاني).
invalid_number
رقم البطاقة مش بصيغة صالحة (طول غلط، أو فشل في فحص Luhn، إلخ).
invalid_expiry_month
شهر انتهاء الصلاحية مش قيمة صالحة.
invalid_expiry_year
سنة انتهاء الصلاحية مش قيمة صالحة.
invalid_cvc
الـ CVC/CVV مش بصيغة صالحة (طول غلط).
incorrect_number
رقم البطاقة عدّى التحقّق من الصيغة لكن البنك المُصدِر بيقول إنه غلط.
incorrect_cvc
الـ CVC/CVV ما بيطابقش اللي عند البنك المُصدِر.
incorrect_zip
الرمز البريدي ما بيطابقش عنوان الفوترة المسجَّل عند البنك المُصدِر.
expired_card
البطاقة منتهية. العميل محتاج بطاقة تانية.
المعالجة
أخطاء رجعت أثناء محاولة الـ charge الفعلية. خليط من أخطاء البطاقة ونتائج المعالج.
card_declined
البنك المُصدِر رفض العملية من غير سبب أكثر تحديدًا. اقرنه بـ lastPaymentError.declineCode لسبب مستوى البنك المُصدِر لما يكون موجود.
processing_error
حصل خطأ أثناء المعالجة، لكن البنك المُصدِر ما رفضش العملية تمامًا. عادةً مؤقت. الإرشاد: try_again_later.
authentication_required
البنك المُصدِر بيتطلّب مصادقة إضافية (3D Secure) لإتمام الدفع. العميل محتاج يحاول تاني ويكمّل التحدّي.
الحساب والرصيد
insufficient_funds
بطاقة العميل ما عندهاش رصيد متاح كفاية للعملية.
card_velocity_exceeded
البطاقة اتستخدمت مرات كتير في فترة قصيرة. الإرشاد: try_again_later.
الاحتيال والمخاطر
البنك المُصدِر رفض العملية لأسباب مخاطر. الإرشاد: do_not_try_again للتلاتة.
fraudulent
البنك المُصدِر (أو مؤشرات مخاطر XPay نفسها) علّم الدفع كاحتيالي. ما تعيدش المحاولة؛ المحاولة دي مسجّلة عند البنك المُصدِر.
stolen_card
البطاقة اتبلّغ عنها مسروقة. ما تعيدش المحاولة. بلّغ فريق الدعم بتاعك لو المعدّل غير عادي.
lost_card
البطاقة اتبلّغ عنها ضايعة.
المعالج
issuer_not_available
XPay ما قدرش يوصل للبنك المُصدِر للبطاقة. الإرشاد: try_again_later.
processor_timeout
معالج الدفع ما ردّش في الوقت المناسب. الطلب ممكن يكون نجح على ناحيتهم؛ راجع لوحة التحكم قبل إعادة المحاولة. الإرشاد: try_again_later.
processor_declined
المعالج رفض العملية لسبب ما اتترجمش لكود أكثر تحديدًا.
الطلب
amount_too_large
مبلغ العملية بيتعدّى الحد الأقصى المسموح لطريقة الدفع دي.
amount_too_small
مبلغ العملية تحت الحد الأدنى المطلوب لطريقة الدفع دي.
currency_not_supported
العملة مش مدعومة من طريقة الدفع دي.
duplicate_transaction
المعالج اكتشف معاملة مشابهة مؤخرًا. استنى، بعدين أعِد المحاولة.
الاسترداد
charge_already_refunded
حاولت تسترد عملية دفع اتردّت بالكامل بالفعل.
charge_disputed
حاولت تسترد عملية دفع تحت نزاع حاليًا. عمليات الدفع المتنازَع عليها خارج تحكّمك لحد ما النزاع يتحل.
refund_disputed_payment
حاولت تسترد عملية دفع اتنازِع عليها. نفس القاعدة.
طرق الدفع غير البطاقية
payment_declined
طريقة دفع غير بطاقية (BNPL، أو كشك، أو محفظة، أو تحويل بنكي) رفضت الدفع. التفاصيل بتعتمد على المزوّد؛ راجع لوحة التحكم للتفاصيل.
العام
لما المعالج أو البنك المُصدِر ما يرجّعش سبب محدّد، XPay بيرجع لواحد من دول.
generic_decline
الدفع اترفض من غير سبب محدّد.
do_not_honor
البنك المُصدِر رجّع "do not honor"، اللي عادةً معناه إن العميل المفروض يتواصل مع بنكه. الإرشاد: try_again_later.
call_issuer
البنك المُصدِر قال للعميل يكلّمه. اعرض للعميل رسالة واضحة "اتواصل مع بنكك وحاول تاني".
رايح فين بعد كده
أكواد الرفض
سبب الرفض للبنك المُصدِر في lastPaymentError.declineCode. أكثر تفصيلًا من الأكواد اللي في الصفحة
دي.
أخطاء الدفع
النموذج: إزاي lastPaymentError متشكّل وإزاي تتعامل معاه.
أكواد أخطاء API
المرجع التاني: الأكواد اللي بترجع في error.code على استدعاء API فاشل.
أخطاء API
مغلّف خطأ الـ API المتزامن.
مقدمة الأخطاء
رجوع للأول. خريطة المكانين.
أخطاء الدفع
لما عملية دفع لعميل تفشل، الخطأ بيقعد على حقل lastPaymentError بتاع Payment Intent. الشكل، والـ adviceCode، وإزاي تقسّم النص بين عميلك وفريقك.
أكواد الرفض
أسباب الرفض على مستوى البنك المُصدِر اللي بترجع في `lastPaymentError.declineCode`. بالإضافة لإزاي تقرا تمرير `networkDeclineCode` الخام.