Didit не присылает email при смене статуса: настройте webhook, чтобы бэкенд узнавал о событии сразу. Проверяйте подпись перед обработкой.
Webhook - это HTTP-запрос, который Didit отправляет на ваш URL при изменении. Добавьте назначение в разделе Разработчики → Вебхуки, подпишитесь на нужные события - подстановочного знака нет, перечислите каждое - сохраните секрет подписи и проверяйте подпись, прежде чем что-либо обрабатывать.
Didit не отправляет вам email, когда сессия переходит в In Review или Declined. Чтобы узнавать об изменении статуса в момент, когда оно происходит, не обновляя консоль вручную, настройте webhook - URL на вашем сервере, на который Didit автоматически отправляет обновление.
Webhooks - это рекомендуемый способ интеграции. Опрос endpoint решений работает как запасной вариант, но он медленнее, требует больше запросов и пропускает события, которые доставляются только через webhook, - правки данных, внесённые ревьюером, изменения статуса транзакций и изменения на уровне сущностей.
#Настройка
- Разработчики → Вебхуки
Откройте нужное приложение и среду Live или Sandbox, затем Разработчики и Вебхуки.
- Добавьте конечную точку
Нажмите Добавить конечную точку, укажите HTTPS URL, название и события. Используйте рекомендуемую v3, кроме случаев поддержки старой интеграции. Проверьте и подтвердите.
- Сохраните секрет подписи
У каждой точки свой скрытый секрет подписи. Нажмите Показать и подтвердите личность; через 60 секунд секрет снова скрывается. Сохраните его в настройках сервера. Если кнопка недоступна, обратитесь в поддержку. Разработчики → Вебхуки.
- Отправьте тестовое событие
Подписанное тестовое событие позволяет проверить адрес, подпись и обработку без реальной верификации.

#На какие события можно подписаться
Подстановочного знака нет - перечисляйте каждое нужное семейство событий. Разнести их по нескольким назначениям - это нормально и часто даже удобнее.
| Событие | Срабатывает, когда |
|---|---|
status.updated | Меняется статус сессии KYC или KYB. То, что вам почти наверняка нужно |
data.updated | Данные верификации редактируются после создания - например, ревьюер исправляет поле |
user.status.updated | Консолидированный пользователь переходит между ACTIVE, FLAGGED и BLOCKED |
user.data.updated | Меняется профиль, счётчики или идентификаторы консолидированного пользователя |
business.status.updated | Меняется статус консолидированной компании |
business.data.updated | Меняются данные консолидированной компании |
transaction.created | Транзакция создана, и по ней готов первоначальный вердикт |
transaction.status.updated | Статус транзакции меняется впоследствии |
travel_rule.status.updated | Меняется статус обмена по Travel Rule |
Событий session.status.updated или kyc.completed не существует. Если вы
подписались на название, которого нет в этом списке, вы не получите ничего - и
это будет выглядеть в точности как сбой доставки. Сначала проверьте название.
#Что должен делать ваш эндпоинт
- Проверять подпись раньше всего остального. Считайте HMAC от сырого тела запроса - никогда от пересериализованной версии разобранного JSON, потому что повторная сериализация меняет байты, и подпись перестаёт совпадать. Используйте сравнение за постоянное время.
- Быстро возвращать 2xx. Тяжёлую работу выполняйте асинхронно, уже после ответа.
- Быть идемпотентным. Ключом должен быть id события либо связка id сессии + статус + тип webhook. Повторы и дубликаты случаются.
- Обрабатывать каждый статус, который для вас важен, включая те, что приходят намного позже онбординга - одобренная сессия может позже перейти в In Review из-за постоянного AML-мониторинга.
- Только HTTPS. Обычные HTTP-эндпоинты не поддерживаются.
#Повторы
При ответах 5xx или 404 Didit повторяет доставку дважды: примерно через минуту, затем через четыре. Тайм-аут после 5 секунд и ошибка соединения не повторяются автоматически. После исправления используйте Повторить в списке доставок. Окончательный сбой вызывает уведомление.
Не рассчитывайте на гарантированную доставку каждого вебхука. После сбоя повторите отправку или запросите решение по сессиям, результат которых вы не получили.
#За файрволом или WAF
Didit доставляет события со статического IP 18.203.201.92 с user agent DiditWebhook/2.0. Если ваш периметр блокирует неизвестных клиентов - как, например, поведение Cloudflare по умолчанию, - разрешите этот IP для принимающего хоста, иначе доставки будут падать, не доходя до вашего кода.
#Ещё нет бэкенда?
Вы всё ещё можете вручную следить за результатами в разделе Verifications консоли, пока не построите его, или использовать ссылку для верификации без кода тем временем.
#Дальнейшие шаги
- Когда webhook так и не приходит: когда webhook так и не приходит
- Разобраться, что означает каждый статус после его получения: что означает каждый статус сессии
- Полная техническая документация, включая примеры кода для проверки подписи: Webhooks
Не нашли ответ? Поговорите с человеком.
Укажите ID организации и ID сессии, о которой спрашиваете.
