Никита Митусов Обсудить задачу

SaveAPP. Подписка продлевается сама, хотя платформа этого не умеет

Мост спрашивает банк раз в 30 секунд. Пока никто не платил, импульс возвращается пустым.

Кнопка в боте ведёт на мою ссылку. Мост создаёт платёж и привязывает карту. Покупатель платит на экране банка.

Покупатель заплатил. Мост узнает об этом на следующем опросе, спустя не больше 30 секунд.

Подписка в таблице, Salebot получил сообщение. Сроки и таймер ведёт Salebot, мост только списывает по команде.

Таймер Salebot дал команду. Мост списал с привязанной карты и сообщил результат.

Клиент заплатил той же ссылкой с новой карты. Новой строки нет, в старой поменялись карта и токен.

Клиент отменил подписку. Мост сообщил Salebot, списаний больше не будет.

Клиент + продуктКартаТокенСтатус
Подписок пока нет
  • tinkoff_payment
  • renewal_success
  • renewal_failed
  • unsubscribed

Адрес, который нельзя поменять

30 марта, первая попытка

Постановка была про вебхук, и я его написал. Автоматизатор сразу ответил: подмена адреса уведомлений не работает, они уже пробовали. Что ни подставляй, уведомление приходит в Salebot. Похоже, адрес зашит при настройке магазина.

30 марта, вторая попытка

В тот же день убрал зависимость от уведомлений. Кнопка в боте ведёт на мою ссылку, мост сам создаёт платёж, сам спрашивает банк о статусе и передаёт ответ в Salebot. Менять терминал и лезть в настройки платформы не понадобилось.

Цена решения

Между оплатой и ответом в боте проходит до 30 секунд. Этот круг идёт в настоящем времени.

30 секунд

Автоматизатор спросил про нагрузку и брошенные ссылки: у ссылки есть время жизни.

Заказчик спросил про блокировки, как на курсе: почта здесь не участвует, схема другая.

Две подписки одного человека

Автоматизатор с первого дня предупредил, что у клиента их может быть несколько. Он же считал, что токен меняется после каждого списания. Я проверил, это не так: токен держится за карту, а каждый первый платёж даёт свой. Поэтому ключ подписки парный: клиент + продукт.

Продукт Араз в месяц

0

Продукт Браз в год

0

Страница отписки, макет

  • Продукт А1 ₽ в месяц, карта ··42
  • Продукт Б1 ₽ в год, карта ··42

Нажмите «Отменить». Линия подписки замрёт, вторая продолжит биться.

Отписка от всех появилась после вопроса автоматизатора: а если запрос придёт без продукта. Каждая отменённая подписка уходит в Salebot отдельным сообщением. Значения условные.

Шлагбаум банка

Первая оплата проходила, автосписание нет. В одном тесте сидели две разные ошибки. Банк заблокировал метод Charge на терминале, а в тесте Salebot была пустая переменная. Подписка в базе при этом лежала верно.

Я написал, что именно запросить у банка, заказчик отправил запрос, и на следующий день метод включили.

Ложный след

client_id and product required

4 апреля метод открыт, а ошибка та же. Моя первая версия про переменную не подтвердилась: автоматизатор показал, что значения заполнены. Я добавил подробный лог, попросил повторить запуск и починил. 6 апреля первое автосписание прошло на тесте, повторное тоже. Автоматизатор написал, что отработало.

Пересказ из переписки.

Ноль новых функций

15 апреля заказчик спросил, как клиенту поменять карту. Я ответил, что без кабинета в боте никак, и оговорился, что код надо проверить.

Автоматизатор сделал две оплаты по одной ссылке. В базе осталась одна строка с новой картой: запись идёт по ключу, выбранному 30 марта, и повторная оплата обновляет подписку. Клиенту достаточно дать ту же ссылку.

30 мартаключдве недели15 апрелясценарий

Кто держал мяч

Десять дней до первого автосписания звучат долго. Код был готов на третий день, дальше шли тесты, ответ банка и один баг.

  1. Старт, заказчик собрал чат на троих
  2. Мост и цикл списаний готовы
  3. Первые прогоны: нет описания и маски карты
  4. Поля добавлены, найден заблокированный Charge
  5. Заказчик пишет в Т-Банк по моей инструкции
  6. Банк включает регулярные платежи
  7. Прогон: всё та же ошибка
  8. Подробный лог, починил, в тот же день отписка
  9. Автосписание на тесте прошло, повторное тоже
  10. Почта в базе и в чеках всех следующих списаний
  11. Две оплаты по одной ссылке, смена карты подтверждена

Берег Salebot

Вёл автоматизатор

  • Воронка и логика бота
  • Дата окончания подписки
  • Таймер продления
  • Команда на списание
  • Реакция на сообщения моста

Он же провёл все тесты, а его вопросы про несколько подписок, нагрузку и смену карты сформировали часть решений. Связь с банком держал заказчик.

Мост

Написал я, с нуля

  • Платёж по своей ссылке и привязка карты
  • Таблица подписок по ключу клиент + продукт
  • Списание по команде
  • Четыре вида сообщений в Salebot
  • Страница и API отписки, от одного продукта или от всех
  • Почта в базе и чек на каждое списание
  • Развёртывание на сервере заказчика

Границу я провёл письменно: сервер только платёжный мост. Автоматизатор может менять логику продлений, не трогая платёжный код.

Мост готов за 3 дня, первое автосписание на тесте прошло на 10-й день.

На 15 апреля рекурренты шли тестово: два продукта, суммы по 1 ₽. Настоящих автосписаний и оборота в переписке нет, поэтому здесь их тоже нет. Заказчик остался со мной на других задачах, например на курсе по монтажу.

Если платформа закрыта, строить надо вокруг неё. В рекуррентах заранее продумайте отписку, смену карты и чек на каждое списание.

март – апрель 2026. Salebot, Т-Банк, отдельный сервис на сервере заказчика.

Нужно похожее? Оплата и подписки: от 7 000 ₽