Тестирование в sandbox без списания кредитов

Sandbox - это режим приложения, в котором каждый провайдер замокан, ничего не тарифицируется, и вы можете принудительно получить любой результат верификации - approved, declined или in review.

Short answer

Sandbox - это режим приложения, а не переключатель внутри вашего боевого приложения. Создайте второе приложение в режиме sandbox, используйте его API-ключ - и каждая проверка будет замокана, ничего не будет тарифицироваться, и вы сможете принудительно получить любой нужный результат. Если вы видите только боевое (production) приложение, значит нужно создать sandbox-приложение - режим выбирается для каждого приложения отдельно.

Sandbox в Didit - это аналог тестовых карт платёжного провайдера: он позволяет воспроизвести любой результат верификации по требованию, без обращения к реальным провайдерам, без обработки реальных персональных данных и без списания средств с баланса.

#Sandbox - это режим приложения

Именно здесь чаще всего путаются. Live и sandbox - это разные приложения внутри одной организации, поэтому тестовый трафик и продовые данные никогда не смешиваются. У каждого приложения есть режим: либо live, либо sandbox.

Страница API-ключей в консоли Didit, где каждый ключ принадлежит одному приложению
  1. Ключ принадлежит одному приложению - ключ sandbox-приложения не может обратиться к боевым сессиям.
  2. Создайте отдельный ключ для тестирования, вместо того чтобы использовать боевой.
Ключи привязаны к приложению, поэтому sandbox-ключ никогда не получит доступ к боевым данным.
  1. Создайте второе приложение

    В консоли откройте переключатель приложений вверху и создайте новое приложение. Выберите sandbox в качестве режима.

  2. Используйте API-ключ этого приложения

    Возьмите API-ключ в разделе API & Webhooks, пока выбрано sandbox-приложение. У боевого приложения нет отдельного "тестового ключа" - ключ и есть окружение.

  3. Соберите в нём воркфлоу

    У sandbox-приложений свои собственные воркфлоу. Пересоберите (или скопируйте) флоу, который хотите протестировать.

  4. Создавайте сессии как обычно

    Тот же эндпоинт, тот же путь в коде. Единственное отличие - какой ключ вы отправляете.

Note

Если в вашей консоли отображается только боевое приложение и нет возможности добавить sandbox-приложение, попросите поддержку включить создание sandbox-приложений для вашей организации - это настройка на уровне аккаунта, а не что-то, что вы настроили неправильно.

#Что меняет sandbox, а что нет

SandboxLive
Внешние провайдерыВсе замоканы - ни один сторонний сервис никогда не вызываетсяРеальные
ТарификацияНикогда не тарифицируется; проверка баланса пропускаетсяТарифицируется за каждую завершённую функцию
Лимит создания сессий500 за 24 часа на приложениеВаш баланс
Тело webhook"environment": "sandbox""environment": "live"
Извлечённые данные и статусСмоделированы выбранным сценариемПолучены из реальной съёмки
Захваченные медиафайлыСохраняются по-настоящему, точно как в боевой сессииСохраняются
Important

Sandbox сохраняет захваченные медиафайлы - документы, селфи, видео liveness, файлы подтверждения адреса - точно так же, как это сделала бы боевая сессия. Результат симулируется, но загрузка происходит по-настоящему, поэтому используйте тестовые документы и тестовые данные, которые предлагает флоу, а не реальный документ, удостоверяющий личность, или реальные персональные данные.

Поскольку результат никогда не зависит от самой картинки, намеренно плохое фото не приведёт к отказу в sandbox. Результат определяет сценарий.

#Выбор результата

Передайте слаг сценария в параметре sandbox_scenario при создании сессии, либо позвольте тестировщику выбрать его самому: в размещённом флоу sandbox-сессии показывают выбор сценария внутри карточки перед началом съёмки, а также ряд образцов документов под компонентом загрузки и постоянный баннер "только тестовые данные".

Сценарии покрывают именно те результаты, под которые вам действительно нужно тестировать код:

Что протестироватьСценарий
Всё одобряетсяapprove
Просроченный документdecline_document_expired
Нечитаемый документdecline_could_not_recognize_document
Ошибка контрольной суммы MRZdecline_mrz_validation
Ниже минимального возрастаdecline_minimum_age
Слишком низкое сравнение лицdecline_face_match_low_similarity
Атака имитации при livenessdecline_liveness_attack
Срабатывание AML по санкциям / PEPdecline_aml_hit
Заблокированный IP-адресdecline_ip_blocklist
Несовпадение адреса при подтверждении адресаdecline_poa_address_mismatch
Чип NFC не прошёл проверку целостностиdecline_nfc_chip_not_verified
Проверка по базам данных ничего не нашлаdecline_database_no_match
Требуется ручная проверка (AML)review_aml_possible_match
Требуется ручная проверка (пограничное сравнение лиц)review_face_match_borderline
Требуется ручная проверка (частичное совпадение адреса)review_poa_partial_match
Несовпадение с реестром KYBdecline_kyb_registry_mismatch

Сценарии review_* существуют, чтобы вы могли проверить весь путь ручной проверки целиком - очередь на проверку в консоли, webhook со статусом In Review, одобрение или запрос повторной отправки проверяющим - без необходимости данных, ведущих к отказу.

Tip

Актуальный каталог сценариев и магических значений отдаёт сам API по адресу GET /v1/sandbox/scenarios/. Если какой-то слаг здесь выглядит устаревшим, доверяйте эндпоинту. Полный справочник: тестирование в sandbox.

#Как отличить одно от другого в собственном коде

Каждый webhook несёт поле environment - "sandbox" или "live". Ветвите логику по нему, а не пытайтесь определить окружение по ключу - и вы никогда не перепутаете тестовую сессию с реальным клиентом.

#Чего sandbox не делает

  • Не возвращает реальные данные реестра для реальной компании. KYB в sandbox использует замоканные ответы реестра.
  • Не отправляет реальные SMS или email. Верификация телефона и email замокана, поэтому по sandbox нельзя оценить реальную доставляемость сообщений.
  • Не расходует ваши бесплатные месячные лимиты - а значит, прогон в sandbox ничего не говорит об оставшихся бесплатных проверках.

#Если вам нужны реальные тестовые верификации

Некоторые вещи действительно требуют реального вызова - например, проверить, что сервис работы с базой данных конкретной страны подключён именно для вас, или подтвердить доставку SMS конкретному оператору. Для этого нужно небольшое пополнение боевого приложения, а не sandbox. Прежде чем тратить на это средства, спросите поддержку - так они смогут заранее подтвердить, что нужный сервис действительно включён в вашем аккаунте.