> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# التحقق من توقيع Webhook & عدم تكرار المعالجة

تقوم Webhooks بإبلاغ الطرف الخلفي الشريك عن التغيرات غير المتزامنة في حالة الأعمال. نظرا لأن إعادة التسليم قد تتم إعادة تجربته، يجب على كل مستقبل التحقق من التوقيع قبل تحليل البيانات الموثوقة ويجب عليه معالجة الحدث بشكل متكامل.

<h2 id="webhook-headers">
  رؤوس Webhook
</h2>

| الرأس               | الوصف                     |
| ------------------- | ------------------------- |
| طابع الزمني X-Agent | طابع زمني ليونكس في ثوان. |
| إكس-إيجنت-نونس      | حماية إعادة اللعب.        |
| توقيع العميل X      | HMAC- توقيعSHA256 .       |

```text
timestamp + nonce + rawBody
```

استخدم جسم الطلب الخام المستلم عبر HTTP عند إعادة بناء القيمة الموقعة. تحليل وإعادة تسلسل JSON أولا يمكن أن يغير المساحة البيضاء أو ترتيب الحقول وينتج توقيعا مختلفا.

<h2 id="verification-flow">
  تدفق التحقق
</h2>

1. اقرأ الطابع الزمني والنونس والرؤوس التوقيعية.
2. التقاط جسم الطلب الخام غير المعدل.
3. بناء `timestamp + nonce + rawBody`.
4. احسب HMAC-SHA256 مع الشريك API السر.
5. مقارنة التواقيع المحسوبة والاستلمامة باستخدام مقارنة زمنية ثابتة.
6. تطبيق فحوصات الطابع الزمني المعتمد للحداثة وعدم إعادة الاستخدام.
7. تحليل ومعالجة الحدث فقط بعد نجاح التحقق.

عندما يتوفر متحقق رسمي Agent SDK ، استخدمه بدلا من الحفاظ على رمز توقيع مستقل.

<h2 id="order-idempotency">
  القدرة على الأمر
</h2>

| القضية           | التحكم                                           |
| ---------------- | ------------------------------------------------ |
| طلب النقل الأولي | أنشئ نموذجا فريدا عالميا agentOrderNo.           |
| HTTP وقت مستقطع  | استفسر عن agentOrderNo الأصلي قبل إنشاء  جديد.   |
| PROCESSING الرد  | انتظر حالة webhook أو طلب الاستعلام.             |
| تكرار الشبكة     | إزالة التكرار حسب مفتاح الهوية والحالة النهائية. |

<h2 id="recommended-idempotency-record">
  سجل المقاومة الذاتية الموصى به
</h2>

تخزين معلومات كافية للتعرف على تكرار التسليم واستعادة العدوى بأمان:

| الميدان                | الغرض                                          |
| ---------------------- | ---------------------------------------------- |
| مفتاح الحدث أو الأعمال | يحدد الإشعار أو العملية بشكل فريد.             |
| رقم طلب الشريك         | يربط الحدث بالطلب الأصلي.                      |
| تجزئة الحمولة          | يساعد في تحديد الحمولات المتضاربة المتكررة.    |
| حالة المعالجة الحالية  | الجوائز المستلمة، المعالجة، الناجحة، والفاشلة. |
| الوضع التجاري النهائي  | يمنع تطبيق إجراء الطرف مرتين.                  |
| الطابع الزمني المعالج  | يدعم سياسات التحقيق والاحتفاظ بالأفراد.        |

قم بتسجيل التغيير التجاري وسجل الهوية في نفس المعاملة حيثما أمكن. يجب أن يعيد الحدث المتكرر النتيجة المعروفة مسبقا بدلا من تطبيق الرصيد أو الأمر أو تغيير المستخدم مرة أخرى.

<h2 id="timeout-and-retry-rule">
  قاعدة الوقت المستقطع وإعادة المحاولة
</h2>

مهلة HTTP لا تثبت فشل الطلب الأصلي. استفسر عن العملية باستخدام `agentOrderNo`الأصلي، أو انتظر الرابط الإلكتروني الخاص به، قبل أن تقرر ما إذا كان هناك حاجة لإجراء آخر. إنشاء رقم أمر تجاري جديد بعد كل مهلة نهاية قد يسبب تحركات أموال مكررة.

<h2 id="production-checklist">
  قائمة تحقق الإنتاج
</h2>

* التحقق من التوقيع قبل JSON التحليل أو المعالجة التجارية.
* الحفاظ على الجسم الخام بشكل مستقل عن الحمولة المحللة.
* رفض الطلبات القديمة أو المعاد تشغيلها وفقا لسياسة التكامل المعتمدة.
* جعل معالجة الأحداث آمنة للتسليم المتكرر أو خارج الطلب.
* تسجيل معرفات الأحداث، أرقام أوامر الشركاء، نتائج المعالجة، ووقت الطلب.
* حجب الأسرار وقيم التوقيع من السجلات والمرفقات الداعمة.

<h2 id="related-docs">
  وثائق ذات صلة
</h2>

#### [الأسرار والتوقيع HMAC](/ar/sdk/security/secrets-signing)

احم API السر المستخدم في التحقق من الطلبات والويبهوك.

#### [نظرة عامة Agent SDK](/ar/sdk/agent-sdk/overview)

راجع سير عمل التكامل الكامل للواجهة الخلفية.

#### [SDK استكشاف الأخطاء](/ar/sdk/security/troubleshooting)

التحقيق في التواقيع المرفوضة، والأحداث المتكررة، والعمليات المعلقة.