> ## 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 для WordPress: проверка возраста в WooCommerce

> Didit: плагин WordPress и WooCommerce для верификации личности без кода. От $0.33 за полную KYC-проверку, $10 бесплатно в месяц, без контрактов.

Добавьте верификацию личности Didit и проверку возраста на любой сайт WordPress или магазин WooCommerce. Плагин работает как защищённый прокси-сервер на стороне бэкенда: ваш API-ключ остаётся на сервере. Он предоставляет шорткоды, проверку при оформлении заказа в WooCommerce и хуки для разработчиков, поэтому верификацию можно подключить без написания 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 & Webhooks** и скопируйте **API-ключ**
3. Перейдите в **Рабочие процессы**, создайте или выберите сценарий и скопируйте **Идентификатор сценария**

> [!NOTE]
>
> Вы можете использовать **UniLink URL**, чтобы посмотреть сценарий верификации без API-ключей.
> Используйте режим **API Session** с API-ключом и ID сценария для ограничения доступа к контенту и требований верификации в 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 перейдите в **Плагины → Добавить новый → Загрузить плагин**
3. Выберите скачанный ZIP-файл и нажмите **Установить сейчас**
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** | Быстрого тестирования | Только URL UniLink из вашего сценария |
| **API Session** (рекомендуется) | Работы в продакшене | ID сценария + API-ключ |

**Для UniLink:** выберите в поле «Mode» значение «UniLink», вставьте свой URL и сохраните настройки.

**Для API Session:** выберите в поле «Mode» значение «API Session», введите ID сценария и API-ключ и сохраните настройки.

> [!NOTE]
>
> API-ключ хранится на вашем сервере в безопасном виде и никогда не передаётся посетителям.

### Настройте параметры сессии (только для режима API)

Это необязательные настройки, которые дают вам больше контроля:

* **Vendor Data**: связывает каждую верификацию с конкретным пользователем в вашей панели Didit, чтобы вы могли отслеживать, кто прошёл верификацию. По умолчанию используется WordPress User ID (например, `wp-42`). Также можно выбрать User Email, собственный префикс или отключить этот параметр.
* **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. Выберите, где будет отображаться блок верификации:
   * В начале страницы оформления заказа
   * После платёжных данных
   * После примечаний к заказу
   * Перед «Оформить заказ» (рекомендуется)
3. При желании выберите **Product Scope**: все товары (по умолчанию), только выбранные товары или все товары, кроме выбранных.
   Отметьте товары флажком **Didit verification** в разделе **Данные товара → Расширенные** в редакторе товара.
   Корзина, в которой есть хотя бы один товар, требующий верификации, потребует её.
   Область действия применяется как к оформлению заказа, так и к режимам после покупки.
4. При желании измените **Заголовок раздела**, **Checkout Message** и **Post-purchase Message** в разделе **Настройки → Didit Verify → WooCommerce**. Пустые поля используют текст по умолчанию.
5. При желании включите **Send Billing Data**, чтобы автоматически отправлять в Didit имя, адрес электронной почты, телефон и адрес клиента для предварительного заполнения и перекрёстной проверки.

> [!NOTE]
>
> Коды стран автоматически преобразуются из формата WooCommerce alpha-2 в формат Didit alpha-3, который требуется.

Клиенты должны получить решение **Одобрено**, подтверждённое сервером, прежде чем смогут оформить заказ.
Это относится как к классическому, так и к блочному оформлению заказа.
Плагин проверяет, что сессия принадлежит текущему покупателю и не была уже использована для другого заказа.
ID сессии сохраняется в заказе для справки.

Если вы выберете **After purchase**, заказ остаётся на удержании, пока сервер не подтвердит одобрение.
Гостевые клиенты могут пройти верификацию со страницы заказа, используя его действующий ключ заказа.
Настройте URL 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** | ID сессии 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/ru.md)
* [Didit Console](https://business.didit.me)
* [Справочник по API Create Session](https://docs.didit.me/ru/sessions-api/create-session.md)


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