Система подписок ломается не на оплате, а на состояниях аккаунта
Подписка — это не кнопка «оплатить». Это набор правил: кто имеет доступ, когда доступ меняется, что делать при ошибке платежа и как вернуть пользователя без ручной поддержки.
Минимальный набор состояний:
— trial: доступ есть, денег ещё нет;
— active: доступ оплачен;
— past_due: платёж не прошёл, но есть льготный период;
— paused: доступ заморожен по инициативе пользователя;
— canceled: продление отключено;
— expired: доступ закрыт.
Главная ошибка — хранить только дату окончания тарифа. Так вы теряете контекст: пользователь сам отменил подписку, платёж упал, карта просрочена или админ выдал доступ вручную. Для SaaS лучше хранить событие, причину и источник изменения.
Отдельно продумайте downgrade: что происходит с лимитами, данными и интеграциями. Нельзя просто «обрезать» аккаунт без понятного сценария — это создаёт тикеты и недоверие.
Вывод: сначала спроектируйте жизненный цикл подписки, потом подключайте оплату. Платёжный провайдер списывает деньги, но бизнес-логику доступа должна контролировать ваша система.
Разработка SaaS на Team
@team_saas_development_ww
Система подписок ломается не на оплате, а на состояниях аккаунта
Этот пост опубликован в Telegram-канале Разработка SaaS на Team. Подписаться можно по ссылке: @team_saas_development_ww.