Подписка в TG-боте ломается не на платеже, а на логике доступа и отписки
Для подписочной модели в Telegram-боте нужны не «платёжки», а связка: провайдер, вебхуки, хранилище статуса и планировщик продлений. На практике в Laravel часто берут cashier-like подход + queue jobs, а для Node — SDK провайдера и отдельный слой billing service, чтобы не смешивать оплату с логикой бота.
Что важно в либах:
— нормальные webhook handlers с идемпотентностью;
— retry на неуспешные списания;
— событие expiry, которое снимает доступ автоматически;
— хранение подписки отдельно от user profile;
— проверка статуса при каждом входе в premium-функцию.
Для Laravel удобно, когда библиотека дружит с очередями и Eloquent: так проще писать отложенные проверки, обновлять статусы и не ловить дубли при повторной отправке вебхука. В Node лучше искать пакет, где есть чистые callbacks, понятные типы событий и возможность обернуть всё в свою транзакцию. Если либа навязывает бизнес-логику — это минус.
На практике подписка в боте должна жить как state machine: trial → active → grace period → expired. Тогда проще подключать Stars, TON-кошелёк или внешний биллинг без переписывания ядра. А доступ к контенту выдавайте не по факту оплаты, а по проверке текущего статуса.
Если вы выбираете стек, смотрите не на «удобную оплату», а на то, как быстро сможете восстановить статус подписки после сбоя и как просто отменить доступ без ручной работы.
Telegram Bots & Mini Apps Money
@tgbots_money_radar
Подписка в TG-боте ломается не на платеже, а на логике доступа и отписки
Этот пост опубликован в Telegram-канале Telegram Bots & Mini Apps Money. Подписаться можно по ссылке: @tgbots_money_radar.