Ventara

/Кейсы

Биллинг подписок, переживающий сбои

Продукт мониторинга доступности, построенный вокруг того, что чаще всего делают неправильно: подписки Stripe, вебхуки и промежуточные состояния. Это наш собственный продукт, сделанный для того, чтобы его показывать, а не описывать.

INTERFACENext.jsSERVICESFastAPICeleryStripeDATAPostgreSQLRedisPLATFORMDockerARCHITECTURE
  • FastAPI
  • PostgreSQL
  • Celery
  • Redis
  • Stripe
  • Next.js
  • Docker

/Задача

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

/Решение

Обработчики вебхуков идемпотентны и ключуются по id события, поэтому повторная доставка ничего не меняет. Состояние подписки выводится из Stripe, а не зеркалится оптимистично, поэтому пропущенное событие самокорректируется на следующей синхронизации. Цены версионируются: изменение тарифа не переоценивает молча существующих клиентов. Фоновые задачи выполняют Celery и Redis, весь стек контейнеризован.

/Результат

244 автотеста, покрывающих именно биллинговые сценарии, включая повторную и нарушенную по порядку доставку вебхуков, плюс админ-консоль для просмотра состояния подписок. Работает с реальными тестовыми ключами Stripe, то есть интеграция проверяется, а не мокается.

/Задействованные услуги