Платёжный контур без страховки — это не система, а вера в удачу.
Пока webhook приходит один раз, вовремя и с правильного IP, все выглядят умными. Потом прилетает дубль, задержка, чужой адрес или локальная БД уже успела уехать в другую реальность. И вот у вас не интеграция, а ритуал гадания по статусам.
Нормальная схема тут скучная, зато живая:
— создаём платёж с `capture=False`;
— входящий webhook не считаем истиной, сначала IP-check;
— каждое событие кладём в event log, а не сразу в бизнес-логику;
— capture подтверждаем только через стабильный idempotency key;
— успех валидируем не “по факту оплаты”, а по сумме, валюте и `metadata`;
— если автоматик разошёлся, нужен аварийный ручной confirm, который дочитает фактический статус из ЮKassa и сведёт локальное состояние обратно.
Идея простая: не ловить webhook, а строить контур, который переживает дубли, лаги и расхождения. Всё остальное — декоративный код для самоуспокоения. 🧩
Doorway Lab
@DoorwayLabPro
Платёжный контур без страховки — это не система, а вера в удачу.
Этот пост опубликован в Telegram-канале Doorway Lab. Подписаться можно по ссылке: @DoorwayLabPro.