<b>Биллинг нельзя тестировать «на живых шлюзах»: ломается выручка, а не только стенд</b>
Изоляция окружений в биллинге начинается не с Dev/Stage/Prod, а с разрыва контуров данных: отдельные merchant account, ключи, очереди, вебхуки и лимиты ретраев. Если тестовый запрос способен пройти в боевой процессинг, у вас нет теста — есть риск утечки revenue leakage.
Для внешних шлюзов нужен не мок «200 OK», а симулятор сбоев: таймауты, дублирование callback, частичная авторизация, отказ после списания, рассинхрон статусов. Идемпотентность проверяется именно на таких сценариях: один и тот же charge request должен либо приводить к одному финансовому событию, либо безопасно пересчитываться без двойного дебета.
Обязательно прогоняйте сценарии с разными точками отказа: до записи в ledger, после записи, после отправки в gateway, до подтверждения webhook. Отдельно тестируйте dunning-цепочку: пропуск уведомления, повторный retry, восстановление после временной недоступности провайдера. Это единственный способ увидеть, где у вас рвется консистентность между платежом, подпиской и бухгалтерской проводкой.
Хороший стенд для биллинга — это не копия прода, а контролируемая среда, где любая ошибка шлюза воспроизводится, изолируется и оставляет проверяемый след. Идемпотентность в биллинге — это не рекомендация, а базовый вопрос выживания системы.
Подписки: биллинг-лаб
@subscriptions_billing_lab_arb
<b>Биллинг нельзя тестировать «на живых шлюзах»: ломается выручка, а не только стенд</b>
Этот пост опубликован в Telegram-канале Подписки: биллинг-лаб. Подписаться можно по ссылке: @subscriptions_billing_lab_arb.