الانتقال إلى المحتوى الرئيسي
هذا الدليل يغطي جميع جوانب التكامل لمراقبة المعاملات. يساعدك دليل البدء السريع على التشغيل الأولي، أما هذه الصفحة فتأخذك إلى الإنتاج.

البنية

المصادقة

استخدم ترويسة x-api-key القياسية. تُستخدم المفاتيح نفسها للجلسات والكيانات. راجع مصادقة API.

إرسال معاملة

نقطة نهاية واحدة: POST /v3/transactions/. راجع إرسال المعاملات للاطلاع على المخطط الكامل. الحمولة الدنيا:
حمولة أغنى تتضمن طرق الدفع وسياق الجهاز والخصائص المخصصة:
تُقبل أسماء camelCase البديلة لكل حقل على المستوى الأعلى (txnId، txnDate، type، info، applicant، props، travelRule، includeCryptoScreening)، ويصل تنسيق الإرسال في SDK وتنسيق snake_case إلى المكان نفسه.

نمذجة الأطراف

كل معاملة تتطلب subject (عميلك، أي الطرف الذي تراقبه) وتقبل counterparty اختيارياً (الطرف المقابل). يحمل كل منهما payment_method الخاص به وسياق device اختيارياً. في الاستجابة، تُعاد الأطراف في المصفوفة parties بالأدوار APPLICANT وCOUNTERPARTY. يُخزَّن الطرف الذي لا يحتوي على vendor_data كلقطة خارجية (kind: EXTERNAL) دون كيان مرتبط. راجع حمولة المعاملات للاطلاع على حقول الأطراف.

Idempotency

txn_id (وهو transaction_id الذي ترسله) فريد لكل تطبيق. عند إعادة إرسال transaction_id موجود مسبقاً، تُعيد الواجهة الخطأ 400 مع الرسالة A transaction with this transaction_id already exists. في الحقل transaction_id. وإذا تسابق طلبان متطابقان، يتلقى الطلب الثاني الرد 409. لا يعيد أيٌّ من الردين المعاملة الموجودة. عند الرد 400 أو 409 لتكرار transaction_id، ابحث عن المعاملة الموجودة بدلاً من إعادة الإرسال: اقرأها عبر GET /v3/transactions/{uuid}/ باستخدام uuid من الاستجابة الأولى، أو استخدم transaction_id (معرّف uuid لدى Didit) الذي يحمله حدث webhook transaction.created بجوار txn_id الخاص بك. أنشئ دائماً txn_id من جهتك قبل الإرسال، ولا تعتمد على معرّف تولّده Didit من أجل idempotency. استخدم معرّف قاعدة بياناتك، أو UUID، أو تجزئة (hash) لحقول المعاملة.

الفوري مقابل الدفعات

  • الفوري: الخيار الموصى به لمعظم حالات الاستخدام. أرسل المعاملة لحظة حدوثها في نظامك. تُقيَّم القواعد بشكل متزامن وتعيد القرار.
  • الدفعات / الاستيعاب بأثر رجعي: لاستيعاب البيانات التاريخية، مرّر txn_date بتاريخ في الماضي. تُنفَّذ القواعد أيضاً ويمكنها تفعيل webhooks. لتجنب تفعيل القواعد أثناء الاستيعاب بأثر رجعي، استخدم استيراد CSV من لوحة التحكم مع تفعيل علامة “dry ingest”.

استيعاب البيانات التاريخية

عند الانتقال من نظام مراقبة معاملات آخر:
  1. صدّر معاملاتك التاريخية إلى ملف CSV.
  2. استخدم Transactions → Import history في لوحة التحكم (أو أرسل عبر API ضمن حلقة برمجية) مع txn_date بتاريخ في الماضي.
  3. فعّل القواعد بعد انتهاء الاستيعاب فقط، أو استخدم dry ingest لتخطي تقييم القواعد.
كن حذراً في تقييم القواعد على البيانات التاريخية. فإدخال 6 أشهر من السجل عبر قاعدة “20 تحويلاً خلال 30 يوماً” سيولّد آلاف التنبيهات دفعة واحدة.

Webhooks

