الانتقال إلى المحتوى الرئيسي
تُعد البيئة التجريبية في Didit المقابلة لبطاقات الاختبار في Stripe أو قوالب المستندات في Sumsub: فهي تتيح لك إعادة إنتاج أي نتيجة تحقق بشكل حتمي، دون التعامل مع مزودين حقيقيين أو بيانات شخصية حقيقية أو المساس برصيدك.
المصدر المرجعي الموثوق لهذه البيانات هو serialize_catalog() في خدمة التحقق، ويتم توفيره مباشرة عبر GET /v1/sandbox/scenarios/. يتم إنشاء نسخة خاضعة لاختبارات الانحراف داخل docs/sandbox/SANDBOX_REFERENCE.md في مستودع service-didit-verification عبر الأمر pipenv run python scripts/generate_sandbox_reference.py. تعكس هذه الصفحة ذلك المرجع — واعتمد دائمًا على endpoint الخاص بالكتالوج المباشر إذا بدا أي شيء هنا قديمًا. يتطلب endpoint الخاص بالكتالوج المصادقة: أرسل مفتاح API الخاص بك (x-api-key) بالطريقة نفسها التي ترسلها في أي استدعاء آخر، أو token الجلسة إذا كنت تقرأه من داخل جلسة قيد التشغيل.

نموذج البيئة

البيئة التجريبية هي وضع يُطبَّق لكل تطبيق (ApplicationDetail.mode == SANDBOX)، وهي الفكرة ذاتها لوضع الاختبار في Stripe. عندما تعمل الجلسة تحت تطبيق في البيئة التجريبية:
  • تتم محاكاة كل مزود خارجي (OCR، وفحص AML، ومطابقة الوجه، وكشف الحيوية، والتحقق عبر NFC، ورقم الهاتف، والبريد الإلكتروني، وعنوان IP، وإثبات العنوان، والتحقق من قواعد البيانات، وDocument AI) — ولا يتم استدعاء أي طرف ثالث على الإطلاق.
  • يعمل كشف الحيوية تمامًا كما يعمل في بيئة الإنتاج. ينفذ سير العمل الخاص بكشف الحيوية التفاعلي عملية الالتقاط التفاعلي الحقيقية في البيئة التجريبية، سواء في المسار المستضاف أو عبر التسليم للويب من خلال حزم SDK الأصلية، مما يتيح لك اختبار التجربة التي سيحصل عليها المستخدمون. يتم محاكاة نتيجة كشف الحيوية فقط، عبر السيناريو أو القيمة السحرية، ويسجل التقرير الطريقة التي يهيئها سير عملك.
  • النطاقات المخصصة لبيئة الإنتاج فقط. لا يمكن لتطبيق في البيئة التجريبية إضافة نطاق مخصص؛ تعمل جلسات البيئة التجريبية دائمًا على النطاق الافتراضي لصفحة التحقق المستضافة.
  • الجلسات لا تُفوتر أبدًا ويتم تجاوز التحقق من الرصيد.
  • يتم تطبيق حصة محددة لكل تطبيق تبلغ 500 عملية إنشاء جلسة / 24 ساعة.
  • تحمل webhooks القيمة "environment": "sandbox" (بينما تحمل جلسات بيئة الإنتاج القيمة "environment": "live").
  • يعرض المسار المستضاف بيئة الجلسة حتى تتمكن واجهة المستخدم من تحذير المستخدمين من رفع معلومات شخصية حقيقية.
  • لا تعتمد النتائج إطلاقًا على وحدات البكسل (الصور): تأتي البيانات المستخرجة والحالات من السيناريو / القيمة السحرية. بينما يتم تخزين الوسائط الملتقطة نفسها (المستندات، وصورة سيلفي، والفيديو، وملفات إثبات العنوان) بصورة فعلية، تمامًا مثل جلسات بيئة الإنتاج.

مراقبة المعاملات في البيئة التجريبية

