> ## 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.

# تطبيق التحقق من الهوية لـ Salesforce: KYC وKYB

> حزمة Salesforce مُدارة جاهزة للتحقق من الهوية وKYC وKYB. إعداد دون كود، من $0.33 لكل فحص KYC كامل، و$10 مجاناً شهرياً، بلا عقود.

أضِف التحقق من الهوية عبر Didit إلى Salesforce Sales Cloud / Service Cloud باستخدام الحزمة المُدارة الخاصة بنا. يُضاف المكوّن إلى صفحات سجلات Contact و Lead، وينشئ الجلسات عبر مؤسستك باستخدام Apex (يبقى مفتاح API الخاص بـ Didit داخل Salesforce)، ويكتب النتائج إلى الحقول القياسية في السجل حتى تتمكن Flows و Reports من اتخاذ إجراءات بناءً عليها. يتيح **Invocable Action** المدمج لـ Flow Builder تشغيل عمليات التحقق تلقائياً، على سبيل المثال عند إنشاء Lead جديد.

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

* مؤسسة Salesforce (إصدار Enterprise أو أعلى؛ أو إصدار Developer للاختبار)
* حساب في [Didit Console](https://business.didit.me) مع سير عمل مُهيَّأ
* صلاحية تثبيت الحزم المُدارة وإنشاء Sites في Setup

***

### الخطوة 1: تثبيت التطبيق

يثبّت الرابط أدناه الحزمة المنشورة **DiditVerifyManaged 1.0.0.2**.
تثبيت الحزمة منفصل عن الموافقة على إدراج التطبيق في السوق.

1. افتح رابط التثبيت: [[https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU](https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU)
2. اختر **Install for Admins Only** أثناء تهيئة التكامل واختباره.
   امنح الوصول للمستخدمين المقصودين بعد التحقق من إعداداتك.

![تثبيت تطبيق Didit في Salesforce](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/install-package.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8758cc01110ca562d2e88b7cb76a9ab5)

3. انقر على **Install**

***

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

#### احصل على مفتاح API (لوضع API)

1. سجّل الدخول إلى [Didit Business Console](https://business.didit.me)
2. انتقل إلى **API & Webhooks** في الشريط الجانبي الأيسر
3. انسخ مفتاح API الخاص بك

![كيفية الحصول على مفتاح API من Didit Business Console](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-api-key.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=9027ca685cc296a400e78d320a566453)

#### احصل على مُعرّف سير العمل

1. في Didit Business Console، انتقل إلى **Workflows**
2. اختر سير العمل الذي تريد استخدامه (أو أنشئ واحداً جديداً)
3. انسخ **Workflow ID** (وهو UUID بالشكل `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)

![كيفية الحصول على مُعرّف سير العمل من Didit Business Console](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-workflow-id.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=529dc681169efc0a6cdc96d6c0e0a605)

***

### الخطوة 3: هيّئ إعدادات Didit

1. انقر على **App Launcher** (أيقونة الشبكة في أعلى اليسار) وابحث عن **"Didit"**

![كيفية الدخول إلى تطبيق Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/app-launcher-search-didit.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=1a2fb9eee64fa9735b29e4d64a20e56e)

2. افتح تطبيق **Didit**، وستصل مباشرة إلى علامة التبويب **Didit Settings**
3. أدخل بيانات الاعتماد والتفضيلات الخاصة بك:

| الحقل | الوصف | الافتراضي |
| - | - | - |
| **Mode** | `api` (موصى به) أو `unilink` | `api` |
| **Didit API Key** | مفتاح API الخاص بـ Didit (لوضع API فقط) | — |
| **Workflow ID** | مُعرّف سير عمل Didit الخاص بك (لوضع API فقط) | — |
| **Webhook Secret** | السر المشترك لـ HMAC من Didit Console → API & Webhooks. مطلوب لاستقبال تحديثات التحقق الفورية. إذا تُرك فارغاً، فسيتم رفض جميع webhook الواردة. | — |
| **UniLink URL** | رابط التحقق الثابت (لوضع UniLink فقط) | — |
| **Display Mode** | `modal` (نافذة منبثقة) أو `embedded` (مضمّن في الصفحة) | `embedded` |
| **Vendor Data** | `record_id` أو `record_email` أو `custom prefix + record id` أو `none` | `record_id` |
| **Language** | رمز اللغة (مثل `en` و`es` و`fr`) | `Auto detect by browser` |
| **Auto Send Contact Data** | ملء بيانات التحقق مسبقاً من بيانات السجل | `true` |
| **Show Close Button** | إظهار زر X في النافذة المنبثقة | `true` |
| **Exit Confirmation** | طلب التأكيد قبل إغلاق النافذة المنبثقة | `true` |
| **Auto-close on Complete** | إغلاق النافذة المنبثقة تلقائياً بعد الإكمال | `false` |
| **Debug Logging** | تفعيل تسجيل وحدة التحكم في المتصفح | `false` |
| **Button Text** | نص زر التحقق | `Verify Identity` |
| **Button Success Text** | النص بعد اكتمال التحقق | `Identity Verified` |
| **Button Color** | لون خلفية الزر بالترميز السداسي | `#2667ff` |

4. انقر على **Save Settings**

### الخطوة 4: أضف المكوّن إلى صفحات السجلات

1. انتقل إلى سجل **Contact** أو **Lead**

![عرض صفحة جهة الاتصال](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-1.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=0a5d3676ade4b7d2e4334df2305ae050)

2. انقر على **أيقونة الترس → Edit Page** (أو Setup → Object Manager → Contact/Lead → Lightning Record Pages)

![عرض تفاصيل جهة الاتصال](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-2.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=68b8d16948761de61d5ee8a4c5dcc0f2)

3. في Lightning App Builder، اسحب **Didit Identity Verification** من لوحة المكوّنات

![سحب مكوّن Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/drag-didit-component.gif?s=f34880744041ffa63271a683a641b3ba)

4. انقر على **Save** ثم **Activate** للصفحة، واختر "Assign as Org Default" عند التفعيل، وشاهد الفيديو:

![حفظ الصفحة وتفعيلها مع مكوّن Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/save-and-activate.gif?s=2f9f3fffb2fed482ea524236b5ad910d)

5. يستخدم المثال أعلاه صفحة سجل Contact، والخطوات نفسها تنطبق على صفحات سجلات Lead.

## كيفية العمل

### وضع API (موصى به)

1. يضغط المستخدم على **Verify Identity** في سجل Contact/Lead
2. ينشئ Apex جلسة عبر Didit API (يبقى مفتاح API على الخادم)
3. يفتح Didit SDK مسار التحقق، إما كطبقة منبثقة أو كعرض مدمج داخل الصفحة، وذلك حسب إعداد Display Mode لديك
4. عند الانتهاء، يُحدَّث السجل تلقائياً:
   * `Verification Status` ← نتيجة الجلسة (`Approved`، `Declined`، `In Review`، وغيرها)
   * `Identity Verified` ← `true` عند Approved؛ و`false` عند Declined
   * الطابع الزمني `Verified At` و`Didit Session ID`
   * `Verified Document Type` و`Document Expiry Date` و`AML Check Status` (تُملأ عبر webhook، انظر أدناه)
5. يعرض المكوّن حالة التحقق ونوع المستند وتاريخ الانتهاء ونتيجة AML مباشرة داخل الصفحة، دون الحاجة إلى أي إعداد لتخطيط الصفحة

### وضع UniLink

1. يضغط المستخدم على **Verify Identity**
2. يُفتح رابط UniLink ثابت في نافذة منبثقة أو في iframe (لا حاجة إلى استدعاء API)
3. عند الانتهاء، تُحفظ النتيجة في السجل

### التحديثات التلقائية للتحقق (Webhooks)

عند اكتمال جلسة التحقق (سواء كان الوكيل يتابع الصفحة أم لا)، يرسل Didit webhook إلى مؤسسة Salesforce الخاصة بك لتحديث سجل Contact/Lead تلقائياً. يتطلب ذلك إعداد Salesforce Site مرة واحدة.

#### لماذا يلزم هذا؟

لا تقبل Salesforce طلبات HTTP واردة من خدمات خارجية دون endpoint عام. ينشئ Salesforce Site هذا الـendpoint حتى يتمكن Didit من دفع نتائج التحقق مباشرة إلى مؤسستك في الوقت الفعلي.

#### الخطوة 1: انتقل إلى Setup > Sites

في Salesforce، انقر على **أيقونة الترس > Setup**. في مربع Quick Find، اكتب **Sites** وانقر عليه ضمن **Sites and Domains**.

![الخطوة 1 - البحث عن Sites](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-search.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=07d8ca3804316538de6d15b6ccb39caf)

إذا كانت هذه أول مرة، فحدِّد **"I have read and accepted the Salesforce Site Terms of Use"** وانقر على **Register My Salesforce Site Domain**.

![الخطوة 1 - صفحة Sites مع تسجيل النطاق](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-registered.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=9a89d50c21cfc4911cf707a111f963ad)

#### الخطوة 2: إنشاء Site جديد

انقر على زر **جديد** في قائمة Sites. املأ الحقول التالية:

* **Site Label**: `DiditWebhook`
* **Site Name**: يُملأ تلقائياً بالقيمة `DiditWebhook`
* **Default Web Address**: `didit`
* **Active**: محدَّد
* **Active Site Home Page**: `InMaintenance`

اترك جميع الحقول الأخرى بقيمها الافتراضية وانقر على **حفظ**.

![الخطوة 2 - نموذج Site جديد](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step2-new-site-form.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=d5869ff430f4050ebde176ff6020c260)

#### الخطوة 3: تحقق من إنشاء Site

بعد الحفظ، ستظهر صفحة تفاصيل Site. دوِّن **Site URL**، وسيبدو على النحو التالي `https://your-org.develop.my.salesforce-sites.com/didit`. ستحتاج إليه لاحقاً.

![الخطوة 3 - تم إنشاء Site](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step3-site-created.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=daa8ed30fedd1369d33abe13828ddb12)

#### الخطوة 4: امنح Guest User صلاحية الوصول إلى فئة webhook

في صفحة تفاصيل Site، انقر على **Public Access Settings**. يفتح هذا ملف تعريف Guest User. مرّر إلى الأسفل حتى **Enabled Apex Class Access** وانقر على **تعديل**. حدِّد **DiditWebhookReceiver** من قائمة Available وانقر على **إضافة** لنقلها إلى قائمة Enabled. انقر على **حفظ**.

![الخطوة 4 - Apex Class Access](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step4-apex-class-access.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8bcfbece75a5a7864e8e1ab8fc07db9d)

#### الخطوة 5: اضبط webhook في وحدة تحكم Didit

1. انتقل إلى [business.didit.me](https://business.didit.me) > **API وwebhook**
2. اضبط **رابط Webhook** على: `https://your-org.develop.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`

> **ملاحظة:** تعتمد تنسيق النطاق الدقيق على نوع مؤسستك. تتضمن مؤسسات Developer Edition النطاق `.develop` في الرابط. أما مؤسسات الإنتاج فتستخدم `https://your-org.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`. انسخ الرابط دائماً من صفحة تفاصيل Site (الخطوة 3) للتأكد.

3. انسخ **المفتاح السري لـ webhook**
4. في Salesforce، انتقل إلى **Didit Settings** والصق السر في حقل **Webhook Secret**
5. انقر على **Save Settings**

هذا كل شيء. ابتداءً من الآن، ستُحدّث كل نتيجة تحقق سجل Contact/Lead تلقائياً، حتى لو لم يكن أحد يفتح صفحة Salesforce.

#### ما الذي يحفظه webhook

عندما يرسل Didit webhook، يُحدَّث سجل Contact أو Lead تلقائياً.

**يُحدَّث دائماً، بغض النظر عن نوع سير العمل:**

| الحقل | ما يخزنه |
| - | - |
| **Verification Status** | `Approved`، `Declined`، `In Review`، `In Progress`، `Abandoned` |
| **Identity Verified** | `true` عند Approved؛ و`false` عند Declined أو Abandoned |
| **Verified At** | الطابع الزمني لنتيجة Approved |
| **Didit Session ID** | معرّف الجلسة UUID |

**يُحدَّث فقط عند تضمين الميزة في سير العمل:**

| الحقل | يتطلب |
| - | - |
| **Verified Document Type** | التحقق من الهوية في سير العمل لديك |
| **Document Expiry Date** | التحقق من الهوية في سير العمل لديك |
| **AML Check Status** | فحص AML في سير العمل لديك |
| **Verification Decline Reasons** | التحقق من الهوية في سير العمل لديك |

إذا لم تكن الميزة مفعّلة في سير عمل Didit لديك، فستبقى الحقول المقابلة فارغة ببساطة، ولن يتعطل أي شيء.

كما يُنشأ سجل فرعي **Didit Verification** (`Didit_Verification__c`) لكل جلسة، ليمنحك سجل التدقيق كاملاً مع تفاصيل إضافية (رقم المستند، ودولة الإصدار، والاسم الوارد في المستند، وتاريخ الميلاد، ودرجة مطابقة الوجه، ودرجة كشف الحيوية، وعدد تطابقات AML)، وذلك أيضاً فقط للميزات المضمّنة في سير العمل.

يمكنك إضافة القائمة المرتبطة **Didit Verifications** إلى تخطيط صفحة Contact/Lead لعرض السجل.

### أتمتة Flow (إجراء Invocable)

تتضمن الإضافة إجراء Invocable Apex يمكن لـ Salesforce Flows استدعاؤه لتشغيل التحقق تلقائياً:

1. في Flow Builder، أضف عنصر **الإجراء**
2. ابحث عن **"Create Didit Verification Session"**
3. مرّر معرّف سجل Contact أو Lead
4. يعيد الإجراء القيم `url` و`sessionId` و`success` و`error`
5. استخدم الرابط في إجراء **Send Email** أو **Send Notification** لإرساله إلى العميل

**أمثلة على حالات الاستخدام:**

* **عند إنشاء Lead**: أرسل تلقائياً رابط التحقق إلى كل Lead جديد
* **مراقبة انتهاء صلاحية المستند**: أنشئ Scheduled Flow يعمل يومياً، ويعثر على جميع سجلات Contact حيث تكون `Document Expiry Date ≤ TODAY + 90 days`، ثم يرسل رابط إعادة التحقق. يعمل هذا مباشرة باستخدام الحقل `Document Expiry Date` الذي يملؤه webhook.

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

### الزر لا يستجيب عند النقر

* تأكد من أنك حفظت مفتاح API ومعرّف سير العمل (Workflow ID) في إعدادات Didit
* تحقق من أن معرّف سير العمل ينتمي إلى التطبيق نفسه الذي يخص مفتاح API
* فعّل **Debug Logging** في إعدادات Didit، ثم تحقق من وحدة تحكم المتصفح بحثاً عن الأخطاء

### "رد غير بصيغة JSON من Didit API"

* تحقق من أن Remote Site Setting الخاص بالعنوان `https://verification.didit.me` مفعّل: Setup → Remote Site Settings
* تحقق من أن مفتاح API صالح ولم تنتهِ صلاحيته في [Didit Business Console](https://business.didit.me)

### يعيد Webhook الاستجابة 401 — "Webhook secret not configured"

* انتقل إلى **Didit Settings** والصق مفتاح webhook السري (المنسوخ من Didit Console → API & Webhooks) في حقل **Webhook Secret**، ثم انقر **Save Settings**

### يعيد Webhook الاستجابة 401 — "Invalid signature" أو "Request timestamp is stale"

* التوقيع غير صالح: تأكد من أن Webhook Secret في Didit Settings يطابق تماماً المفتاح الموجود في Didit Console، دون مسافات أو أحرف إضافية
* الطابع الزمني قديم: يجب أن تصل webhook خلال 5 دقائق من إرسالها. إذا كانت ساعة مؤسسة Salesforce غير متزامنة، فقد يؤدي ذلك إلى إيجابيات كاذبة، لكن هذا نادر جداً

### نافذة التحقق لا تفتح (خطأ CSP في وحدة تحكم المتصفح)

* الـCSP Trusted Site الخاص بالعنوان `https://verify.didit.me` مضمّن في الحزمة المُدارة ويُنشر تلقائياً. إذا كنت تنشر من المصدر مباشرة، فتأكد من تضمين `cspTrustedSites/Didit_Verify_Frontend.cspTrustedSite-meta.xml` في عملية النشر

## الدعم (24/7)

فريقنا متاح لمساعدتك على البدء في استخدام الخدمة وتشغيلها.

> [card] [البريد الإلكتروني](mailto:hello@didit.me)
>
> أرسل لنا بريداً إلكترونياً على [hello@didit.me](mailto:hello@didit.me).


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