Метод Call-verify — Авторизация пользователя через звонок

Изменено Ср, 7 Окт на 3:04 PM

Вместо отправки SMS-кода пользователь звонит на выданный ему номер. Сам факт звонка подтверждает, что пользователь действительно имеет доступ к указанному номеру телефона.

Как это работает

  1. Ваш сайт отправляет API два параметра:

    • номер телефона пользователя;
    • сколько времени ждать звонок (sessionTtlMs).
  2. API возвращает номер телефона для звонка.

    Этот номер нужно показать пользователю на сайте.

  3. Пользователь звонит на этот номер.

  4. Если звонок поступил в отведённое время:

    • авторизация считается успешной;
    • вам приходит веб-хук Авторизационный звонок (Call Verify) со статусом успеха.
  5. Если пользователь не позвонил до окончания времени сессии:

    • авторизация считается неуспешной;
    • вам приходит веб-хук со статусом неуспеха.
    • При этом неуспешная попытка тоже тарифицируется.

Схема:

Ваш сайт → передаёт номер пользователя → получает номер для звонка → показывает его пользователю → пользователь звонит → ваш веб-хук получает результат авторизации.

curl -X'POST' \'<https://paidmethods.kompaas.tech/api/v2/protected/auth/call-verify>' \  

-H'accept: application/json' \  

-H'Content-Type: application/json' \  

-H'Sec-Fetch-Mode: cors' \  

-d'{  "userPhoneNumber": "string",  "sessionTtlMs": 1}'

URL метода : https://paidmethods.kompaas.tech/api/v2/protected/auth/call-verify

Запрос:

{

  "userPhoneNumber": "3612345678",

  "sessionTtlMs": 100

}

API отвечает:

{

  "sessionId": "b803e6e94146_139245",

  "phoneNumber": "3687654321",

  "expiresAt": "2026-09-24T07:35:55.665Z"

}

То есть пользователю нужно показать:

Позвоните на номер +36 8 765 4321

После звонка ваш сервер получит результат через настроенный веб-хук 'Авторизационный звонок (Call Verify)'.

Важно: phoneNumber в ответе — это номер, на который звонит пользователь, а userPhoneNumber в запросе — номер самого пользователя.

Пример успешного запроса.

{
"linkedId": "119-1790236307.926540",
"accountId": 139245,
"occurredAt": "2026-09-24T07:51:47.584Z",
"poolPhoneNumber": "3687654321",
"idempotencyKey": "3780cdc9-014b-4be0-98cb-9cd57cc4f220",
"userPhoneNumber": "3612345678",
"isConfirmed": true,
"eventType": "callVerify",
"sessionId": "9a738796f749_139245",
"callerPhoneNumber": "3612345678"
}

Где:

  • isConfirmed: true — пользователь успешно подтвердил номер;
  • callerPhoneNumber — номер, с которого фактически поступил звонок;
  • userPhoneNumber — номер, который изначально передали на проверку;
  • poolPhoneNumber — номер, на который должен был позвонить пользователь;
  • sessionId — идентификатор конкретной сессии проверки.

Пример неуспешного запроса.

{
"linkedId": null,
"accountId": 139245,
"occurredAt": "2026-09-24T07:35:56.102Z",
"poolPhoneNumber": "3687654321",
"idempotencyKey": "7d29db08-48bd-4926-91ed-c02eae6a0d57",
"userPhoneNumber": "3687654321",
"isConfirmed": false,
"eventType": "callVerify",
"sessionId": "b803e6e94146_139245",
"callerPhoneNumber": null
}

Где:

  • isConfirmed: false — проверка не пройдена;
  • callerPhoneNumber: null — звонка от пользователя не было;
  • сессия завершилась по таймауту.

Статья помогла?

Отлично!

Спасибо за ваш отзыв

Извините, что не удалось помочь!

Спасибо за ваш отзыв

Расскажите, как мы можем улучшить эту статью!

Выберите хотя бы одну причину
Требуется проверка CAPTCHA.

Комментарий отправлен

Мы ценим вашу помощь и постараемся исправить статью