البيئة التجريبية مبنية على نموذج الجلسات: فهي تحاكي المزودين الذين قد تستدعيهم جلسة التحقق. لا تعتمد مراقبة المعاملات على أي مزود لتتم محاكاته، لذا يسلك التطبيق في البيئة التجريبية المسار الآخر: يتم تخزين المعاملة، ولكن لا يتم تشغيل أي شيء يتخذ قراراً أو يُجري فحصاً أو يرسل إشعاراً أو يفرض رسوماً عليها على الإطلاق. يتم حفظ المعاملة المنشأة في تطبيق في البيئة التجريبية وإرجاعها كالمعتاد، ولا ينطبق أي مما يلي عليها:
  • عدم تقييم القواعد. يكون rule_runs فارغاً، أياً كان الوضع الذي تعمل به قواعدك. لا يتم تشغيل أي قاعدة في وضع ACTIVE على تطبيق في البيئة التجريبية، لذا تظل المعاملة بحالة APPROVED مع درجة 0 ولا يتم فتح أي تنبيه أو حالة.
  • عدم إجراء فحص AML / فحص المحافظ. يكون provider_results فارغاً حتى لمعاملات العملات المشفرة في تطبيق تم تمكين المراقبة فيه.
  • عدم إرسال أي webhooks. لا يتم تسليم transaction.created ولا transaction.status.updated لمعاملة في البيئة التجريبية.
  • عدم احتساب أي فوترة. يتم تسجيل حدث استخدام بسعر 0.0000 ويبقى رصيدك دون تغيير.
تحمل كل استجابة معاملة حقلاً باسم environment (بقيمة "live" أو "sandbox")، لذا فإن خلو rule_runs لا يترك أي مجال للبس: تعني القيمة "sandbox" أن القواعد لم تُقيَّم، وليس أنه لم تتطابق أي منها. توضح Business Console الأمر نفسه في بطاقة المخاطر والقرار للمعاملة بدلاً من مجرد عرض عبارة “لم يتم تقييم أي قواعد”.
تُعد Travel Rule الاستثناء الوحيد لقاعدة “عدم تشغيل أي شيء”. في تطبيق تم تمكين Travel Rule فيه، لا تزال معاملة travelRule في البيئة التجريبية تشغل محرك التبادل: إذ يتم إنشاء سجل التحويل ويتنقل بين حالاته المختلفة. ما لا تفعله البيئة التجريبية مطلقاً هو التواصل مع أي جهة خارج Didit. الطرف المقابل الوحيد لها هو Didit Test VASP، المدمج في المنصة: لا تصل أي رسالة امتثال إلى VASP حقيقي طرف مقابل عبر أي مسار (TRP، أو عضوية شبكة قمت بربطها، أو البريد الإلكتروني، أو INTERNAL)، ويتم تخطي فحص إسناد VASP الطرف المقابل، كما لا يؤدي الإلغاء إلى إرسال أي شيء إلى طرف مقابل. يتم تسليم أحداث webhook الخاصة بـ travel_rule.status.updated مع وسمها بـ "environment": "sandbox".صادر - معاملة travelRule ترسلها أنت. يتم تشغيل فحص threshold_amount أولاً، وفي البيئة التجريبية لا ينطبق إلا عند إرسال transaction_details.amount_in_default_currency، لأن البيئة التجريبية لا تقوم بتحويل العملات، وبدون ذلك يُعتبر كل تحويل في البيئة التجريبية أعلى من الحد. تنتهي صلاحية التحويل الذي لم يتم الرد عليه بعد confirmation_timeout_hours، ثم تنطبق نتيجة timeout_outcome المحددة لديك على المعاملة. أعلى من الحد، ينطبق فحص المحفظة ذاتية الاستضافة كالمعتاد: ينتقل التحويل المتجه إلى محفظة ذاتية الاستضافة مُعلنة إلى حالة UNCONFIRMED_OWNERSHIP دون إرسال أي شيء، ويمكنك إكماله في البيئة التجريبية عبر أداة ملكية المحفظة، أو عبر تأكيد الملكية عندما تكون المحفظة الوجهة موجودة بالفعل في دفتر عناوين المحافظ لديك. أي تحويل آخر أعلى من الحد يذهب إلى Didit Test VASP عبر مسار TEST_VASP، والذي يرد عليه داخل Didit وفق السيناريو الذي تختاره بحسب محفظة المستفيد أو اسمه: فيكتمل، أو يُرفض، أو لا يتطابق، أو يصبح COUNTERPARTY_VASP_NOT_REACHABLE، أو تنتهي صلاحيته (حيث تنطبق نتيجة timeout_outcome الخاصة بك على المعاملة) أو ينتظر ملكية المحفظة. راجع اختبار Travel Rule في البيئة التجريبية للاطلاع على كل سيناريو.وارد - POST /v3/travel-rule/inbound/. لا يقوم التسجيل بالإرسال عبر أي مسار مطلقاً، لذا لا يوجد شيء خاضع للمحاكاة فيه: تقوم البيئة التجريبية بمطابقة الإيداع مع دفتر عناوين المحافظ الخاص بك وتسويته بشكل متزامن، تماماً كما تفعل بيئة الإنتاج. ويؤول إلى نتيجة فعلية بدلاً من AWAITING_COUNTERPARTY - وهي: ON_HOLD (عدم وجود تطابق في دفتر العناوين)، أو UNCONFIRMED_OWNERSHIP (الإدخال المطابق غير موثق الملكية)، أو COUNTERPARTY_MISMATCHED_DATA (اسم المستفيد لا يطابق صاحب المحفظة)، أو COMPLETED ثم FINISHED (تطابق مع إدخال تم التحقق منه). لاستلام تحويل من Didit Test VASP بدلاً من ذلك، استخدم تشغيل تحويل وارد من Test VASP باستخدام إحدى محافظ دفتر العناوين الخاصة بك.

