Авторизовать пользователя по звонку с его номера

В качестве бесплатной альтернативы отправке кодов и паролей по СМС, мы разработали систему авторизации пользователя по звонку с его телефона.

  1. Вы запрашиваете у пользователя его номер телефона и передаете его нам по API.
  2. В ответ мы возвращаем вам номер телефона, по которому должен позвонить ваш пользователь для авторизации. У пользователя есть 5 минут на совершение звонка.
  3. Как только мы получаем звонок, мы его сбрасываем (чтобы звонок был бесплатным для пользователя) и отправляем вам по системе api callback HTTP оповещение, что авторизация пройдена (вы также можете запрашивать состояние самостоятельно через API, который представлен ниже).
  4. Звонок бесплатен для звонящего (даже для тех, кто находится в роуминге), так как мы его сбрасываем сразу в момент поступления.

Внимание

Так как мы сделали систему так, чтобы звонок для звонящего был бесплатен, даже если он звонит из-за рубежа или роуминга, то некоторые звонящие слышат ошибку "номер заблокирован" или "номер недоступен". К сожалению, это проблема операторов связи и разрешить ее нельзя. Наша система в любом случае регистрирует звонок. Чтобы сделать процесс безболезненным для пользователя, вам важно как можно быстрее получить статус звонка и обновить страницу у пользователя.

Передача номера телефона пользователя

https://sms.ru/callcheck/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&phone=79255070602&json=1

Параметры

Параметр Обязательный Описание
api_id да Ваш уникальный ключ (api_id). Этот способ авторизации - самый удобный и приведен в примере выше. Ваш api_id вы можете найти на главной странице личного кабинета: [зарегистрируйтесь, чтобы получить api_id]. Вместо api_id можно использовать параметры login и password, где указываются ваш логин и пароль от личного кабинета. В этом случае безопасность пароля гарантируется при использовании протокола https.
phone да Номер телефона пользователя, который необходимо авторизовать (с которого мы будем ожидать звонок)
json=1 рекомендуется Данный параметр вызывает ответ сервера в формате JSON, в котором предоставлено больше данных

Ответ сервера

При включенном параметре json=1:

{
    "status": "OK", // Запрос выполнен успешно (нет ошибок в авторизации)
    "status_code": 100, // Успешный код выполнения
    "check_id": "201737-542", // Идентификатор авторизации (необходимо сохранить в вашей базе для дальнейшей проверки состояния)
    "call_phone": "78005008275", // Номер телефона, на который должен позвонить пользователь со своего номера
    "call_phone_pretty": "+7 (800) 500-8275", // Номер телефона, на который должен позвонить пользователь со своего номера, в более красивом виде
    "call_phone_html": "<a href="callto:78005008275">+7 (800) 500-8275<\a>" // Активная ссылка для мобильных телефонов, при нажатии на которую начнется набор номера

}

Без json:

100 // Запрос выполнен
201737-542 // Идентификатор авторизации (необходимо сохранить в вашей базе для дальнейшей проверки ее состояния)
78005008275 // Номер телефона, на который должен позвонить ваш пользователь со своего номера для прохождения авторизации
+7 (800) 500-8275 // Номер телефона, на который должен позвонить ваш пользователь со своего номера, в более красивом виде

Проверка статуса звонка

Мы настоятельно рекомендуем использовать бесплатную опцию api callback для более быстрого и удобного получения статусов проверок. Она позволяет вам не запрашивать многократно статус проверки - он будут автоматически отправляться на ваш сервер в реальном времени.

https://sms.ru/callcheck/status?api_id=[зарегистрируйтесь, чтобы получить api_id]&check_id=[идентификатор авторизации]&json=1

Параметры

Параметр Обязательный Описание
api_id да Ваш уникальный ключ (api_id). Этот способ авторизации - самый удобный и приведен в примере выше. Ваш api_id вы можете найти на главной странице личного кабинета: [зарегистрируйтесь, чтобы получить api_id]. Вместо api_id можно использовать параметры login и password, где указываются ваш логин и пароль от личного кабинета. В этом случае безопасность пароля гарантируется при использовании протокола https.
check_id да Идентификатор авторизации, полученный от нас в первом примере
json=1 рекомендуется Данный параметр вызывает ответ сервера в формате JSON, в котором предоставлено больше данных об отправленных сообщениях

Ответ сервера

При включенном параметре json=1:

{
    "status": "OK", // Запрос выполнен успешно (нет ошибок в формате запроса)
    "status_code": 100, // Успешный код выполнения
    "check_status": "401", // Статус авторизации
    "check_status_text": "Авторизация по звонку: номер подтвержден", // Текстовое описание статуса авторизации
}

Без json:

100 // Запрос выполнен
401 // Статус проверки авторизации по телефону

Пример на PHP (со включенным модулем curl)

Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.

$ch = curl_init("https://sms.ru/callcheck/add");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    "api_id" => "[зарегистрируйтесь, чтобы получить api_id]",
    "phone" => "79255070602", // Номер телефона, который надо проверить (с которого мы будем ожидать звонок)
    "json" => 1 // Для получения более развернутого ответа от сервера
));
$body = curl_exec($ch);
curl_close($ch);

$json = json_decode($body);
if ($json) { // Получен ответ от сервера
    print_r($json); // Для дебага
    if ($json->status == "OK") { // Запрос выполнился
        echo "Идентификатор проверки: $json->check_id";
        echo "Номер, на который пользователю надо позвонить: $json->call_number"; 
        echo "Номер, на который пользователю надо позвонить (в красивом виде): $json->call_number_pretty"; 

    } else { // Запрос не выполнился (возможно ошибка авторизации, параметрах, итд...)
        // Код ошибки: $json->status_code Текст ошибки: $json->status_text
    }
} else { // Запрос не выполнился Не удалось установить связь с сервером

}

Пример на PHP без curl

Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.

$body = file_get_contents("https://sms.ru/callcheck/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&phone=79255070602&json=1"); 

$json = json_decode($body);
print_r($json); // Для дебага
// Для разбора $json можно использовать кусок кода из предыдущего примера.

Пример на curl

Если вы используете curl под Windows. То знак \перед знаками ? и & необходимо убрать.

curl https://sms.ru/callcheck/add\api_id=[зарегистрируйтесь, чтобы получить api_id]\phone=79255070602\json=1

Коды ответа сервера

Код Описание
100 Запрос выполнен, номер добавлен в базу для подтверждения и мы ожидаем с него звонок
202 Номер телефона пользователя указан неверно
400 Номер пока не подтвержден (с указанного вами номера пока не было звонка на номер, который предоставили вам мы)
401 Номер подтвержден
402 Истекло время, отведенное для проверки, либо неправильно указан check_id

Последнее обновление: 12 Января 2022 в 18:12

Бесплатный номер по России  +7 (800) 222-60-95