Возможности
- Простой API - паттерн Singleton с удобными методами
- Гибкая интеграция - используйте URL UniLink напрямую или создавайте сессии через бэкенд
- Адаптивность - работает в десктопных и мобильных браузерах
- Кастомизация - параметры конфигурации для стилизации и поведения
- Несколько форматов - сборки ESM, CommonJS и UMD
- Поддержка TypeScript - полные определения типов в комплекте
- Модальный и встроенный режимы - выбор между модальным оверлеем и встроенным отображением
- Обратные вызовы событий — события прогресса верификации в реальном времени (начата, шаг завершён, завершена)
- Управление состоянием - отслеживайте состояние SDK для создания собственного интерфейса
Установка
NPM/Yarn
CDN (UMD)
Последний опубликованный npm-релиз:
0.5.1.
В версии 0.5.0 был добавлен метод DiditSdk.shared.submitEvent() (см. раздел События отправки), а версия 0.5.1 позволяет размещённому сценарию запрашивать удостоверение пользователя у кошелька цифровых удостоверений внутри SDK и сохраняет неудачный запуск в состоянии error с соответствующим errorMessage.
В версии 0.4.0 добавлены параметры камеры, которые уже поддерживаются нативными SDK, включая defaultLivenessCamera, который открывает захват лица на задней камере (см. раздел Параметры камеры).Проверка установленной версии
Ваш пакетный менеджер остаётся основным источником информации об установленном релизе:0.3.1, этот экспорт генерируется на основе версии пакета во всех форматах JavaScript (ESM, CommonJS, UMD, минифицированный UMD) и в объявлениях TypeScript, поэтому он всегда соответствует установленному релизу.
Версии 0.3.0 и более ранние возвращают 0.2.1 из этого экспорта независимо от установленной версии. В этих релизах используйте npm list или файл блокировки.
Чистый JavaScript
ES-модули / TypeScript
Тег скрипта (UMD)
Примеры для фреймворков
Примеры веб-интеграции SDK
React, Angular, Svelte, Next.js, Nuxt, Vue и другие: с примерами и документацией для каждого фреймворка.
Способы интеграции
Существует два способа интеграции SDK:Способ 1: URL UniLink (самый простой)
Используйте URL UniLink вашего сценария прямо из Didit Console. Бэкенд не требуется.Способ 2: Сессия на бэкенде (рекомендуется для продакшна)
Ваш бэкенд создаёт сессию через Didit API и возвращает URL размещённой страницы верификации. Это даёт контроль над параметрамиvendor_data, callback для конкретной сессии, metadata и позволяет создавать сессии до того, как пользователь перейдёт на фронтенд.
Подробнее см. в справочнике по API создания сессии.
Бэкенд (Node.js / Express)
Поле в ответе при создании сессии называется
url (см. схему OpenAPI для Create Session). Передайте его напрямую в startVerification({ url }).Конфигурация
Параметры камеры
Для параметров камеры требуется
@didit-protocol/sdk-web версии 0.4.0 или новее.defaultLivenessCamera: 'back', чтобы открывать захват лица на задней камере, например в киоске или когда оператор держит устройство и направляет его на верифицируемого пользователя.
- Допустимые значения камеры:
'front'и'back'. Любое другое значение игнорируется, как и флаг переключателя, если он не является логическим значением. - Устройство без запрошенной камеры продолжает использовать доступную: если для ноутбука запросить
'back', он все равно будет использовать веб-камеру. На устройствах с одной камерой переключатель скрывается независимо от установленных флагов. - Параметры проверки живости применяются к пассивной проверке живости. На активную проверку живости они не влияют.
- SDK передает параметры на страницу верификации в качестве параметров запроса URL верификации:
document_camera,liveness_camera,document_camera_switchиliveness_camera_switch. Если вы открываете URL верификации напрямую, а не через SDK, укажите их самостоятельно: добавьте?liveness_camera=backк URL без параметров запроса,&liveness_camera=backк URL, в котором уже есть параметры, или задайте их с помощью APIURL, чтобы корректно обработать оба случая:
Отправка событий
МетодDiditSdk.shared.submitEvent() ставит в очередь события конечных пользователей (регистрация, вход, неудачный вход, выход, сброс пароля, MFA, смена устройства) для мониторинга событий Didit.
Ваш бэкенд создает token для мониторинга пользователя, а SDK отправляет события пакетами вместе с цифровым отпечатком устройства.
Никогда не передавайте API-ключ в браузер.
Размеры и прокрутка модального окна
Описанное ниже поведение размеров требует версии 0.3.1 или новее. В версиях 0.3.0 и более ранних сценарий верификации может обрезаться на невысоких экранах десктопов и в альбомной ориентации.
dvh в браузерах с поддержкой динамических единиц viewport и переключается на vh в более старых поддерживаемых браузерах. При ширине 540px и менее модальное окно заполняет всю видимую область экрана. Кнопка закрытия и подтверждение выхода остаются внутри модального окна.
Обновленный сценарий верификации
Все сказанное в этом разделе относится к версии 0.5.0, которая пока не опубликована. До обновления модальное окно сохраняет размеры, описанные выше.
didit:layout:
- Начальный размер, начиная с версии 0.5.0: пока страница не передаст параметры своего макета (а также для страниц, которые их не передают), модальное окно сохраняет прежний максимальный размер 500px на 700px. Оно по-прежнему подстраивается под невысокие окна и разворачивается во весь экран при ширине 540px и менее.
- Кнопка закрытия, начиная с версии 0.5.0: круглая кнопка диаметром 44px поверх верхней панели страницы. Она адаптируется к светлой или темной теме страницы и перемещается влево для языков с письмом справа налево.
- Встроенный режим, начиная с версии 0.5.0: компонент по-прежнему заполняет родительский элемент, как и раньше (см. Встроенный режим).
- URL верификации, начиная с версии 0.5.0: SDK добавляет параметры
sdk_presentation(modalилиembedded) и, в случае модального окна,sdk_close_button(trueилиfalseв соответствии сshowCloseButton), чтобы страница знала, как именно она отображается. - События, начиная с версии 0.5.0: SDK обрабатывает событие
didit:layoutсамостоятельно и не передает его вonEvent.
Встроенный режим
Во встроенном режиме ограничение 500px на 700px, характерное для модального окна, не применяется. SDK заполняет область содержимого родительского элемента, поэтому задайте этому элементу явную или вычисляемую высоту:Результаты верификации
SDK возвращает три типа результатов:Завершено
Верификация завершена (одобрена, ожидает решения или отклонена).Тип TypeScript декларирует
'Approved' | 'Pending' | 'Declined', однако значение передаётся напрямую из статуса сессии размещённого сценария — вы также можете получать и другие статусы, например In Review. Pending является резервным значением SDK, когда сценарий не вернул никакого статуса. Рассматривайте status как подсказку и опирайтесь на webhook для получения канонического решения.Отменено
Пользователь закрыл модальное окно верификации.session передаётся, если sessionId уже известен (может быть undefined, если пользователь отменил процесс до того, как iframe успел передать его).
Ошибка
Во время верификации произошла ошибка.Управление состоянием
Вы можете отслеживать состояние SDK для создания собственного пользовательского интерфейса:Справочник API
DiditSdk.shared
Синглтон-экземпляр SDK.Методы
Свойства
Колбэки
Детализированные события
Отслеживайте прогресс верификации с помощью callback-функцииonEvent:
Справочник событий
Потеря соединения
Если у пользователя пропадает соединение, страница верификации отображает экран «Нет подключения к интернету» поверх сценария вместо того, чтобы оставлять шаг в состоянии загрузки. Она продолжает проверку в фоновом режиме и автоматически закрывает этот экран, как только связь с Didit восстанавливается, после чего пользователь продолжает работу с того шага, на котором находился. Внутри модального окна SDK или iframe экран также предлагает кнопку Выйти из верификации: в этом случае страница отправляет событиеdidit:error с error: "network_error", за которым следует didit:cancelled, а SDK закрывает модальное окно и вызывает onComplete с type: "cancelled".
Начиная с версии 0.5.0, сообщение страницы didit:layout задаёт размер модального окна и не передаётся в onEvent. Если вы встраиваете страницу с помощью собственного iframe, см. раздел Подгонка размера iframe с помощью didit:layout.
Значения шагов
Полеstep может принимать одно из следующих значений:
document_selection- выбор типа документаdocument_front- лицевая сторона документаdocument_back- обратная сторона документаface- проверка лица/проверка живостиemail- проверка электронной почтыphone- проверка телефонаpoa- подтверждение адресаquestionnaire- шаг анкеты
Значения каналов
Полеchannel в code_sent может принимать значения:
email- код отправлен по электронной почтеsms- код отправлен по SMSwhatsapp- код отправлен через WhatsApp
Длина кода
ПолеcodeSize в code_sent указывает длину одноразового кода (например, 4 или 6 цифр).