سيناريوهات Test VASP لـ Travel Rule

يسرد الكتالوج travel_rule.scenarios هذه السيناريوهات الصادرة. عيّن اسم المستفيد أدناه في معاملة travelRule صادرة بعد تمكين Travel Rule في تطبيقك في البيئة التجريبية. يتم تشغيل فحوصات الحد والمحفظة ذاتية الاستضافة المُعلنة الموضحة أعلاه أولاً. يمكنك أيضاً اختيار سيناريو باستخدام عنوان محفظة المستفيد بدلاً من الاسم (تكون الأولوية للمحفظة في حال تم تعيين كليهما)، ويكتمل التحويل الذي لا يحدد أياً منهما كـ accept. يسرد اختبار Travel Rule في البيئة التجريبية محفظة كل سيناريو ونتيجته الدقيقة. يقبل مُشغِّل Test VASP للتحويلات الواردة القيمتين accept وname_mismatch فقط في حقل scenario الخاص به.
كيفية تجربة قاعدة قبل تفعيلها في بيئة الإنتاج. استخدم الاختبار الرجعي: فهو يعيد تشغيل القاعدة على سجل معاملاتك الفعلي ويعرض تقارير عن evaluated / matched / affected_entities دون المساس بحالة أي معاملة. ادمج ذلك مع وضع TEST في تطبيق بيئة الإنتاج - حيث يتم تقييم قاعدة TEST على كل معاملة جديدة في بيئة الإنتاج وتسجيل ما كان سيتطابق معها، دون تغيير الدرجة أو الحالة - ثم انتقل إلى ACTIVE بمجرد أن تبدو انتقائية القاعدة مناسبة.

كيفية التبديل بين الإنتاج والبيئة التجريبية

تعد بيئة الإنتاج والبيئة التجريبية تطبيقات منفصلة، وبالتالي لا تختلط حركة مرور الاختبار وبيانات الإنتاج مطلقاً. يمتلك كل تطبيق mode بقيمة live أو sandbox:
  • استخدم مفتاح API الخاص بتطبيق في وضع البيئة التجريبية للحصول على جلسات تجريبية وهمية، غير مفوترة، وقابلة للمحاكاة.
  • استخدم مفتاح API الخاص بتطبيق في وضع الإنتاج لعمليات التحقق الحقيقية.
يتم قبول الحقل sandbox_scenario (عند إنشاء الجلسة وفي واجهة برمجة تطبيقات فحص AML المستقلة) ونقاط endpoint الخاصة بالمحاكاة فقط في تطبيقات البيئة التجريبية؛ ويتم رفضها في تطبيقات الإنتاج.

البيئة التجريبية في مسار التحقق المستضاف

