# بيئة الاختبار والوضع المباشر: الفروق

يشغّل وضع الاختبار الكود نفسه الذي يشغّله الوضع المباشر. إليك كل فرق مقصود، مع قيمته وسببه.

وضع الاختبار ليس نسخة مقلّدة من AdProMaxPay: إنه واجهة API نفسها، والتحقق من صحة البيانات نفسه، وآلة
الحالات نفسها، والأحداث نفسها، وإشعارات الـ webhook نفسها. مزوّدو خدمات الدفع وحدهم تجري
محاكاتهم، حتى لا تتحرك أي أموال حقيقية. الطلب الذي ينجح في وضع الاختبار ينجح في الوضع المباشر،
والطلب المرفوض في الوضع المباشر مرفوض في وضع الاختبار.

الفروق أدناه مقصودة. كل واحد منها يجنّبك الانتظار، أو إنفاق أموال حقيقية.

## ما يختلف

|                                                  | وضع الاختبار                                                                                         | الوضع المباشر                                                     | السبب                                                                   |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------- |
| الأموال                                          | لا تتحرك أي أموال؛ ولا يصل شيء إلى أي بنك                                                            | مدفوعات حقيقية                                                    | بيئة الاختبار للبناء                                                    |
| المفاتيح                                         | `apx_sk_test_…` و`apx_pk_test_…`، منذ التسجيل                                                        | `apx_sk_live_…` و`apx_pk_live_…`، بعد تفعيل حسابك                 | وضعان، ومجموعتا بيانات                                                  |
| صفحة الدفع بالبطاقة                              | صفحة محاكاة تحمل علامة TEST، ولا تقبل إلا [بطاقات الاختبار](https://pay-docs.adpromax.com/ar/sandbox/test-cards)                     | صفحة الدفع الآمنة لشريكنا في البطاقات                             | لا تدخل بطاقة حقيقية وضع الاختبار أبدًا                                 |
| 3-D Secure                                       | صفحة محاكاة تختار فيها الموافقة أو الفشل                                                             | بنك عميلك                                                         | لتختبر النتيجتين                                                        |
| رموز الدفع النقدي                                | تُسدَّد عبر **محاكاة الدفع** أو [أدوات الاختبار المساعدة](https://pay-docs.adpromax.com/ar/sandbox/test-helpers)؛ ولا يقبلها أي وكيل | تُسدَّد نقدًا لدى وكيل دفع شريك                                   | لا نقد حقيقي من أجل اختبار                                              |
| فحص حالة الدفع النقدي                            | كل **10 ثوانٍ**، وفورًا بعد دفع محاكى                                                                | كل **دقيقتين**                                                    | يتأكد الاختبار في ثوانٍ                                                 |
| توفّر الأموال                                    | بعد **120 ثانية** من نجاح الدفعة                                                                     | بعد فترة الحجز المحددة عند تفعيل حسابك                            | ترى دورة الرصيد كاملة في اختبار واحد                                    |
| رسومنا                                           | قيمة مؤقتة تُقتطع من كل دفعة ناجحة: 2.5% للبطاقة و3% للدفع نقدًا                                     | الرسوم المعلنة مع التفعيل                                         | يتحرك رصيد الاختبار كما يتحرك الرصيد المباشر؛ وهذه الأرقام ليست أسعارنا |
| استرداد المدفوعات بالبطاقة                       | يكتمل في ثوانٍ                                                                                       | قد يبقى `pending` مدة أطول ريثما تنفّذه شبكة البطاقات             | المزوّد المحاكى يرد فورًا                                               |
| [أدوات الاختبار المساعدة](https://pay-docs.adpromax.com/ar/sandbox/test-helpers) | متاحة                                                                                                | مرفوضة: `403`، `test_mode_only`                                   | لا معنى لمحاكاة دفعة في الوضع المباشر                                   |
| حدود المعدل، في الدقيقة                          | كل الطلبات 600، عمليات الكتابة 150، إنشاء الدفعات 60، البحث 30                                       | كل الطلبات 1,200، عمليات الكتابة 300، إنشاء الدفعات 120، البحث 30 | تحصل حركة الوضع المباشر على الحصة الأكبر                                |
| السقف اليومي                                     | 10,000 طلب و1,000 عملية إنشاء دفعة في اليوم، بتوقيت المغرب؛ ثم `429`، `test_daily_cap_reached`       | لا يوجد                                                           | يحمي بيئة الاختبار المشتركة                                             |
| سجلات الطلبات                                    | تُحفظ 30 يومًا                                                                                       | تُحفظ 90 يومًا                                                    | حركة الاختبار قصيرة العمر                                               |

حدود المعدل هذه هي القيم الافتراضية؛ وقد تختلف حدودك. تعرض صفحة **حدود API** في لوحة التحكم القيم
المطبّقة عليك، وتتيح لك طلب المزيد: انظر [حدود المعدل](https://pay-docs.adpromax.com/ar/api-reference/rate-limits).

## ما لا يختلف

* **التحقق من صحة البيانات**: الحقول نفسها، والفحوص نفسها، ورموز الأخطاء ورسائلها نفسها.
* **الحدود الدنيا**: 100.00 MAD للدفع نقدًا و1.00 MAD للبطاقة، في الوضعين. تُرفض دفعة نقدية بمبلغ
  50.00 MAD في وضع الاختبار تمامًا كما تُرفض في الوضع المباشر.
* **مدد الصلاحية**: تدوم صفحة الدفع بالبطاقة نحو 30 دقيقة؛ ورمز الدفع النقدي نحو ثلاثة أيام
  (يحددها حقله `expires_at`)؛ وجلسة الدفع (checkout session) 24 ساعة ما لم تحدد مدة أقصر.
* **عدم التكرار (idempotency)**: المفاتيح الإلزامية نفسها، والردود المعادة نفسها طوال 24 ساعة.
* **الأحداث والـ webhook**: الأنواع نفسها، والمحتوى نفسه، والتوقيعات نفسها، وإعادة المحاولة نفسها.
* **الحالات**: تمر نية الدفع (payment intent) بالحالات نفسها، وتنجح مرة واحدة.
* **الاسترداد**: يمكن استرداد المدفوعات بالبطاقة؛ ولا يمكن استرداد المدفوعات النقدية، في الوضعين.

## الاختبار والمباشر لا يختلطان أبدًا

* مفتاح الاختبار لا يرى إلا كائنات الاختبار؛ ومفتاح الوضع المباشر لا يرى إلا كائنات الوضع المباشر.
  قراءة كائن اختبار بمفتاح الوضع المباشر تعيد `resource_missing`، مع تلميح إلى أن الكائن موجود
  في الوضع الآخر.
* تنتمي نقاط استقبال الـ webhook إلى وضع واحد. أنشئ نقاط الاستقبال للوضع المباشر عند انتقالك إليه.
* تحمل كائنات الاختبار `"livemode": false`؛ وكائنات الوضع المباشر `"livemode": true`.
