Проверить стоимость сообщений перед отправкой
Если у вас есть необходимость проверить стоимость сообщения перед его отправкой из вашей программы, то вы можете отправить следующие запросы на наш сервер.
Примеры запросов
Один текст на несколько номеров:
https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1
Разный текст на разные номера:
https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to[79255070602]=hello+world&to[74993221627]=hello+world&json=1
Пример ответа
При включенном параметре json=1:
{
"status": "OK", // Запрос выполнен успешно (нет ошибок в авторизации, проблем с отправителем, итд...)
"status_code": 100, // Успешный код выполнения
"sms": {
"79255070602": {
"status": "OK", // Возможные варианты: OK или ERROR.
"status_code": 100, // Успешный код выполнения, по сообщению возвращена стоимость
"cost": 0.00, // Стоимость сообщения
"sms": 1 // Количество СМС
},
"74993221627": {
"status": "ERROR",
"status_code": 207, // Код ошибки
"status_text": "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей" // Описание ошибки
}
},
"total_cost": 0.00, // Общая стоимость всех сообщений
"total_sms": 1 // Общее количество СМС
}
Без json:
100 // запрос выполнен успешно
0.00 // общая стоимость
1 // Общее количество СМС
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
| to | да | Номер телефона получателя (либо несколько номеров, через запятую — до 100 штук за один запрос). Номер телефона получателя (либо несколько номеров, через запятую — до 100 штук за один запрос). Вы также можете указать номера в виде массива to[номер получателя]=текст&to[номер получателя]=текст. |
| msg | да | Текст сообщения в кодировке UTF-8 |
| multi | да | Если вы хотите в одном запросе отправить разные сообщения на несколько номеров, то воспользуйтесь этим параметром (до 100 сообщений за 1 запрос). В этом случае, параметры to и msg использовать не нужно: каждое сообщение передается в виде multi[номер получателя]=текст&multi[номер получателя]=текст Если вы указываете несколько номеров и один из них указан неверно, то вместо идентификатора сообщения в выдаче вы получите трехзначный код ошибки. |
| json=1 | рекомендуется | Данный параметр вызывает ответ сервера в формате JSON, в котором предоставлено больше данных об отправленных сообщениях |
| from | Имя отправителя (должно быть согласовано с администрацией). Если не заполнено, в качестве отправителя будет указан ваш отправитель по умолчанию. | |
| translit=1 | Переводит все русские символы в латинские. |
Авторизация осуществляется при помощи:
| Параметр | Обязательный | Описание |
|---|---|---|
| api_id | да | Авторизацию по вашему уникальному ключу (api_id). Этот способ авторизации - самый удобный и приведен в примере выше. Ваш api_id вы можете найти на главной странице личного кабинета: [зарегистрируйтесь, чтобы получить api_id] |
или
| Параметр | Обязательный | Описание |
|---|---|---|
| login | да | Ваш номер телефона (логин): 79255070602 |
| password | да | Пароль (безопасность гарантируется при использовании https) |
Пример на PHP (со включенным модулем curl)
Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.
$ch = curl_init("https://sms.ru/sms/cost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"api_id" => "[зарегистрируйтесь, чтобы получить api_id]",
"to" => "79255070602,74993221627",
"msg" => iconv("windows-1251", "utf-8", "Привет!"), // Если приходят крякозябры, то уберите iconv и оставьте только "Привет!",
"json" => 1 // Для получения более развернутого ответа от сервера
));
$body = curl_exec($ch);
curl_close($ch);
$json = json_decode($body);
if ($json) { // Получен ответ от сервера
print_r($json); // Для дебага
if ($json->status == "OK") { // Запрос выполнился
foreach ($json->sms as $phone => $data) { // Перебираем массив СМС сообщений
if ($data->status == "OK") { // Сообщение обработано
// Номер: $phone
// Стоимость: $data->cost
// Длина в СМС: $data->sms
} else { // Ошибка в отправке
// Номер: $phone
// Код ошибки: $data->status_code
// Текст ошибки: $data->status_text
}
}
// Общая стоимость: $json->total_cost
// Общая длина СМС: $json->total_sms
} else { // Запрос не выполнился (возможно ошибка авторизации, параметрах, итд...)
// Код ошибки: $json->status_code
// Текст ошибки: $json->status_text
}
} else { // Запрос не выполнился Не удалось установить связь с сервером
}
Пример на PHP без curl
Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.
$body = file_get_contents("https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602&msg=".urlencode(iconv("windows-1251","utf-8","Привет!"))."&json=1");
$json = json_decode($body);
print_r($json); // Для дебага
// Для разбора $json можно использовать кусок кода из предыдущего примера.
Пример на Perl
#!/usr/bin/perl
use LWP::Simple;
use HTTP::Request::Common qw(POST);
$ua = LWP::UserAgent->new;
my $req = POST 'https://sms.ru/sms/cost',
[
api_id => '[зарегистрируйтесь, чтобы получить api_id]',
to => '79255070602',
msg => 'hello world'
];
print $ua->request($req)->as_string;
Пример на curl
Если вы используете curl под Windows. То знак \ перед знаками ? и & необходимо убрать.
curl -d "msg=hello world привет мир" https://sms.ru/sms/cost\?api_id=[зарегистрируйтесь, чтобы получить api_id]\&to=79255070602
Значения кодов
| Код | Значение |
|---|---|
| -1 | Сообщение не найдено |
| 100 | Запрос выполнен или сообщение находится в нашей очереди |
| 101 | Сообщение передается оператору |
| 102 | Сообщение отправлено (в пути) |
| 103 | Сообщение доставлено |
| 104 | Не может быть доставлено: время жизни истекло |
| 105 | Не может быть доставлено: удалено оператором |
| 106 | Не может быть доставлено: сбой в телефоне |
| 107 | Не может быть доставлено: неизвестная причина |
| 108 | Не может быть доставлено: отклонено |
| 110 | Сообщение прочитано (для Viber, временно не работает) |
| 150 | Не может быть доставлено: не найден маршрут на данный номер |
| 200 | Неправильный api_id |
| 201 | Не хватает средств на лицевом счету |
| 202 | Неправильно указан номер телефона получателя, либо на него нет маршрута |
| 203 | Нет текста сообщения |
| 204 | Вы не подключили данного оператора на данном имени (а также запасном или имени по умолчанию). Подайте заявку через раздел Отправители на сайте SMS.RU - https://sms.ru/?panel=senders |
| 205 | Сообщение слишком длинное (превышает 8 СМС) |
| 206 | Будет превышен или уже превышен дневной лимит на отправку сообщений |
| 207 | На этот номер нет маршрута для доставки сообщений |
| 208 | Параметр time указан неправильно |
| 209 | Вы добавили этот номер (или один из номеров) в стоп-лист |
| 210 | Используется GET, где необходимо использовать POST |
| 211 | Метод не найден |
| 212 | Текст сообщения необходимо передать в кодировке UTF-8 (вы передали в другой кодировке) |
| 213 | Указано более 5000 номеров в списке получателей |
| 214 | Номер находится зарубежом (включена настройка "Отправлять только на номера РФ") |
| 215 | Этот номер находится в стоп-листе SMS.RU (от получателя поступала жалоба на спам) |
| 216 | В тексте сообщения содержится запрещенное слово |
| 217 | В тексте сообщения содержится реклама кредита, но нет фразы "Оцените свои финансовые возможности и риски" (https://sms.ru/?panel=my&subpanel=news&news_id=147) |
| 220 | Сервис временно недоступен, попробуйте чуть позже |
| 221 | Для работы с нашим сервисом, необходимо создать буквенного отправителя, соответствующего вашему сайту, названию юр. лица или товарному знаку - https://sms.ru/?panel=senders |
| 230 | Превышен общий лимит количества сообщений на этот номер в день |
| 231 | Превышен лимит одинаковых сообщений на этот номер в минуту |
| 232 | Превышен лимит одинаковых сообщений на этот номер в день |
| 233 | Превышен лимит отправки повторных сообщений с кодом на этот номер за короткий промежуток времени ("защита от мошенников", можно отключить в разделе "Настройки") |
| 300 | Неправильный token (возможно истек срок действия, либо ваш IP изменился) |
| 301 | Неправильный api_id, либо логин/пароль |
| 302 | Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс) |
| 303 | Код подтверждения неверен |
| 304 | Отправлено слишком много кодов подтверждения. Пожалуйста, повторите запрос позднее |
| 305 | Слишком много неверных вводов кода, повторите попытку позднее |
| 500 | Ошибка на сервере. Повторите запрос. |
| 501 | Превышен лимит: IP пользователя из сети TOR, слишком много таких сообщений за короткий промежуток времени (можно настроить в ЛК). |
| 502 | Превышен лимит: IP пользователя не совпадает с его страной, слишком много таких сообщений за короткий промежуток времени (можно настроить в ЛК). |
| 503 | Превышен лимит: Слишком много сообщений в эту страну за короткий промежуток времени (можно настроить в ЛК). |
| 504 | Превышен лимит: Слишком много кодов авторизаций зарубеж за короткий промежуток времени (можно настроить в ЛК). |
| 505 | Превышен лимит: Слишком много сообщений на один IP адрес (можно настроить в ЛК). |
| 506 | Превышен лимит: Слишком много сообщений, где IP адрес конечного пользователя принадлежит хостинговой компании (%s за последние 10 минут). Обычно это указывает на то, что запросы идут от ботов, а не пользователей. |
| 507 | IP адрес пользователя указан неверно, либо идет из частной подсети (192.*, 10.*, итд). Вы можете добавить его (или подсеть) в исключения - https://sms.ru/?panel=settings&subpanel=send |
| 508 | Превышен лимит: Превышено количество допустимых звонков за 5 минут (принято запросов на звонки - %s, лимит - %s). Изменить настройку - https://sms.ru/?panel=settings&subpanel=send |
| 550 | Страна заблокирована в целях безопасности |
| 901 | Callback: URL неверный (не начинается на http://) |
| 902 | Callback: Обработчик не найден (возможно был удален ранее) |
Последнее обновление: 03 Октября 2017 в 19:05