اشترك في:
  • transaction.created: كل معاملة مُرسلة.
  • transaction.status.updated: تغييرات الحالة (مثلاً ينقل المحلل المعاملة من IN_REVIEW إلى APPROVED، أو يحدّث فحص AML غير المتزامن الدرجة).
التفاصيل الكاملة: webhook الخاصة بـ TM.

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

راجع حالات TM.

ربط المعاملات بالكيانات

مرّر vendor_data في كل طرف. وتتمثل الفوائد في:
  • تتجمع كل معاملة في ملف المستخدم أو ملف الشركة.
  • تستند قواعد السرعة والسلوك إلى السجل الكامل لتقييم المعاملات.
  • يمتد حظر الكيان تلقائياً إلى المعاملات المستقبلية.
غياب vendor_data لا يُعد خطأً يمنع المعالجة: تُخزَّن المعاملة كلقطة خارجية، لكنك تفقد التجميع على مستوى الكيان.

جلسات المعالجة

عندما يُعيّن إجراء قاعدة معاملةً إلى الحالة AWAITING_USER، ينشئ Didit تلقائياً جلسة المعالجة التصحيحية، وهي جلسة تحقق مستضافة قياسية لنفس vendor_data. تحدد القواعد المخصصة دائماً سير العمل مباشرةً في الإجراء نفسه. أما في قواعد المكتبة المدمجة، فيُرجَع إلى سير عمل المعالجة في إعدادات المعاملات، ثم إلى سير المصادقة البيومترية في تطبيقك (عندما يكون للمستخدم وجه مرجعي مخزَّن)، ثم إلى سير العمل الافتراضي في تطبيقك. لا تنطبق هذه الآلية الاحتياطية التلقائية على معاملات Travel Rule، إذ يكون إجراؤها المعلّق هو إثبات ملكية المحفظة. تتضمن المعاملة (الاستجابة وكل قراءة لاحقة وكل webhook) هذه الجلسة في كتلة action_required القياسية:
remediation مُبقاة للتوافق مع الإصدارات السابقة، أما action_required فهي الكتلة القياسية، وتتضمن أيضاً إجراءات wallet_ownership لتحويلات Travel Rule. لا يغيّر إجراء wallet_ownership حالة المعاملة بمفرده: تحتفظ المعاملة بالحالة التي تمنحها إياها قواعدك، وغالباً ما تكون APPROVED، لذا تحقق من action_required في كل استجابة، لا في حالة AWAITING_USER وحدها. يُكمل المستخدم التحقق. في سير عمل المصادقة البيومترية، يلتقط المستخدم صورة سيلفي مع فحص الحيوية تُطابَق مع الوجه الذي التُقط عند التسجيل الأصلي في KYC، وهي أقوى خطوة تحقق إضافية لـالمعاملات عالية القيمة. عندما تصل الجلسة إلى قرار، تتبع المعاملة هذا القرار تلقائياً: APPROVED (decision_reason_code: user_action_approved)، أو DECLINED (user_action_declined)، أو IN_REVIEW (user_action_in_review)، ويُرسَل webhook من نوع transaction.status.updated.
يمكن اختيار أي نوع من أنواع سير العمل باستثناء KYB. يتطلب سير عمل المصادقة البيومترية (وسير العمل الذي تُنفَّذ فيه مطابقة الوجه قبل التحقق من الهوية) أن يكون لدى المستخدم وجه مرجعي مخزَّن من عملية تحقق مقبولة مسبقاً. أما المستخدمون الذين لا يملكون وجهاً مرجعياً فيُوجَّهون إلى سير العمل الافتراضي في تطبيقك بدلاً من ذلك، مع ملاحظة تُسجَّل في المعاملة توضح هذا الاستبدال.

أفضل الممارسات

حدود المعدل

راجع تحديد معدل الطلبات. يُعد إنشاء المعاملة أحد endpoint الأعلى من حيث معدل معالجة الطلبات. تبلغ الحدود المعتادة مئات الطلبات في الثانية. توخَّ الحذر عند إرسال دفعات الطلبات.

الخطوات التالية

المعاملات

المرجع الكامل لـ payload.

القواعد

كيفية تقييم القواعد.

webhook

كتالوج الأحداث.

استكشاف الأخطاء وإصلاحها

أكثر مشكلات التكامل شيوعاً.
آخر تعديل في ٧ نوفمبر ٢٠٢٦