الاختبار
اختبر تكاملك من البداية إلى النهاية بمفاتيح الاختبار وصفحة الدفع التجريبية وبطاقات الاختبار، دون نقل أموال حقيقية.
يمكنك اختبار كل ما تبنيه قبل اعتماد حسابك. استخدم مفتاح اختبار سريًا (sk_test_…): تعمل المدفوعات والاستردادات وروابط الدفع والـ Webhooks كما في الوضع الحي، لكن دون نقل أي أموال، ويحمل كل كائن القيمة "livemode": false. راجع وضع الاختبار والوضع الحي.
صفحة الدفع التجريبية
في وضع الاختبار، يفتح checkout_url صفحة الدفع نفسها التي سيراها عملاؤك في الوضع الحي، مع شارة TEST وعبارة تفيد بأنه وضع اختبار لا تُنقل فيه أموال حقيقية. حقول البطاقة الآمنة متصلة ببيئة الاختبار لدى معالج البطاقات، لذا لا تعمل فيها إلا بطاقات الاختبار.
| ما تفعله في الصفحة | النتيجة | يُوجَّه العميل إلى | الـ Webhook |
|---|---|---|---|
| الدفع ببطاقة اختبار ناجحة | تصبح status بالقيمة succeeded وتُحدَّد paid_at | return_url?payment_id=…&status=succeeded | payment.succeeded |
| الدفع ببطاقة اختبار مرفوضة | تصبح status بالقيمة failed مع failure_code وfailure_message | return_url?payment_id=…&status=failed | payment.failed |
| الضغط على إلغاء (Cancel) | تصبح status بالقيمة canceled | return_url?payment_id=…&status=failed | payment.canceled |
تعود العملية الملغاة بالقيمة status=failed في إعادة التوجيه، لأن إعادة التوجيه لا تحمل إلا succeeded أو failed أو processing. يقرأ خادمك الحالة الدقيقة (canceled) من GET /v1/payments/:id.
يظل بالإمكان دفع العملية الفاشلة أو الملغاة عبر checkout_url نفسه حتى expires_at، لذا قد يليَ إشعارَ payment.failed إشعارُ payment.succeeded. راجع المدفوعات.
بهذا تختبر كل فروع صفحة العودة ومعالج الـ Webhook خلال دقائق.
سيناريوهات الاختبار
نفّذ هذه السيناريوهات قبل الإطلاق:
| السيناريو | كيف تختبره | النتيجة المتوقعة |
|---|---|---|
| دفع ناجح | ادفع ببطاقة اختبار ناجحة | يُعلَّم الطلب مدفوعًا مرة واحدة، عبر صفحة العودة أو الـ Webhook أيهما وصل أولًا. |
| دفع مرفوض | ادفع ببطاقة اختبار مرفوضة | يرى العميل صفحة فشل ويستطيع المحاولة مجددًا. |
| دفع ملغى | اضغط إلغاء في صفحة الدفع | يبقى الطلب غير مدفوع، ويستطيع العميل المحاولة مجددًا. |
| إعادة المحاولة بعد الرفض | ادفع ببطاقة مرفوضة، ثم افتح checkout_url نفسه وادفع ببطاقة ناجحة | يصل payment.failed ثم payment.succeeded، ويُعلَّم الطلب مدفوعًا في النهاية. |
| العميل لا يعود | ادفع ثم أغلق التبويب قبل اكتمال إعادة التوجيه | يُعلِّم إشعار payment.succeeded الطلب مدفوعًا. |
| عملية منتهية | أنشئ عملية دفع مع "expires_in_minutes": 5 (الحد الأدنى) وانتظر | يصل إشعار payment.expired، وتعرض صفحة الدفع أن صلاحية الدفعة انتهت. |
| إعادة توجيه مزوّرة | افتح رابط العودة مع ?payment_id=<عملية فاشلة>&status=succeeded | لا يُعلَّم الطلب مدفوعًا. |
| Webhook مكرر | أعِد إرسال تسليم من المطورون ← Webhooks | يُعالَج الطلب مرة واحدة فقط. |
| استرداد كامل وجزئي | استرد عملية دفع تجريبية ناجحة | تتحدّث amount_refunded ويصل إشعار refund.succeeded. |
| استرداد زائد | استرد أكثر من المتبقي | 422 refund_exceeds_amount. |
| إعادة المحاولة الشبكية | أرسل طلب POST نفسه مرتين بالمفتاح Idempotency-Key نفسه | عملية دفع واحدة واستجابتان متطابقتان، والثانية تحمل الترويسة Idempotent-Replayed: true. |
| عملة بثلاث منازل | أنشئ عملية KWD بقيمة 1500 | تعرض صفحة الدفع 1.500 د.ك. |
| مبلغ ينتهي بـ 5 | أنشئ عملية KWD بقيمة 1505 | في الحسابات التي تطبّق قاعدة المنازل الثلاث: 422 validation_error مع details.fields.amount. وفي غيرها 201. |
| وسيلة غير مدعومة | أنشئ عملية دفع بقيمة payment_method لا يقدّمها حسابك، مثل knet في حساب إماراتي | 422 validation_error مع details.fields.payment_method = "unsupported". |
| 3-D Secure | ادفع ببطاقة اختبار تطلب المصادقة | يُفتح التحدي (في نافذة على الصفحة أو في صفحة البنك، حسب حسابك)؛ إكماله ينجح الدفع، وإفشاله يرفضه. |
| Apple Pay / Google Pay | افتح checkout_url على جهاز فيه محفظة مُعدّة | يظهر خيار المحفظة؛ وقيمة payment_method هي apple_pay أو google_pay مع brand وlast4 لبطاقة المحفظة. ولا تُنقل أموال حقيقية في وضع الاختبار. |
بطاقات الاختبار
تعتمد بطاقات الاختبار على بلد حسابك. ما لم يذكر الجدول خلاف ذلك، استخدم أي تاريخ انتهاء مستقبلي وأي رمز CVV من 3 أرقام. لا تكتب أبدًا أرقام بطاقات حقيقية في حقول البطاقة في وضع الاختبار.
حسابات الكويت
| البطاقة | الرقم | تاريخ الانتهاء | النتيجة |
|---|---|---|---|
| Visa | 4508 7500 1574 1019 | أي تاريخ مستقبلي | نجاح، بعد صفحة اختبار 3-D Secure |
| Mastercard | 5123 4500 0000 0008 | 01/39 | نجاح، بعد صفحة اختبار 3-D Secure |
| Mastercard | 5123 4500 0000 0008 | 05/39 | رفض |
في صفحة اختبار 3-D Secure، وافق على المصادقة لإكمال الدفع، أو ارفضها لترى عملية مرفوضة.
لكي-نت ومدى وغيرها من الوسائل المحلية بيانات اختبار خاصة بها. راسل support@teyra.co للحصول على ما يدعمه حسابك منها.
حسابات الإمارات
| البطاقة | الرقم | النتيجة |
|---|---|---|
| Visa | 4242 4242 4242 4242 | نجاح |
| Visa | 4000 0027 6000 3184 | تطلب 3-D Secure؛ وافق عليها للنجاح أو أفشِلها للرفض |
| Visa | 4000 0000 0000 0002 | رفض |
| Visa | 4000 0000 0000 9995 | رفض: رصيد غير كافٍ |
لا يمكن اختبار كي-نت وغيرها من الوسائل المحلية إلا في الحسابات التي تدعمها. راجع وسائل الدفع وحسابك للاطلاع على قائمة تحقق.
اختبار الـ Webhooks
- استخدم إرسال حدث تجريبي في المطورون ← Webhooks لإرسال حدث
payment.succeededموقّع إلى نقطة نهاية. - كل عملية دفع تجريبية تكملها ترسل أحداثًا حقيقية في وضع الاختبار إلى نقاط النهاية الخاصة بوضع الاختبار.
- راجع محاولات التسليم ورموز الاستجابة ومواعيد إعادة المحاولة في قائمة عمليات التسليم.
راجع الـ Webhooks.