Как отправить СМС из PHP?

ДокументацияПомощь в интеграции286

Чтобы отправить СМС из PHP, достаточно подключить в ваш код следующую библиотеку. Отправка СМС при этом осуществляется максимально быстро и удобно.

Файл Ссылка
Библиотека v1.2 (08 июня 2023) https://sms.ru/files/smsru_php.zip

Отправка одного СМС сообщения

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$data = new stdClass();
$data->to = 'телефон, на который регистрировались';
$data->text = 'Hello World'; // Текст сообщения
// $data->from = ''; // Если у вас уже одобрен буквенный отправитель, его можно указать здесь, в противном случае будет использоваться ваш отправитель по умолчанию
// $data->time = time() + 7*60*60; // Отложить отправку на 7 часов
// $data->translit = 1; // Перевести все русские символы в латиницу (позволяет сэкономить на длине СМС)
// $data->test = 1; // Позволяет выполнить запрос в тестовом режиме без реальной отправки сообщения
// $data->partner_id = '1'; // Можно указать ваш ID партнера, если вы интегрируете код в чужую систему
// $data->ip = '89.100.111.222'; // IP адрес пользователя, в случае если вы отправляете код авторизации ему на номер в ответ на его запрос (к примеру, при регистрации). В случае аттаки на ваш сайт, наша система сможет помочь с защитой.
$sms = $smsru->send_one($data); // Отправка сообщения и возврат данных в переменную

if ($sms->status == "OK") { // Запрос выполнен успешно
    echo "Сообщение отправлено успешно. ";
    echo "ID сообщения: $sms->sms_id. ";
    echo "Ваш новый баланс: $sms->balance";
} else {
    echo "Сообщение не отправлено. ";
    echo "Код ошибки: $sms->status_code. ";
    echo "Текст ошибки: $sms->status_text.";
}

Отправка нескольких СМС сообщений

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$data = new stdClass();
/* Если текст на номера один */
$data->to = 'телефон, на который регистрировались,74993221627'; // Номера для отправки сообщения (От 1 до 100 шт за раз). Вторым указан городской номер, по которому будет возвращена ошибка
$data->text = 'Hello World'; // Текст сообщения
/* Если текст разный. В этом случае $data->to и $data->text обрабатываться не будут и их можно убрать из кода */
$data->multi = array( // От 1 до 100 штук за раз
    "телефон, на который регистрировались" => "Hello World", // 1 номер
    "74993221627" => "Hello World 2", // 2 номер (указан городской номер, будет возвращена ошибка)
);
// $data->from = ''; // Если у вас уже одобрен буквенный отправитель, его можно указать здесь, в противном случае будет использоваться ваш отправитель по умолчанию
// $data->time = time() + 7*60*60; // Отложить отправку на 7 часов
// $data->translit = 1; // Перевести все русские символы в латиницу (позволяет сэкономить на длине СМС)
// $data->test = 1; // Позволяет выполнить запрос в тестовом режиме без реальной отправки сообщения
// $data->partner_id = ''; // Можно указать ваш ID партнера, если вы интегрируете код в чужую систему
$request = $smsru->send($data); // Отправка сообщений и возврат данных в переменную

