Отправка sms через «SMS Aero» в PHP

Для отправки SMS-сообщений со своего сайта можно воспользоваться сервисом SMS Aero.

Для начала работы с сервисом потребуется регистрация на сайте, далее в разделе «Подписи» нужно добавить подпись и дождаться её модерации и пополнить баланс.

Для доступа к методам API, в качестве логина используется e-mail указанный при регистрации. Ключ можно получить в разделе «Настройки» - «API и SMPP».

Ключ API SMS Aero

Далее можно обращаться к методам сервиса, например через PHP Curl:

Документация: https://smsaero.ru/description/api/#send-sms

$login = 'Логин(email)';	
$key   = 'Ключ';	
$sign  = 'Подпись';	
$phone = '+7 (903) 123-45-67';   
$text  = 'Текст SMS';

$phone = preg_replace('/[^0-9]/', '', $phone);

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERPWD, $login . ':' . $key);
curl_setopt($ch, CURLOPT_URL, 'https://gate.smsaero.ru/v2/sms/send?number=' . $phone . '&text=' . urlencode($text) . '&sign=' . $sign);
$res = curl_exec($ch);
curl_close($ch);

$array = json_decode($res, true);
print_r($array);
PHP

В случаи успешной отправки, ответ будет следующим:

array(
	[success] => true
    [data] => array(
    	[id] => 686483623
        [from] => Подпись
        [number] => 79031234567
        [text] => Текст SMS
        [status] => 8
        [extendStatus] => moderation
        [channel] => FREE SIGN
        [cost] => 2.69
        [dateCreate] => 1604507019
        [dateSend] => 1604507019
	)
    [message] => null
)

Или в случаи ошибки, например «недостаточно средств»:

array(
	[success] => false
	[data] => null
	[message] => Not enough money.
)

Документация: https://smsaero.ru/description/api/#get-balance

$login = 'Логин(email)';	
$key   = 'Ключ';	

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERPWD, $login . ':' . $key);
curl_setopt($ch, CURLOPT_ENCODING, 'application/json');
curl_setopt($ch, CURLOPT_URL, 'https://gate.smsaero.ru/v2/balance');

$res = curl_exec($ch);
curl_close($ch);
		
$res = json_decode($res, true);
if ($res['success']) {
	echo $res['data']['balance'];
} else {
	echo 'Ошибка: ' . $res['message'];
}
PHP

Результат:

109,24

Для удобства можно использовать небольшой класс для отправки SMS.

<?php
class Sms
{
	private static $login = 'Логин(email)';	
	private static $key   = 'Ключ';	
	private static $from  = 'Подпись';	
 
	public static function getBalance()
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
		curl_setopt($ch, CURLOPT_USERPWD, self::$login . ':' . self::$key);
		curl_setopt($ch, CURLOPT_ENCODING, 'application/json');
		curl_setopt($ch, CURLOPT_URL, 'https://gate.smsaero.ru/v2/balance');

		$res = curl_exec($ch);
		curl_close($ch);
		
		$res = json_decode($res, true);
		if ($res['success']) {
			echo $res['data']['balance'];
		} else {
			echo 'Ошибка: ' . $res['message'];
		}
	}
	
	public static function send($number, $text)
	{
		if (!empty($number)) {
			$numbers = explode(',', $number);
			foreach ($numbers as $row) {
				$row = preg_replace('/[^0-9]/', '', $row);
				if (!empty($row)) {
					$ch = curl_init();
					curl_setopt($ch, CURLOPT_HEADER, 0);
					curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
					curl_setopt($ch, CURLOPT_USERPWD, self::$login . ':' . self::$key);
					curl_setopt($ch, CURLOPT_URL, 'https://gate.smsaero.ru/v2/sms/send?number=' . $row . '&text=' . urlencode($text) . '&sign=' . self::$from);
					$res = curl_exec($ch);
					curl_close($ch);
					
					// Лог для отладки
					$log = date('Y-m-d H:i:s') . "\r\n";
					$log .= $res;
					file_put_contents(__DIR__ . '/log_sms.txt', $log . "\r\n\r\n", FILE_APPEND);
				}
			}
		}
	}
}
PHP

Использование:

require_once 'sms.php';

// Отправка SMS
Sms::send('+7 (903) 123-45-67', 'Текст SMS');

// Запрос баланса
echo Sms::getBalance();
PHP
18.11.2020, обновлено 22.07.2021
2690
Следующая запись Кнопка «Показать еще»

Комментарии

, чтобы добавить комментарий.

Другие публикации

Маски ввода для текстовых полей
Применение масок ввода у полей форм значительно упрощает их использование, уменьшает количество ошибок и приводит...
62845
+2
Номер телефона на сайте
В последнее время нельзя пренебрегать кликабельными номерами телефонов т.к. количество клиентов, использующих мобильные телефоны превысило десктопы.
42940
+9
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
79339
+34
Прием платежей на сайте через Юкассу
В данной статье описан процесс оплаты через сервис ЮKassa с помощью прямых запросов к API через PHP cURL.
5743
+4
Подключение к платежной системе Сбербанка
После регистрации в системе эквайринга Сбербанка и получив доступ к тестовой среде, можно приступить к интеграции с...
38255
+18
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
15906
+8