تُظهر الجلسات المنشأة ضمن تطبيق في البيئة التجريبية واجهة مستخدم إضافية في مسار التحقق المستضاف (الرابط url الذي يتم إرجاعه بواسطة POST /v3/session/):
  • شريط البيئة التجريبية داخل البطاقة. تعرض كل شاشة شريطاً داخل البطاقة - “بيانات اختبار فقط - لا توجد استدعاءات حقيقية” - بحيث يكون من الواضح دائماً أن الجلسة لا تستدعي مزودين حقيقيين ولا تلمس رصيدك أبداً. يتم تخزين الوسائط الملتقطة كما في أي جلسة، لذا استخدم عينات المستندات وبيانات الاختبار بدلاً من مستندات الهوية الحقيقية أو المعلومات الشخصية.
  • أداة اختيار السيناريو قبل بدء المسار. قبل بدء عملية الالتقاط، ترشد أداة اختيار داخل البطاقة المستخدم لاختيار نتيجة اختبار: اختر النتيجة، ثم اختر المُشغِّل الخاص بتلك النتيجة. يؤدي التأكيد إلى استدعاء POST /v3/session/{session_id}/sandbox/arm/ (راجع تهيئة (أو إعادة تهيئة) الجلسة قبل بدء المسار أدناه)، ثم المتابعة في المسار مع تطبيق القيم السحرية الخاصة بذلك السيناريو مسبقاً.
  • شريط عينات المستندات. يوجد صف واحد من عينات مستندات البيئة التجريبية (حتى 3) مباشرة أسفل مكوّن رفع/التقاط المستندات. اضغط على أحدها لاستخدامه بدلاً من الرفع الحقيقي.
تُخزن جلسات البيئة التجريبية الوسائط الملتقطة الحقيقية - حيث يتم رفع المستندات، وصورة سيلفي، وفيديو كشف الحيوية، وملفات إثبات العنوان، والاحتفاظ بها تماماً كما هو الحال في جلسة الإنتاج. أما البيانات المستخرجة (حقول التحقق من الهوية، درجات مطابقة الوجه، نتائج كشف الحيوية، وما شابه ذلك) ونتيجة الجلسة نفسها (مقبولة / قيد المراجعة / مرفوضة) فتتم محاكاتها بواسطة السيناريو أو القيمة السحرية - ولا يتم استخلاصها أبداً من الوسائط الملتقطة. تُميز Business Console أقسام البيانات المستخرجة في جلسة البيئة التجريبية بشارة بيانات محاكاة، حتى يتمكن المراجعون من التمييز بنظرة سريعة بين الأجزاء التي تمثل الالتقاط الحقيقي وتلك التي يقودها السيناريو.

السيناريوهات

كل سيناريو عبارة عن حزمة مسماة من القيم السحرية. مرّر الـ slug الخاص به كـ sandbox_scenario عند إنشاء الجلسة (أو إلى endpoint الـ simulate) لإعادة إنتاج النتيجة. توجد سيناريوهات review_* لتتمكن من اختبار تجربة المستخدم للمراجعة اليدوية (قائمة انتظار المراجعة في لوحة التحكم، وأحداث webhook ذات الحالة In Review، وإجراءات القبول/الرفض الخاصة بالمراجِع) دون الحاجة إلى مدخلات تؤدي إلى الرفض المباشر. يضبط سيناريوها kyb_* أعلاه الحقل expected_details.registration_number بدلاً من expected_details.first_name: ينطبقان فقط على جلسات التحقق من الشركات (KYB).

القيم السحرية

القيمة السحرية هي قيمة مدخلة محددة تجعل إحدى الميزات التي يتم محاكاتها تُصدر خطراً معيناً. عيّن حقل الإدخال إلى القيمة السحرية (مباشرةً، أو عبر سيناريو) لتشغيلها.

البحث بدون مستندات ومحافظ الهوية

