MCN Telecom logo

Command Palette

Search for a command to run...

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

0 просмотраСоздано 03.11.2026Обновлено 03.11.2026

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

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

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

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

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

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

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

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

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

Схема:

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

curl -X'POST' \'https://paidmethods.mcn.ru/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.mcn.ru/api/v2/protected/auth/call-verify

Запрос:

{
  "userPhoneNumber": "79312345678",
  "sessionTtlMs": 100
}

API отвечает:

{
  "sessionId": "b803e6e94146_139245",
  "phoneNumber": "74959876543",
  "expiresAt": "2026-09-24T07:35:55.665Z"
}

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

Позвоните на номер +7 495 987-65-43

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

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

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

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

Где:

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

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

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

Где:

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

    curl -X 'GET'
    'https://paidmethods.mcn.ru/api/v2/protected/auth/call-verify/{sessionId}'
    -H 'accept: application/json'

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

    {
    "sessionId": "9558f7a09e3e_13945",
    "status": "confirmed",
    "phoneNumber": "74951059459",
    "callerPhoneNumber": "79311110781",
    "linkedId": "119-179196177.7708040",
    "confirmedAt": "2026-10-14T08:39:37.583Z",
    "expiresAt": "2026-10-14T08:44:13.089Z"
    }
    

    Пример неуспешного (истекшего) запроса.

    {
    "sessionId": "73b0705bc72d_139245",
    "status": "expired",
    "phoneNumber": "74951090216",
    "callerPhoneNumber": null,
    "linkedId": null,
    "confirmedAt": null,
    "expiresAt": "2026-10-14T08:51:57.628Z"
    }
    

    Пример, когда ожидается звонок.

    {"sessionId":"73b0705bc72d_139245",
    "status":"pending",
    "phoneNumber":"74951090216",
    "callerPhoneNumber":null,
    "linkedId":null,
    "confirmedAt":null,
    "expiresAt":"2026-10-14T08:51:57.628Z"}
    
  2. Удаление сессии , если вдруг перепутали номер и сессия больше не нужна.

    curl -X 'DELETE'
    'https://paidmethods.mcn.ru/api/v2/protected/auth/call-verify/{sessionId}'
    -H 'accept: /'

    Успешный ответ будет с кодом 204.

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

    {
    "code": "verification_not_found",
    "message": "Call verification not found",
    "details": {
    "verificationId": "550e8400-e29b-41d4-a716-446655440000"
    }
    }
    

Была ли эта статья полезной