if ($request->status == "OK") { // Запрос выполнен успешно
    foreach ($request->sms as $phone => $sms) { // Перебираем массив отправленных сообщений
        if ($sms->status == "OK") {
            echo "Сообщение на номер $phone отправлено успешно. ";
            echo "ID сообщения: $sms->sms_id. ";
            echo "";
        } else {
            echo "Сообщение на номер $phone не отправлено. ";
            echo "Код ошибки: $sms->status_code. ";
            echo "Текст ошибки: $sms->status_text. ";
            echo "";
        }
    }
    echo "Ваш новый баланс: $request->balance";
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Получить статус отправленных сообщений

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

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->getStatus('1000-100000,1000-100001'); // ID соробщений через запятую

if ($request->status == "OK") { // Запрос выполнен успешно
    foreach ($request->sms as $sms_id => $data) { // Перебираем массив сообщений
        if ($data->status == "OK") { // Статус сообщения получен
            echo "ID сообщения: $sms_id ";
            echo "Код статуса сообщения: $data->status_code ";
            echo "Текст статуса сообщения: $data->status_text ";
            echo "";
        } else { // Ошибка в получении статуса
            echo "ID сообщения: $sms_id ";
            echo "Код ошибки: $data->status_code ";
            echo "Текст ошибки: $data->status_text ";
            echo "";
        }
    }
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Узнать стоимость СМС сообщений

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$data = new stdClass();
/* Если текст на номера один */
$data->to = 'телефон, на который регистрировались,74993221627'; // Номера для отправки сообщения (От 1 до 100 шт за раз). Вторым указан городской номер, по которому будет возвращена ошибка
$data->text = 'Hello World'; // Текст сообщения
/* Если текст разный. В этом случае $data->to и $data->text обрабатываться не будут и их можно убрать из кода */
$data->multi = array( // От 1 до 100 штук за раз
    "телефон, на который регистрировались" => "Hello World", // 1 номер
    "74993221627" => "Hello World 2", // 2 номер (указан городской номер, будет возвращена ошибка)
);
// $data->from = ''; // Если у вас уже одобрен буквенный отправитель, его можно указать здесь, в противном случае будет использоваться ваш отправитель по умолчанию
// $data->translit = 1; // Перевести все русские символы в латиницу (позволяет сэкономить на длине СМС)
$request = $smsru->getCost($data); // Отправка сообщений и возврат данных в переменную

if ($request->status == "OK") { // Запрос выполнен успешно
    foreach ($request->sms as $phone => $data) { // Перебираем массив СМС сообщений
        if ($data->status == "OK") { // Сообщение обработано
            echo "Номер: $phone ";
            echo "Стоимость: $data->cost ";
            echo "Длина в СМС: $data->sms ";
        } else { // Ошибка в отправке
            echo "Номер: $phone ";
            echo "Код ошибки: $data->status_code ";
            echo "Текст ошибки: $data->status_text ";
        }
    }
    echo "Общая стоимость: $request->total_cost ";
    echo "Общая длина СМС: $request->total_sms ";
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Узнать баланс

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->getBalance(); 

if ($request->status == "OK") { // Запрос выполнен успешно
    echo "Ваш баланс: $request->balance ";
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Узнать лимит

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->getLimit(); 

if ($request->status == "OK") { // Запрос выполнен успешно
    echo "Ваш лимит: $request->total_limit ";
    echo "Использовано сегодня: $request->used_today ";
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Получить одобренных отправителей

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->getSenders(); 

if ($request->status == "OK") { // Запрос выполнен успешно
    foreach ($request->senders as $sender) { // Перебираем массив отправителей
        echo "Отправитель: $sender ";
    }
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Добавить номер в стоплист

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->addStoplist("79991112233","Примечание (видно только вам)"); 

if ($request->status == "OK") { // Запрос выполнен успешно
    echo "Номер добавлен в стоплист.";
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Удалить номер из стоплиста

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->delStoplist("79991112233"); 

if ($request->status == "OK") { // Запрос выполнен успешно
    echo "Номер удален из стоплиста.";
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Получить список номеров в стоплисте

require_once 'sms.ru.php';

$smsru = new SMSRU('[зарегистрируйтесь, чтобы получить api_id]'); // Ваш уникальный программный ключ, который можно получить на главной странице

$request = $smsru->getStoplist(); 

if ($request->status == "OK") { // Запрос выполнен успешно
    foreach ($request->stoplist as $phone=>$text) { // Перебираем массив номеров
        echo "Номер: $phone ";
        echo "Примечание: $text ";
    }
} else {
    echo "Ошибка при выполнении запроса. ";
    echo "Код ошибки: $request->status_code. ";
    echo "Текст ошибки: $request->status_text. "; 
}

Значения кодов

Код Значение
100 Команда выполнена успешно (или сообщение принято к отправке)
100 Сообщение находится в нашей очереди
101 Сообщение передается оператору
102 Сообщение отправлено (в пути)
103 Сообщение доставлено
104 Сообщение не может быть доставлено: время жизни истекло
105 Сообщение не может быть доставлено: удалено оператором
106 Сообщение не может быть доставлено: сбой в телефоне
107 Сообщение не может быть доставлено: неизвестная причина
108 Сообщение не может быть доставлено: отклонено
130 Сообщение не может быть доставлено: превышено количество сообщений на этот номер в день
131 Сообщение не может быть доставлено: превышено количество одинаковых сообщений на этот номер в минуту
132 Сообщение не может быть доставлено: превышено количество одинаковых сообщений на этот номер в день
200 Неправильный api_id
201 Не хватает средств на лицевом счету
202 Неправильно указан получатель
203 Нет текста сообщения
204 Имя отправителя не согласовано с администрацией
205 Сообщение слишком длинное (превышает 8 СМС)
206 Будет превышен или уже превышен дневной лимит на отправку сообщений
207 На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей
208 Параметр time указан неправильно
209 Вы добавили этот номер (или один из номеров) в стоп-лист
210 Используется GET, где необходимо использовать POST
211 Метод не найден
212 Текст сообщения необходимо передать в кодировке UTF-8 (вы передали в другой кодировке)
220 Сервис временно недоступен, попробуйте чуть позже.
230 Превышен общий лимит количества сообщений на этот номер в день.
231 Превышен лимит одинаковых сообщений на этот номер в минуту.
232 Превышен лимит одинаковых сообщений на этот номер в день.
300 Неправильный token (возможно истек срок действия, либо ваш IP изменился)
301 Неправильный пароль, либо пользователь не найден
302 Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)

Последнее обновление: 08 Июня 2023 в 13:57

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