> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# إضافة KYC لووردبريس: التحقق من العمر في WooCommerce

> إضافة Didit لووردبريس وWooCommerce للتحقق من الهوية وتقييد العمر وKYC دون كود. من $0.33 لكل فحص KYC كامل، و$10 مجاناً شهرياً، بدون عقود.

Add Didit identity verification and age gating to any WordPress site or WooCommerce store. The plugin works as a secure backend proxy, so your API key stays on the server. It provides shortcodes, a WooCommerce checkout gate, and developer hooks, so you can add verification without writing JavaScript.

## المتطلبات الأساسية

* WordPress 6.0 أو أحدث
* PHP 7.4 أو أحدث
* حساب في [Didit Console](https://business.didit.me)

## الخطوة 1: احصل على بيانات اعتماد Didit الخاصة بك

1. سجّل الدخول أو أنشئ حسابًا على **[business.didit.me](https://business.didit.me)**
2. انتقل إلى **API وwebhook** وانسخ **مفتاح API**
3. انتقل إلى **Workflows**، وأنشئ سير عمل أو اختر واحدًا، ثم انسخ **Workflow ID**

> [!NOTE]
>
> يمكنك استخدام **عنوان UniLink** لمعاينة مسار التحقق دون مفاتيح API.
> استخدم وضع **API Session** مع مفتاح API ومعرّف سير العمل لبوابات المحتوى ومتطلبات التحقق في WooCommerce.
> إكمال UniLink وحده لا يفتح المحتوى المحمي ولا يوافق على الطلب.

## الخطوة 2: ثبّت الإضافة

1. نزّل الملف `didit-verify-0.3.4.zip` من **[إصدار 0.3.4](https://github.com/didit-protocol/plugin-wordpress/releases/tag/v0.3.4)**
2. في لوحة إدارة WordPress، انتقل إلى **Plugins → Add New → Upload Plugin**
3. اختر ملف ZIP الذي نزّلته، ثم انقر **Install Now**
4. انقر **تفعيل**

> [!NOTE]
>
> تظهر Didit Verify أيضًا في [WordPress.org](https://wordpress.org/plugins/didit-verify/).
> تحقق من الإصدار قبل التثبيت: استخدم الإصدار 0.3.4 أو أحدث للحصول على سلوك التحقق المؤكد من الخادم الموضّح هنا.
> ابتداءً من الإصدار 0.3.4، يُسحب الوصول إلى المحتوى المحمي عندما يُرفض تحقق سبق قبوله أو تنتهي صلاحيته أو يعود إلى المراجعة.
> إذا كان الدليل يحتوي على إصدار أقدم، فثبّت ملف ZIP للإصدار المذكور أعلاه.

> [!WARNING]
>
> بعد الترقية من إصدار أقدم من 0.3.2، يجب على المستخدمين الذين لم يؤكد الخادم موافقتهم السابقة أن يعيدوا التحقق قبل الوصول إلى المحتوى المحمي أو إتمام عملية دفع تتطلب التحقق.

## الخطوة 3: اضبط الإضافة

انتقل إلى **الإعدادات → Didit Verify**.

### اختر وضعك

| الوضع | الأنسب لـ | ما تحتاجه |
| - | - | - |
| **UniLink** | الاختبار السريع | رابط UniLink فقط من سير العمل الخاص بك |
| **API Session** (موصى به) | الاستخدام في الإنتاج | Workflow ID + مفتاح API |

**لوضع UniLink:** اضبط Mode على "UniLink"، والصق الرابط، ثم احفظ.

**لوضع API Session:** اضبط Mode على "API Session"، وأدخل Workflow ID ومفتاح API، ثم احفظ.

> [!NOTE]
>
> يُخزَّن مفتاح API بأمان على خادمك ولا يُكشف للزوّار مطلقًا.

### اضبط خيارات الجلسة (وضع API فقط)

هذه إعدادات اختيارية تمنحك تحكمًا أكبر:

* **Vendor Data**: يربط كل عملية تحقق بمستخدم محدد في لوحة تحكم Didit، فيتيح لك تتبع من قام بالتحقق. القيمة الافتراضية هي معرّف مستخدم WordPress (مثل `wp-42`). يمكنك أيضًا اختيار بريد المستخدم الإلكتروني، أو بادئة مخصصة، أو تعطيله.
* **Callback URL**: صفحة على موقعك يُعاد إليها المستخدمون بعد التحقق. يضيف Didit المعاملين `verificationSessionId` و`status` كمعاملات استعلام.
* **Callback Method**: الجهاز الذي يتعامل مع إعادة التوجيه: `initiator` (الجهاز الذي بدأ العملية)، أو `completer` (الجهاز الذي أنهاها)، أو `both`.
* **Language**: اختر من بين 54 لغة، أو دع الإضافة تكتشف اللغة تلقائيًا من المتصفح.

### اضبط خيارات العرض

* **Display Mode**: Modal (نافذة منبثقة فوق الصفحة) أو Embedded (مدمج داخل الصفحة)
* **Close Button**: إظهار زر X في النافذة المنبثقة أو إخفاؤه
* **Exit Confirmation**: عرض مربع حوار "هل أنت متأكد؟" عند الإغلاق
* **Auto-close**: إغلاق النافذة المنبثقة تلقائيًا عند اكتمال التحقق
* **Debug Logging**: تسجيل أحداث SDK في وحدة تحكم المتصفح (للمساعدة في استكشاف الأخطاء)

### خصّص الزر

ضمن **Button Appearance**، يمكنك تغيير:

* نص الزر ونص النجاح
* لون الخلفية ولون النص
* نصف قطر الحواف والحشو وحجم الخط

تُحدَّث المعاينة المباشرة فورًا عند تغيير أي قيمة.

## الخطوة 4: أضف التحقق إلى موقعك

### لمتاجر WooCommerce

1. في **الإعدادات → Didit Verify → WooCommerce**، فعّل **Require identity verification at checkout**
2. اختر مكان ظهور قسم التحقق:
   * أعلى صفحة الدفع
   * بعد تفاصيل الفوترة
   * بعد ملاحظات الطلب
   * قبل **Place Order** (موصى به)
3. اختياريًا، اختر **Product Scope**: جميع المنتجات (الخيار الافتراضي)، أو المنتجات المحددة فقط، أو جميع المنتجات باستثناء المحددة.
   علّم المنتجات بمربع **Didit verification** ضمن **Product data → Advanced** في محرر المنتج.
   تتطلب السلة التي تحتوي على منتج واحد على الأقل يحتاج إلى التحقق هذا التحقق.
   ينطبق النطاق على وضعي الدفع والوضع بعد الشراء معًا.
4. اختياريًا، عدّل **Section Title** و**Checkout Message** و**Post-purchase Message** ضمن **الإعدادات → Didit Verify → WooCommerce**؛ إذا تُركت الحقول فارغة يُستخدم النص الافتراضي.
5. اختياريًا، فعّل **Send Billing Data** لإرسال اسم العميل وبريده الإلكتروني وهاتفه وعنوانه تلقائيًا إلى Didit لتعبئتها مسبقًا والتحقق من صحتها بشكل متبادل.

> [!NOTE]
>
> تُحوَّل رموز الدول تلقائيًا من صيغة alpha-2 في WooCommerce إلى صيغة alpha-3 التي يطلبها Didit.

يجب أن يحصل العملاء على قرار بحالة «مقبولة» يؤكده الخادم قبل أن يتمكنوا من تقديم الطلب.
ينطبق هذا على الدفع الكلاسيكي والدفع بنمط الكتل معًا.
تتحقق الإضافة من أن الجلسة تعود إلى المتسوق الحالي وأنها لم تُستخدم لطلب آخر من قبل.
يُحفظ معرّف الجلسة في الطلب للرجوع إليه.

إذا اخترت **After purchase**، يبقى الطلب معلّقًا حتى يؤكد الخادم الموافقة.
يمكن للعملاء الضيوف إجراء التحقق من صفحة الطلب باستخدام مفتاح الطلب الصالح.
اضبط عنوان webhook والسر المعروضين في **الإعدادات → Didit Verify**، حتى تتمكن تحديثات الحالة الموقّعة من الإفراج عن الطلبات المقبولة.

### لأي صفحة في WordPress

أضف هذا الرمز القصير إلى أي صفحة أو مقالة:

```
[didit_verify]
```

سيظهر زر التحقق، بتنسيق يطابق إعدادات **Button Appearance**.

يمكنك تغيير النص لكل صفحة على حدة:

```
[didit_verify text="Verify Now" success_text="Done!"]
```

أو فرض الوضع المدمج على صفحة معينة:

```
[didit_verify mode="embedded"]
```

## الخطوة 5: تقييد المحتوى على المستخدمين الموثَّقين (اختياري)

أظهر المحتوى أو أخفِه بناءً على حالة التحقق:

بوابات المحتوى تتطلب مستخدمًا مسجَّل الدخول وموافقة مؤكدة عبر وضع API Session. لا تمنح الاستدعاءات الراجعة من المتصفح ومعلمات الاستعلام في عمليات إعادة التوجيه أي وصول.

```
[didit_gate]
This content is only visible to verified users.
[/didit_gate]
```

يرى المستخدمون غير الموثَّقين رسالة وزر تحقق. يمكنك تخصيص الرسالة:

```
[didit_gate message="Please verify to continue."]Secret content here.[/didit_gate]
```

اعرض حالة التحقق للمستخدم في أي مكان:

```
[didit_status]
```

يعرض "Identity Verified" أو "Not Verified" للمستخدم المسجَّل الدخول.

## التحقق من حالة التحقق

| المكان | الطريقة |
| - | - |
| **لوحة الإدارة** | **Users → All Users**، يعرض عمود "Didit" علامة ✓ للمستخدمين الموثَّقين |
| **طلبات WooCommerce** | يظهر معرّف جلسة Didit في تفاصيل الطلب |
| **الشيفرة القصيرة** | `[didit_status]` يعرض الحالة في أي صفحة |

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

| المشكلة | الحل |
| - | - |
| "Creating session..." لا ينتهي | تحقق من صحة Workflow ID ومفتاح API في **Settings → Didit Verify** |
| النافذة المنبثقة لا تفتح | تأكد من أن الصفحة تحتوي على `[didit_verify]` أو أن التحقق في صفحة الدفع في WooCommerce مفعّل |
| واجهة التحقق بلغة خاطئة | غيّر إعداد **اللغة** في **Session Options** |
| تحتاج إلى تصحيح الأخطاء | فعّل **Debug Logging** في **Display Options**، ثم افتح وحدة تحكم المتصفح (F12) لمشاهدة أحداث SDK |

## الأمان

يعمل المكوّن الإضافي كوكيل خلفي آمن. مفتاح API الخاص بك لا يصل إلى المتصفح أبدًا. كل طلب جلسة محمي بما يلي:

1. **CSRF nonce**: يجب أن تصدر الطلبات من موقع WordPress الخاص بك
2. **شرط تسجيل الدخول**: المستخدمون المسجَّلون فقط يمكنهم إنشاء الجلسات (قابل للتهيئة)
3. **تقييد المعدل**: 10 جلسات/ساعة لكل مستخدم، و3/ساعة لكل عنوان IP للزوار
4. **تعقيم المدخلات**: جميع الحقول مُدرجة في القائمة البيضاء ومعقّمة على الخادم

يربط إنشاء الجلسة التحقق بالمتسوق أو الطلب الحالي. يتحقق المكوّن الإضافي من القرارات عبر Didit API أو webhook تم التحقق منه قبل وسم المستخدم أو الطلب بحالة "مقبولة". يمكن للدفع كضيف إنشاء جلسة عند الحاجة إلى التحقق، حتى لو كان شرط تسجيل الدخول العام مفعّلاً. يتطلب التحقق بعد الشراء أيضًا «مفتاح طلب صالح».

***

## للمطورين

### خطافات PHP

يُطلق المكوّن الإضافي إجراءات WordPress يمكن للمكونات الإضافية أو القوالب الأخرى الارتباط بها:

```php theme={null}
// When a user completes verification
add_action('didit_verification_completed', function ($user_id, $session_id, $status) {
    // Update CRM, send email, grant access, etc.
}, 10, 3);

// When a user cancels verification
add_action('didit_verification_cancelled', function ($user_id, $session_id) {
    // Log cancellation
}, 10, 2);

// When a session is created server-side
add_action('didit_session_created', function ($url, $user_id, $vendor_data) {
    // Log, notify, etc.
}, 10, 3);
```

### حدث JavaScript

يُرسَل حدث DOM عند انتهاء التحقق:

```javascript theme={null}
document.addEventListener('didit:complete', function (e) {
    console.log('Result:', e.detail); // { type, session }
});
```

### التحقق من حالة التحقق في PHP

```php theme={null}
$is_verified = Didit_Verify::init()->is_user_verified($user_id);
```

استخدم هذه الدالة المساعدة لتضمين فحص تأكيد الخادم.
لا تمنح الوصول استنادًا إلى بيانات المستخدم الوصفية القديمة أو إلى حدث المتصفح `didit:complete` وحده.

## المصادر

* [كود المكوّن الإضافي المصدري (GitHub)](https://github.com/didit-protocol/plugin-wordpress)
* [وثائق Didit API](https://docs.didit.me/ar.md)
* [Didit Console](https://business.didit.me)
* [مرجع Create Session API](https://docs.didit.me/ar/sessions-api/create-session.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.