Интеграция SMS-рассылки (SMS.ru) с сайтом
SMS.ru — один из популярных сервисов SMS-рассылок для российских сайтов. Простой HTTP API, оплата за каждое сообщение, возможность регистрации имени отправителя.
Отправка SMS через API
$response = Http::get('https://sms.ru/sms/send', [
'api_id' => env('SMSRU_API_KEY'),
'to' => $phone, // формат: 79001234567
'msg' => "Ваш код подтверждения: {$code}",
'json' => 1,
'from' => 'MyShop' // имя отправителя (нужна регистрация)
]);
$result = $response->json();
// $result['sms'][$phone]['status'] === 'OK' → успех
// $result['sms'][$phone]['status_code'] → код ошибки при неудаче
Класс-обёртка
class SmsRuService
{
public function send(string $phone, string $message): bool
{
$phone = preg_replace('/[^0-9]/', '', $phone);
if (str_starts_with($phone, '8')) {
$phone = '7' . substr($phone, 1);
}
$response = Http::get('https://sms.ru/sms/send', [
'api_id' => config('services.smsru.api_key'),
'to' => $phone,
'msg' => $message,
'json' => 1
]);
return $response->json("sms.{$phone}.status") === 'OK';
}
public function getBalance(): float
{
return Http::get('https://sms.ru/my/balance', [
'api_id' => config('services.smsru.api_key'),
'json' => 1
])->json('balance');
}
}
Типичные сценарии
- OTP-коды при регистрации и входе
- Уведомления о статусе заказа
- Напоминания о записи / брони
- Подтверждение заявки
Проверка остатка и алерты
Нулевой баланс = письма не доходят = пользователи не получают OTP = не могут войти. Нужен мониторинг баланса с алертом в Telegram при снижении ниже порога.
Срок интеграции: несколько часов.







