SMS об ошибке автоплатежа нужно отправлять в двух случаях: когда списание не прошло и когда система создала новую попытку. В статье разберём схему для сайта или личного кабинета: какие события передавать в SMS-сервис, что написать клиенту, как не отправлять дубликаты и как показать итог после повторного списания. Такой сценарий подходит подписочным сервисам, онлайн-школам, сервисам с регулярной оплатой и другим компаниям, которые работают с платежами в BYN.
Какие события нужно передавать в SMS-систему?
Сначала зафиксируйте в платёжном модуле понятные статусы. Для уведомлений достаточно разделить процесс на четыре события: запланированное списание, ошибка списания, новая попытка и успешная оплата. Бизнесу не требуется передавать в SMS весь технический журнал платежа. Сервису нужны идентификатор клиента, номер телефона, сумма, дата следующего действия и безопасная ссылка на страницу оплаты или настройки подписки.
Рабочая последовательность выглядит так:
- Система запускает списание по расписанию.
- Платёжный сервис возвращает ошибку или статус, который означает, что деньги не списаны.
- Ваш сайт создаёт задачу на повторную попытку и отправляет клиенту уведомление.
- После каждой новой попытки система проверяет итоговый статус.
- При успешной оплате клиент получает подтверждение, а дальнейшие сообщения по этой ошибке прекращаются.
Для каждого события задайте отдельный технический код: payment_failed, retry_scheduled, payment_success. Названия могут быть другими, но смысл должен оставаться однозначным. Если платёжный сценарий связан с оплатой через ЕРИП, полезно заранее описать, какие статусы возвращает ваш платёжный контур и в какой момент их можно передавать в уведомления. Отдельный разбор SMS о платежах через ЕРИП по SMPP есть в материале «Как отправлять SMS о платежах через ЕРИП по SMPP».
Как отправить первое SMS после ошибки списания?
Первое сообщение должно отвечать на три вопроса: что произошло, что будет дальше и какое действие доступно клиенту. Технический текст ошибки вроде «declined» или «error 51» для этого не подходит. Клиенту достаточно написать, что очередное списание не прошло, подписка пока не продлена, а компания повторит попытку или предлагает обновить способ оплаты.
Пример нейтрального шаблона:
«Не удалось списать [сумма] BYN за подписку [название]. Повторим оплату [дата или период]. Если хотите оплатить сейчас, откройте: [ссылка]. Поддержка: [контакт]».
Если повторная попытка уже запланирована, укажите это прямо. Не обещайте точное время, если его ещё не назначила платёжная система. Когда причина известна и её можно объяснить без технических деталей, допустим вариант: «Проверьте срок действия карты или доступный баланс». Но такая подсказка должна соответствовать реальному сценарию ошибки.
Ссылку в SMS лучше вести на страницу, где клиент видит сумму и назначение платежа. Не вставляйте в сообщение данные карты, пароль или код подтверждения. Для каждой отправки сохраняйте внутренний идентификатор операции, чтобы потом связать уведомление с результатом списания.
Как сообщить о повторной попытке списания?
Сообщение о повторной попытке отличается от первого уведомления. Здесь клиенту нужно сообщить, что действие запущено или будет запущено, но не объявлять оплату успешной до получения подтверждения от платёжного сервиса.
Подходящий шаблон:
«Повторно проверяем оплату подписки [название] на [сумма] BYN. Следующая попытка запланирована на [дата, время]. Если способ оплаты изменился, обновите его: [ссылка]».
Если компания делает несколько попыток, задайте правило заранее. Например, после первой ошибки отправляется уведомление с предложением обновить способ оплаты, перед следующей попыткой приходит короткое напоминание, а после окончательного отказа клиент получает сообщение с ручной инструкцией. Точное число попыток зависит от платёжного провайдера и условий подписки, поэтому его нужно закрепить в вашей бизнес-логике, а не прятать в тексте SMS.
| Событие | Что отправить клиенту | Чего не писать |
|---|---|---|
| Первое списание не прошло | Сумма, название услуги, факт ошибки, следующий шаг | Внутренний код отказа без пояснения |
| Повторная попытка назначена | Дата или период новой попытки, ссылка на изменение оплаты | Гарантию успешного списания |
| Повторная попытка не прошла | Новый статус и понятный способ решить вопрос | Сообщение, будто платёж ещё обрабатывается |
| Оплата подтверждена | Сумма, услуга и новый срок действия | Повторное сообщение об ошибке |
Как не отправлять дубли и неверные статусы?
Главная техническая проблема сценария возникает, когда платёжная система повторно передаёт одно событие. Если сайт реагирует на каждый входящий запрос, клиент может получить два или больше одинаковых SMS. Поэтому отправка должна зависеть от уникального ключа события, например сочетания идентификатора платежа, статуса и номера попытки.
Перед отправкой проверьте:
- есть ли такое событие в журнале отправок;
- соответствует ли статус последнему состоянию платежа;
- не завершилась ли оплата успешно после предыдущей ошибки;
- не отправлялось ли клиенту такое же сообщение по этой попытке;
- разрешено ли событию запускать SMS сейчас.
Отдельно обработайте задержанные ответы. Платёж сначала может получить статус «в обработке», а затем перейти в «успешно» или «ошибка». В такой ситуации не отправляйте сообщение об окончательном отказе сразу. Сначала дождитесь статуса, который ваша платёжная интеграция считает финальным.
После отправки сохраняйте результат доставки. Статус «запрос принят» ещё не означает, что SMS дошло до телефона. Для диагностики полезно разделять ошибку API, отказ оператора и отсутствие подтверждения доставки. Проверить логику таких статусов помогает материал «Почему SMS не доходит до клиента: разбор DLR в SMPP».
Как подключить SMS к сайту или личному кабинету?
Для малого бизнеса обычно достаточно связать платёжный модуль, сервер сайта и SMS API. После изменения статуса сервер формирует запрос с номером телефона, шаблоном и переменными. SMS-сервис возвращает идентификатор сообщения, а ваш сайт записывает его рядом с платежом. Если интеграцию делает подрядчик, передайте ему таблицу событий и готовые тексты, чтобы правила не потерялись в переписке.
До запуска подготовьте тестовые сценарии:
- ошибка первой оплаты;
- успешная повторная попытка;
- ошибка повторной попытки;
- задержанный статус платежа;
- повторная передача одного и того же события;
- отсутствующий или некорректный номер телефона.
Для первичной проверки доступности интеграции можно использовать инструкцию «Как самостоятельно проверить доступность SMS API для сайта». Тестируйте не только сам факт отправки, но и содержимое сообщения: сумму, дату, ссылку, название услуги и финальный статус.
Типичные ошибки при настройке SMS об автоплатеже
- Отправка SMS сразу после технического сбоя без проверки финального статуса платежа.
- Использование одного шаблона для ошибки, повторной попытки и успешной оплаты.
- Повторная отправка одного сообщения при каждом запросе от платёжной системы.
- Отсутствие суммы и названия услуги, из-за чего клиент не понимает, о каком списании идёт речь.
- Обещание конкретного результата, хотя система только поставила новую попытку в очередь.
- Отсутствие журнала, где видно событие, время отправки и результат доставки.
3 шага, которые можно сделать на этой неделе:
- Составьте карту статусов: ошибка, повторная попытка, успешная оплата и окончательный отказ.
- Подготовьте по одному короткому SMS-шаблону для каждого статуса.
- Проверьте защиту от дублей и протестируйте сценарий, в котором повторная попытка завершается успешно.



