Отправка SMS на PHP: API библиотеки sms.ru и других сервисов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Отправка SMS на PHP: обзор API библиотек и готовых решений

В современных веб-приложениях отправка SMS-сообщений остаётся востребованной функцией: подтверждение регистрации, двухфакторная аутентификация, уведомления о статусе заказа. В этой статье мы разберём, как реализовать отправку SMS на PHP с помощью популярных API-библиотек и сервисов. Рассмотрим как официальные SDK, так и лёгкие решения на cURL.

1. Выбор SMS-провайдера и библиотеки

Перед началом работы необходимо зарегистрироваться в одном из SMS-сервисов и получить API-ключ. Для PHP существует несколько проверенных вариантов:

  • sms.ru – популярный российский сервис с простым API и официальной PHP-библиотекой.
  • Twilio – международный гигант с мощным SDK для PHP (twilio/sdk).
  • ClickSend – универсальный сервис с поддержкой REST API.
  • Простой cURL-класс – если не хотите подключать внешние зависимости.

2. Установка библиотек через Composer

Для работы с Twilio или ClickSend удобнее всего использовать Composer. Пример установки:

composer require twilio/sdk
composer require clicksend/clicksend-php

Для sms.ru официальная библиотека также устанавливается через Composer:

composer require smsru/smsru

Если вы предпочитаете не использовать менеджер зависимостей, можно скачать PHP-файлы вручную с GitHub или написать свой класс на cURL.

3. Пример отправки SMS через sms.ru

Сервис sms.ru предоставляет простой и понятный API. Ниже приведён пример отправки сообщения с использованием официальной библиотеки:

<?php
require_once 'vendor/autoload.php';

use SMSRU\SMSRU;

$sms = new SMSRU('ВАШ_API_КЛЮЧ');

$data = new stdClass();
$data->to = '79123456789';        // Номер получателя
$data->text = 'Тестовое сообщение'; // Текст SMS
$data->from = 'MySite';            // Имя отправителя (подпись)

$response = $sms->send_one($data);

if ($response->status == 'OK') {
    echo "Сообщение отправлено. ID: " . $response->sms_id;
} else {
    echo "Ошибка: " . $response->status_text;
}
?>

Важно: предварительно в личном кабинете sms.ru необходимо зарегистрировать подпись отправителя и пополнить баланс.

4. Отправка SMS через Twilio SDK

Twilio – один из самых надёжных сервисов для международной отправки. Пример кода на PHP:

<?php
require_once 'vendor/autoload.php';

use Twilio\Rest\Client;

$account_sid = 'ВАШ_ACCOUNT_SID';
$auth_token = 'ВАШ_AUTH_TOKEN';
$twilio_number = '+1234567890'; // Номер, полученный в Twilio

$client = new Client($account_sid, $auth_token);

$message = $client->messages->create(
    '+79123456789', // Номер получателя
    [
        'from' => $twilio_number,
        'body' => 'Привет от Twilio и PHP!'
    ]
);

echo "Отправлено с ID: " . $message->sid;
?>

Twilio поддерживает двустороннюю связь, вебхуки и проверку статуса доставки.

5. Реализация без сторонних библиотек (cURL)

Если вы не хотите подключать Composer, можно написать универсальную функцию на cURL. Пример для sms.ru:

<?php
function sendSms($api_key, $phone, $message) {
    $url = 'https://sms.ru/sms/send';
    $params = [
        'api_id' => $api_key,
        'to' => $phone,
        'msg' => $message,
        'json' => 1
    ];

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

$result = sendSms('ВАШ_API_КЛЮЧ', '79123456789', 'Тест через cURL');
if ($result['status'] == 'OK') {
    echo 'SMS отправлена';
} else {
    echo 'Ошибка: ' . $result['status_text'];
}
?>

Такой подход подходит для быстрой интеграции без дополнительных зависимостей.

Рекомендаций