Частые вопросы по MandarinID
СМЭВ: основы и доступность
Банк обязуется по поручению организации (при наличии договора) проводить упрощённую идентификацию клиента через СМЭВ в целях заключения с указанным клиентом договора потребительского кредита (займа), предоставляемого клиенту посредством перевода денежных средств в соответствии с законодател ьством о национальной платёжной системе.
Нужно учитывать, что СМЭВ — государственная информационная система и не всегда доступна: возможно как полное отключение, так и частичное (например, в отдельном регионе).
По какому протоколу у вас СМЭВ?
Протокол СМЭВ-4.
Как определить доступность СМЭВ?
Однозначного способа понять, доступен СМЭВ или нет, нет: у них нет обязательств по доступности. Ориентироваться можно по косвенным признакам:
- длительная обработка запросов — ответ с результатом приходит дольше обычного;
- ошибки в ответе на запрос (примеры ниже в разделе об ошибках);
- оповещения в канале Телеграм; о восстановлении работоспособности тоже публикуется отдельное оповещение.
Какой регламент по срокам получения ответа на запрос?
Система СМЭВ обычно возвращает результат проверки в пределах 10 минут. Время может увеличиться по причинам, не зависящим от Mandarin. Максимальное регламентное время ответа на СМЭВ-запрос может составить до 5 рабочих дней, такие случаи крайне редки.
Идентификация: поля, статусы и сессия
Является ли поле personVerificationFinished финальным маркером окончания идентификации пользователя?
Да. personVerificationFinished означает, что идентификация этого пользователя завершена; значение может быть true или false.
Возможен ли кейс: personVerificationFinished: true, phoneVerificationFinished: false?
Да. Подробнее в документации. Если phoneVerificationFinished: false, на этапе подтверждения телефона был введён неверный код из SMS.
Идентификация клиента и идентификация телефона — это один процесс или два разных?
Это разные процедуры: personVerified (проверка персональных данных в СМЭВ) и phoneVerified (валидация номера).
В течение какого времени по id сессии можно получить результат идентификации?
Срока у id сессии нет: результат можно запросить и через неделю, и через месяц, и позже.
PersonVerified — false: что означает?
Данные клиента не прошли проверку. Какие именно поля неверны, СМЭВ не уточняет: возможна ошибка в ФИО, в паспортных данных или в СНИЛС/ИНН, либо данные недействительны или не совпадают. Если всё введено верно, клиенту стоит обратиться в ФМС по вопросу прохождения упрощённой идентификации.
Почему статус запроса в ожидании (Pending)?
В редких случаях СМЭВ отвечает с задержкой, поэтому статус может долго оставаться в ожидании. Пример ответа при проверке статуса:
{
"id": "e2c3c860-1d68-427c-a16d-9666e0ffb706",
"phoneVerified": null,
"phoneVerificationFinished": false,
"personVerified": null,
"personVerificationFinished": false,
"personVerificationError": null,
"inn": {
"status": "NotProcessed",
"description": "Не указан ИНН, проверка не производилась"
},
"snils": {
"status": "Processing",
"description": "В обработке"
},
"passport": {
"status": "Valid",
"description": "Сведения соответствуют"
},
"passportDeferred": null
}
Рекомендуем периодически повторять проверку статуса в рамках вашего SLA.
GET https://secure.mandarinpay.com/api/personidentification/v2/{id}
Передача SMS-кода на проверку: PUT https://secure.mandarinpay.com/api/personidentification/{id} с телом {"smsCode": "..."} — см. документацию (раздел «Передача СМС-кода»).
POST https://secure.mandarinpay.com/api/v2/personidentification
Если ответа от СМЭВ долго нет, можно заново выполнить инициализацию процесса — тот же метод POST /api/v2/personidentification, описанный в документации (раздел «Инициализация процесса идентификации»).
Тестовый режим и проверка данных
Взимается ли оплата за запросы на идентификацию в тестовом режиме?
В тестовом режиме за отправку запросов оплата не взимается.
Можно ли протестировать идентификацию без отправки SMS-кода?
Да: в запросе не передавайте поле phone.
На тестовом проекте невалидные паспортные данные дадут успешную идентификацию?
Для тестовых запросов: если ФИО совпадает с примером ниже, будет "personVerified": true; любое другое ФИО даст false.
"firstName": "Полиграф",
"lastName": "Шариков",
"patronymic": "Полиграфович",
ВАЖНО: это не отменяет необходимость передавать паспорт и остальные данные — проверка на тесте идёт по ФИО. При подтверждении телефона код состоит из нулей, реальное SMS не отправляется.
Для упрощённой идентификации можно изменить длину SMS-кода при проверке телефона?
Да, возможна любая длина — напишите в службу поддержки.
Можно получить перечень проверок на стороне Mandarin (как у СНИЛС, телефона и т.д.), чтобы дублировать их у себя?
Своей валидации у нас нет: запрос передаётся в СМЭВ в том виде, в каком получен; проверку выполняет СМЭВ, затем приходит ответ.
SMS и интерфейс
Клиент получает SMS от «Mandarin» с текстом «Код для подтверждения: …». Можно ли изменить имя отправителя?
Нет: текст и отправитель стандартные, индивидуально не настраиваются.
Сколько времени есть клиенту, чтобы ввести код из SMS для проверки телефона?
Код действует до тех пор, пока не отправлен новый код. В текущей версии протокола допускается не более 5 попыток передачи SMS-кода (включительно); при превышении лимита нужно заново инициализировать процесс идентификации — см. документацию (раздел «Передача СМС-кода»).
Ошибки запросов MandarinID
PersonIdentificationError: ESIA-000001 (внутренняя ошибка)
Внутренняя ошибка на стороне ЕСИА/СМЭВ. Можно повторить запрос согласно документации (инициализация процесса идентификации).
PersonIdentificationError: внутренняя ошибка сервера
Смысл уточняется по конкретному запросу. Например: проблемы на стороне СМЭВ (connection time out); проблемы у провайдера — имеет смысл повторить запрос по документации (инициализация процесса идентификации).
Ошибка СМЭВ (SAXException): Content is not allowed in …
В этот период на стороне СМЭВ были или есть неполадки. Запросы с такой ошибкой повторите после восстановления работы СМЭВ.
"personVerificationError": "Ошибка СМЭВ. Обратитесь в службу технической поддержки."
Проблема на стороне СМЭВ. Повторите запрос.
Ответ с Connection timed out в errorStatusInfo
{"status":"PROCESSING","errorStatusInfo":[{"code":"0","message":"java.net.ConnectException: Connection timed out: connect"}]}
Ошибку возвращает СМЭВ: перебои на их стороне.
Ответ с Internal service error (код 500)
{"status":"PROCESSING","errorStatusInfo":[{"code":"0","message":"Код ответа: 500, сообщение: Internal service error"}]}
Нужно уточнение; чаще источник — СМЭВ и перебои у них; для уверенности можно уточнить у провайдера.
PersonIdentificationError: ошибка при выполнении запроса
СМЭВ вернул, например, "status":"FAILED","errorStatusInfo":[{"code":"-1","message":"Ошибка при выполнении запроса"}]: сервис был недоступен на их стороне. При необходимости запрос можно повторить.