يمكن لتطبيقات البيئة التجريبية تفعيل كل محفظة هوية في دليل الدول، بما في ذلك المحافظ غير المتاحة في تطبيقات بيئة الإنتاج. يحاكي سيناريو approve الافتراضي هوية تم التحقق منها دون تسجيل الدخول إلى محفظة خارجية. يتم تخزين النتيجة في الجلسة وتتبع الخطوة التالية العادية في سير العمل. لا تتحقق البيئة التجريبية من بيانات اعتماد المحفظة الحقيقية ولا تفرض رسوماً على المحاولات المحاكاة. تظل طلبات البحث تتحقق من صحة الحقول المدخلة وتستخدم الحد المعين للمحاولات، والذي يكون افتراضياً محاولة واحدة. استخدم السيناريوهات التالية لاختبار عمليات إعادة المحاولة وقواعد الرجوع: تتبع حالات فشل المحفظة إعداد الدولة للرجوع إما إلى التقاط المستندات أو الرفض. يتم تسجيل محاولات البحث المكتملة بشكل منفصل، لذا فإن السماح بمحاولتين ينتج نتيجتين قبل تطبيق قاعدة الرجوع. يظل كل استخدام للبيئة التجريبية مجانياً.

التحقق من الحساب في التحقق البنكي

توفر خطوة التحقق البنكي في البيئة التجريبية كلتا الطريقتين في كل دولة، بالترتيب الذي تحدده الخطوة، على خدمة محاكاة دون بنك ودون أي تكلفة. وفقاً للترتيب الافتراضي، يبدأ الشخص بتسجيل الدخول إلى البنك ويختار أدخل بيانات حسابك لتشغيل التحقق من الحساب؛ عيّن bank_method_order إلى ["account_lookup", "open_banking"] للبدء به. تحدد آخر أربعة أحرف من رقم الحساب المكتوب الإجابة؛ راجع اختبارها في البيئة التجريبية للاطلاع على كل نهاية وحساب صالح لكل تنسيق. تستجيب واجهة برمجة تطبيقات التحقق من الحساب لمفتاح البيئة التجريبية بالاعتماد على النهايات نفسها.

المستندات النموذجية

لا تقم مطلقاً برفع مستندات هوية حقيقية في البيئة التجريبية. استخدم المستندات النموذجية المدمجة بدلاً من ذلك.
يقدّم سير العمل المستضاف ثلاثة مستندات نموذجية، واحد لكل نوع مستند: اضغط على نموذج في الشريط لاستخدامه بدلاً من الالتقاط الحقيقي. تأتي البيانات المستخرجة ونتيجة الجلسة دائماً من السيناريو أو القيمة السحرية المحددة، لذلك يعمل أي نموذج مع أي سيناريو.

الهوية النموذجية: اختبار expected_details

يتم اصطناع كل مستند في البيئة التجريبية من هوية مُثبَّتة واحدة. تكون القيم المستخرجة متطابقة في كل جلسة ولا تُشتق أبداً من التاريخ الحالي، مما يتيح لك ملء expected_details بها مسبقاً والتحقق من مقارنة الحقول ومعالجة التحذيرات لديك بشكل شامل من البداية إلى النهاية. مرّر القيم الموضحة أدناه وستنجح عمليات فحص المقارنة؛ ومرّر أي شيء آخر وسينطلق تحذير *_MISMATCH_WITH_PROVIDED المطابق عن قصد. تشترك جميع المستندات النموذجية في التواريخ نفسها: تعتمد بقية بيانات الهوية على المستند الذي تستخدمه:
يُعد first_name وlast_name استثناءً: حيث تعرض البيئة التجريبية الأسماء التي ترسلها في expected_details على المستند المصطنع، وبالتالي ينجح التحقق من تطابق الاسم مع أي اسم. استخدم القيمة السحرية SANDBOX_OCR_FULL_NAME_MISMATCH_WITH_PROVIDED لتجربة عدم تطابق الاسم، وSANDBOX_OCR_DOB_MISMATCH_WITH_PROVIDED لعدم تطابق تاريخ الميلاد.
إذا كان سير العمل لديك يقيّد documents_allowed بدولة أو نوع مستند يستبعد جواز السفر الإلكتروني البرازيلي، فستقوم البيئة التجريبية باصطناع مستند من أول دولة مسموح بها بدلاً من ذلك، وبالتالي ستتبع nationality وid_country واسم المستند تلك الدولة. وتبقى التواريخ أعلاه كما هي.

