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

> Didit: управляемый пакет Salesforce для верификации личности, KYC и KYB. Без кода, от $0.33 за полный KYC, $10 бесплатно в месяц, без контрактов.

Добавьте верификацию личности Didit в Salesforce Sales Cloud / Service Cloud с помощью нашего управляемого пакета. Компонент добавляется на страницы записей контактов и лидов, создает сессии через вашу организацию с помощью Apex (ваш API-ключ Didit остается внутри Salesforce) и записывает результаты в стандартные поля записи, чтобы их могли использовать Flows и Reports. Встроенное **Invocable Action** позволяет Flow Builder автоматически запускать верификации, например, при создании нового лида.

## Предварительные требования

* Организация Salesforce (редакция Enterprise или выше; для тестирования подойдет Developer Edition)
* Учетная запись в [Didit Console](https://business.didit.me) с настроенным сценарием
* Разрешение на установку управляемых пакетов и создание сайтов в 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. Выберите **Установить только для администраторов** на время настройки и тестирования интеграции.
   Предоставьте доступ нужным пользователям после проверки конфигурации.

![Установка приложения Didit в Salesforce](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/install-package.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8758cc01110ca562d2e88b7cb76a9ab5)

3. Нажмите **Установить**

***

### Шаг 2: Получите учетные данные Didit

#### Получите API-ключ (для режима API)

1. Войдите в [Didit Business Console](https://business.didit.me)
2. Откройте раздел **API и webhook** в боковом меню слева
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 перейдите в раздел **Сценарии**
2. Выберите сценарий, который хотите использовать, или создайте новый
3. Скопируйте **Идентификатор сценария** (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** | Ваш Didit API-ключ (только для режима API) | — |
| **Workflow ID** | Ваш идентификатор сценария Didit (только для режима API) | — |
| **Webhook Secret** | HMAC-секрет из раздела Didit Console → **API и webhook**. Обязателен для получения обновлений о верификации в реальном времени. Если поле оставить пустым, все входящие запросы webhook будут отклонены. | — |
| **UniLink URL** | Фиксированный 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** | HEX-цвет фона кнопки | `#2667ff` |

4. Нажмите **Сохранить настройки**

### Шаг 4: Добавьте компонент на страницы записей

1. Откройте запись в разделе **Контакты** или **Лиды**

![Вид страницы контакта](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. Нажмите **Сохранить** и **Активировать** страницу. При активации выберите «Assign as Org Default». Видео ниже показывает этот процесс:

![Сохранение и активация страницы с компонентом Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/save-and-activate.gif?s=2f9f3fffb2fed482ea524236b5ad910d)

5. В примере выше показана страница записи контакта. Для страниц записей лидов шаги такие же.

## Как это работает

### Режим API (рекомендуется)

1. Пользователь нажимает **Verify Identity** в записи Contact или Lead.
2. Apex создаёт сессию через API Didit (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. Фиксированный URL UniLink открывается в модальном окне или iframe (вызов API не нужен).
3. После завершения результат сохраняется в запись.

### Автоматическое обновление верификации (webhook)

Когда сессия верификации завершается (независимо от того, открыта ли страница у агента), Didit отправляет webhook в вашу организацию Salesforce, чтобы автоматически обновить запись Contact или Lead. Для этого требуется однократная настройка Salesforce Site.

#### Зачем это нужно?

Salesforce не принимает входящие HTTP-запросы от внешних сервисов без публичной конечной точки. Salesforce Site создаёт такую конечную точку, чтобы 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

Нажмите кнопку **New** в списке Sites. Заполните поля:

* **Site Label**: `DiditWebhook`
* **Site Name**: заполняется автоматически как `DiditWebhook`
* **Default Web Address**: `didit`
* **Active**: установлен флажок
* **Active Site Home Page**: `InMaintenance`

Остальные поля оставьте без изменений и нажмите **Save**.

![Шаг 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: предоставьте гостевому пользователю доступ к классу обработки webhook

На странице сведений о Site нажмите **Public Access Settings**. Откроется профиль Guest User. Прокрутите страницу до **Enabled Apex Class Access** и нажмите **Edit**. Выберите **DiditWebhookReceiver** в списке Available и нажмите **Add**, чтобы перенести его в список Enabled. Нажмите **Save**.

![Шаг 4 - доступ к классам Apex](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 Console

1. Перейдите на [business.didit.me](https://business.didit.me) > **API & Webhooks**
2. Укажите **Webhook URL**: `https://your-org.develop.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`

> **Примечание:** Точный формат домена зависит от типа вашей организации. В организациях Developer Edition в URL входит `.develop`. Для продакшн-организаций используйте `https://your-org.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`. Чтобы не ошибиться, всегда копируйте URL со страницы сведений о Site (шаг 3).

3. Скопируйте **Webhook Secret Key**
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 (вызываемое действие)

Плагин включает вызываемое действие Apex, которое можно вызывать из Salesforce Flow для автоматического запуска верификации:

1. В Flow Builder добавьте элемент **Action**
2. Найдите **"Create Didit Verification Session"**
3. Передайте ID записи Contact или Lead
4. Action возвращает `url`, `sessionId`, `success` и `error`
5. Используйте URL в действии **Send Email** или **Send Notification**, чтобы отправить его клиенту

**Примеры сценариев использования:**

* **При создании Lead**: автоматически отправлять ссылку на верификацию каждому новому лиду
* **Контроль срока действия документов**: создайте Scheduled Flow, который запускается ежедневно, находит все Contact, где `Document Expiry Date ≤ TODAY + 90 days`, и отправляет ссылку для повторной верификации. Это работает сразу, поскольку использует поле `Document Expiry Date`, которое заполняется через webhook.

## Устранение неполадок

### Кнопка не реагирует на нажатие

* Убедитесь, что вы сохранили API-ключ и Workflow ID в Didit Settings
* Проверьте, что Workflow ID принадлежит тому же приложению, что и ваш API-ключ
* Включите **Debug Logging** в Didit Settings и проверьте консоль браузера на наличие ошибок

### "Получен ответ не в формате 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 Secret Key (скопированный из Didit Console → API & Webhooks) в поле **Webhook Secret**, затем нажмите **Save Settings**

### Webhook возвращает 401: "Invalid signature" или "Request timestamp is stale"

* Invalid signature: убедитесь, что Webhook Secret в Didit Settings точно совпадает с тем, что указан в Didit Console, без лишних пробелов и символов
* Stale timestamp: 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.