Кейс
Биллинговая платформа для SaaS
Подписки, тарифы и автоматические списания с точным учётом денег и идемпотентными задачами.
- Год
- 2024
- Клиент
- SaaS-продукт (B2B)
- Роль
- Senior Backend Developer
Описание
Биллинговая платформа управляет подписками SaaS-продукта: тарифные планы, пробные периоды, апгрейды и даунгрейды с пропорциональным пересчётом, автоматические продления, счета и закрывающие документы. Я реализовал её на Laravel с строгим учётом денег в целых минимальных единицах и расчётами через bcmath, исключив любые ошибки округления. Автоматические списания и продления выполняются идемпотентными очередными задачами, рассчитанными на повторные попытки: каждая операция защищена уникальным ключом и проверкой статуса, чтобы клиент никогда не был списан дважды. Планировщик ежедневно формирует начисления и запускает продления с защитой от перекрытия выполнения. Все переходы состояний подписки логируются для аудита, а интеграция с платёжным провайдером построена на вебхуках с дедупликацией. PostgreSQL хранит данные с продуманной схемой и ограничениями целостности, гарантирующими консистентность финансовых записей.
Задача
Самописный биллинг допускал ошибки округления при пропорциональном пересчёте, иногда списывал клиентов дважды при сбоях и не давал прозрачной истории начислений для поддержки и бухгалтерии.
Решение
Перевёл все денежные расчёты на целые минимальные единицы и bcmath, сделал списания идемпотентными очередными задачами с дедупликацией, добавил журнал переходов состояний и автоматическое формирование начислений через планировщик.
Результаты
Ошибки округления и двойные списания устранены полностью, спорные обращения по биллингу сократились на 70%, закрытие месяца для бухгалтерии ускорилось вдвое, платформа обслуживает более 12 тысяч активных подписок.