ما لا يتضمنه المستند المصطنع

المستند المصطنع هو قالب عام للدولة ونوع المستند المسموح بهما، لذا تظل الحقول التي لا يوفرها سوى مستند حقيقي صادر عن جهة حكومية فارغة. والحقل الذي يؤثر على التوجيه هو المنطقة / الولاية الأمريكية (kyc.region): فرخصة القيادة أو بطاقة الهوية الأمريكية في البيئة التجريبية لا تحتوي على ولاية، لذا فإن شرط الفرع مثل Region equals IL لا يمكن أن يتطابق أبداً في البيئة التجريبية، وعندما لا يتطابق أي فرع آخر لتلك العقدة أيضاً، يسلك التدفق الفرع الاحتياطي للعقدة (الفرع الذي لا يحتوي على شروط). هذا لا يعني مراجعةً أو فشلًا للفرع - فالشرط ببساطة لا يجد ما يقرأه. كما يفشل الحقل المفقود أيضاً مع not equals وnot in؛ راجع كيف تقرأ شروط الفرع بيانات الجلسة لمعرفة الفرق بين الحقل المفقود وسلسلة نصية فارغة. لتجربة تدفق يعتمد على الولاية في البيئة التجريبية، وجّه القرار بناءً على قيمة تتحكم بها في الجلسة بدلاً من المستند:
  • أرسل الولاية في metadata عند إنشاء الجلسة (على سبيل المثال "metadata": {"credential_state": "IL"}) وتفرّع بناءً على metadata.credential_state. يتم تقييم البيانات الوصفية في البيئة التجريبية تماماً كما في بيئة الإنتاج.
  • احتفظ بشرط kyc.region المشتق من المستند لحركة المرور في بيئة الإنتاج إذا كنت بحاجة أيضاً إلى المستند لإثبات الولاية؛ ففي بيئة الإنتاج تُقرأ المنطقة من المستند الحقيقي.
كل شيء آخر يتعلق بالتوجيه مطابق لبيئة الإنتاج: حيث تعمل مخططات سير العمل وشروط الفروع وقيم metadata وexpected_details وعقد الإجراءات وعقد الحالة بشكل فعلي تماماً. لا تجبر البيئة التجريبية أي جلسة على الدخول قيد المراجعة من تلقاء نفسها أبداً - تنتهي جلسة البيئة التجريبية بحالة قيد المراجعة فقط عندما يوجّهها سير العمل إلى هناك (سيناريو review_*، أو قيمة سحرية معينة مرتبطة بإجراء مراجعة، أو عقدة حالة في المخطط).

رموز OTP والاشتراك في البريد الإلكتروني

  • رمز OTP للهاتف: يقبل فحص الهاتف في البيئة التجريبية أي رمز ذي تنسيق صحيح (من 4 إلى 8 أرقام؛ بما في ذلك 123456). بينما تُرجع المدخلات ذات التنسيق غير الصحيح الرمز 400.
  • رمز OTP للبريد الإلكتروني: يقبل فحص البريد الإلكتروني في البيئة التجريبية أي رمز ذي تنسيق صحيح (بما في ذلك 123456). بينما تُرجع المدخلات ذات التنسيق غير الصحيح الرمز 400.
بشكل افتراضي، لا ترسل جلسات البيئة التجريبية رسائل بريد إلكتروني (تنبيهات المراجعة، تغيير الحالة، رمز OTP، إعادة التقديم، رابط الجلسة الجديدة، إلخ). لإرسال بريد إلكتروني على أي حال، استخدم أحد أنماط الاشتراك التالية على عنوان المستلم:

توجيه النتائج: السيناريوهات، والقيم السحرية، والتجهيز، وendpoint المحاكاة

توجد خمس طرق للتحكم في نتائج البيئة التجريبية.

1. sandbox_scenario عند إنشاء الجلسة

عيّن المعرّف النصي (slug) للسيناريو عند إنشاء الجلسة (POST /v3/session/). يُوسّع تدفق الإنشاء القيم السحرية المجمّعة في السيناريو إلى حقول الإدخال الخاصة بالجلسة، بحيث يُصدر المزوّدون الوهميون النتيجة المرجوة من خلال مسار سير العمل الفعلي.

