Кейс

Биллинговая платформа для SaaS

Подписки, тарифы и автоматические списания с точным учётом денег и идемпотентными задачами.

Год
2024
Клиент
SaaS-продукт (B2B)
Роль
Senior Backend Developer
Б

Описание

Биллинговая платформа управляет подписками SaaS-продукта: тарифные планы, пробные периоды, апгрейды и даунгрейды с пропорциональным пересчётом, автоматические продления, счета и закрывающие документы. Я реализовал её на Laravel с строгим учётом денег в целых минимальных единицах и расчётами через bcmath, исключив любые ошибки округления. Автоматические списания и продления выполняются идемпотентными очередными задачами, рассчитанными на повторные попытки: каждая операция защищена уникальным ключом и проверкой статуса, чтобы клиент никогда не был списан дважды. Планировщик ежедневно формирует начисления и запускает продления с защитой от перекрытия выполнения. Все переходы состояний подписки логируются для аудита, а интеграция с платёжным провайдером построена на вебхуках с дедупликацией. PostgreSQL хранит данные с продуманной схемой и ограничениями целостности, гарантирующими консистентность финансовых записей.

Задача

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

Решение

Перевёл все денежные расчёты на целые минимальные единицы и bcmath, сделал списания идемпотентными очередными задачами с дедупликацией, добавил журнал переходов состояний и автоматическое формирование начислений через планировщик.

Результаты

Ошибки округления и двойные списания устранены полностью, спорные обращения по биллингу сократились на 70%, закрытие месяца для бухгалтерии ускорилось вдвое, платформа обслуживает более 12 тысяч активных подписок.

Технологии