billing-api
работает2024Биллинг подписок для SaaS
- Задача
- Счета вели в таблицах. Как только появились тарифы, перерасчёты и возвраты, каждый месяц заканчивался ручной сверкой и ошибками, которые доходили до клиентов.
- Моя роль
- Единственный бэкенд-разработчик: модель предметной области, REST API, вебхуки платёжных провайдеров, контейнеризация и деплой.
- Сложность
- Вебхуки платёжек приходят не по порядку и по нескольку раз — наивный обработчик списывает дважды. Сделал идемпотентный журнал событий с ключом дедупликации и очередью ретраев на RabbitMQ: повторный колбэк фиксируется, но повторно не списывает.
- PHP 8.4
- Symfony
- PostgreSQL
- Docker
- RabbitMQ