2. إدخال القيم السحرية يدويًا

عيّن حقول الإدخال الفردية بنفسك (على سبيل المثال expected_details.first_name = "SANDBOX_OCR_DOCUMENT_EXPIRED"، أو user_email = "sandbox+aml_hit@didit.test"). راجع جدول القيم السحرية أعلاه للاطلاع على السجل الكامل.

3. تجهيز (أو إعادة تجهيز) الجلسة قبل بدء التدفق

عيّن أو استبدل السيناريو المجهّز في جلسة موجودة بالفعل، بشرط ألا تكون قد تجاوزت حالة Not Started. هذا هو الـ endpoint الذي يستدعيه أداة اختيار السيناريو قبل التدفق، ويمكنك استدعاؤه بنفسك لإنشاء أداة اختيار مخصصة أو أداة اختبار:
استجابة 200:
  • قم بالمصادقة باستخدام Session-Token الخاص بالجلسة نفسها (يُعاد كـ session_token من عملية إنشاء الجلسة)، وليس مفتاح API الخاص بتطبيقك: هذا الـ endpoint موجّه للعميل.
  • يُرجع الرمز 400 لمعرّف السيناريو غير المعروف، والرمز 400 بمجرد انتقال الجلسة إلى ما بعد حالة Not Started ("Scenario can only be armed before the verification starts.").
  • يُرجع الرمز 404 عندما ينتمي Session-Token إلى تطبيق في بيئة الإنتاج (غير تجريبي)، أو عندما لا يتطابق مع session_id الموجود في المسار.
  • تؤدي إعادة التجهيز إلى استبدال السيناريو السابق. فهي تمسح فقط القيم السحرية التي كتبها السيناريو السابق، وتترك أي شيء أدخله المستخدم يدويًا بالفعل (البريد الإلكتروني، الاسم الأول، وما إلى ذلك) دون تغيير. على سبيل المثال: قم بتجهيز decline_phone_high_risk، ثم جهّز approve - سيعود رقم الهاتف إلى حالة عدم التعيين، ولكن البريد الإلكتروني الذي أدخله العميل سيبقى محتفظًا به بعد كلا الاستدعاءين.

4. endpoint المحاكاة

فرض حالة نهائية بعد وقوع الحدث:
  • لوحة التحكم / مفتاح API (يتطلب امتياز write:sessions؛ يحتاج مفتاح API المقيّد بالنطاق إلى صلاحية وصول للكتابة على الجلسات): POST /v3/session/{session_id}/simulate/
  • التدفق المستضاف (رأس Session-Token): POST /v3/session/{session_id}/sandbox/simulate/
يعمل كلاهما على جلسات البيئة التجريبية لـ KYC وKYB. تُرجع الجلسة في بيئة الإنتاج (غير التجريبية) الرمز 404، وكذلك يُرجع رأس Session-Token الذي لا يتطابق مع session_id في المسار. كل حقل في نص الطلب اختياري، ولكن يلزم توفير واحد على الأقل من new_status أو scenario أو risk: يُرسل send_webhooks: true نفس الـ webhooks التي يرسلها أي تغيير فعلي للحالة تمامًا: status.updated، بالإضافة إلى أحداث user.status.updated وuser.data.updated (أو business.status.updated وbusiness.data.updated لجلسة شركة) الناتجة عن التغيير، إلى الوجهات المشتركة في هذه الأحداث. مع send_webhooks: false، تتغير الحالة مع ذلك، ولكن لا يتم تسجيل أو إرسال أي webhook. لا تُعيد آلية استرداد webhook الفائت إرسال ذلك القرار أبدًا، وتستمر لوحة التحكم في التحديث بشكل فوري ومباشر. يُرسل تغيير الحالة التالي للجلسة webhooks كالمعتاد.
استجابة 200:
  • status هي الحالة التي ضبطتها المحاكاة، وprevious_status هي الحالة السابقة للجلسة.
  • يعكس scenario المعرّف النصي الخاص بك، ويمثّل risk حالة المخاطر المُطبّقة؛ وتكون قيمة كل منهما null في حال عدم وجود أي منها.
  • يعكس send_webhooks القيمة التي تم تطبيقها.
  • يُرجع الرمز 400 عند وجود سيناريو أو خطر غير معروف، أو عند تعذر اشتقاق new_status، أو لأي قيمة أخرى لـ new_status، أو عندما تكون الجلسة بالحالة المطلوبة بالفعل (["The new status is the same as the current status."]).

5. sandbox_scenario في واجهة برمجة تطبيقات AML المستقلة

لا يتضمن فحص AML في الخلفية أي مستخدم نهائي ولا جلسة لتجهيزها، لذا يُوضع المعرّف النصي في طلب الفحص نفسه (POST /v3/aml/):
  • يُرجع decline_aml_hit تطابقًا واحدًا بهيئة بيئة الإنتاج ويحسم الفحص كـ Declined؛ بينما يحسم review_aml_possible_match الفحص كـ In Review. يترك السيناريو الذي لا يجهّز أي نتيجة لـ AML الفحص سليمًا ونظيفًا.
  • مع save_api_request: true (القيمة الافتراضية)، يتم حفظ الفحص تمامًا كما يحدث مع مفتاح بيئة الإنتاج، بحيث يمكن استخدام request_id المُعاد للوصول إلى GET /v3/session/{request_id}/decision/ وGET /v3/session/{request_id}/generate-pdf/.
  • يُرجع الرمز 400 لمعرّف السيناريو غير المعروف، والرمز 400 عندما ينتمي مفتاح API إلى تطبيق في بيئة الإنتاج.

أين يظهر sandbox_scenario

يُعاد عرض معرّف السيناريو المجهّز (null في حال عدم تجهيز أي سيناريو) عبر بعض الواجهات بينما يُستبعد عمدًا من واجهات أخرى: إذا كان التكامل الخاص بك يحتاج إلى التفرع بناءً على السيناريو المجهّز من جانب الخادم، فاقرأه من غلاف الـ webhook أو من أي من الـ endpoints الخاصة بالقرار (v1 أو v3).

الاستخدام والفوترة

يتم تتبع الاستخدام في البيئة التجريبية، ولا يتم فرض أي رسوم عليه مطلقاً:
  • تسجل كل مكالمة محاكاة حدث استخدام (is_sandbox: true بسعر 0.0000) حتى يكون حجم استخدام البيئة التجريبية مرئياً لأغراض تصحيح الأخطاء، لكنه لا يُضاف أبداً إلى إجمالي استخدامك، ولا يُخصم من الرصيد، ولا يظهر مطلقاً في أي فاتورة.
  • تستبعد واجهات الرصيد، وشحن الرصيد، واستخدام بيئة الإنتاج في Business Console استخدامَ البيئة التجريبية افتراضياً. تقبل endpoints الخاصة باستخدام شحن الرصيد المعامل environment (القيمة الافتراضية live، أو sandbox) حتى يمكن فحص حجم استخدام البيئة التجريبية بشكل منفصل - دائماً بتكلفة صفرية ودون استهلاك من المستوى المجاني.
  • تتم فوترة التحقق من البريد الإلكتروني ورقم الهاتف لكل طلب بدلاً من نتيجة الجلسة، ولا تملك البيئة التجريبية وسيلة لمحاكاة ذلك بالكامل على مستوى طبقة webhook. لا تزال عمليات التحقق من البريد الإلكتروني/الهاتف في البيئة التجريبية تسجل حدث استخدام لكل طلب بسعر 0.0000، تماماً مثل أي ميزة محاكاة أخرى: هذا اختلاف مقبول ومعروف عن سلوك الفوترة في بيئة الإنتاج، وليس خطأً برمجياً.
  • يختلف شكل استجابة التحقق من قواعد البيانات في البيئة التجريبية عمداً عن الشكل المخصص لكل مزود في بيئة الإنتاج، نظراً لعدم وجود مزود حقيقي لمحاكاته. تعامل مع payload الخاصة بالتحقق من قواعد البيانات في البيئة التجريبية كبديل للنتيجة (الحالة ورمز التحذير)، وليس كمعاينة مطابقة تماماً لاستجابة المزود في بيئة الإنتاج.
آخر تعديل في ٧ نوفمبر ٢٠٢٦