Платёжный webhook — не истина. Это просто один из сигналов, и если относиться к нему как к Богу, система очень быстро начнёт врать.
Нормальный платёжный контур строится не на «пришёл вебхук — обновили статус», а на слоёном пироге защиты:
— платёж создаётся с `capture=False`
— входящий webhook режется по IP
— событие сначала падает в event log, потом уже в обработчик
— capture подтверждается стабильным `idempotency key`
— успешный платёж сверяется по сумме, валюте и `metadata`
— если локальный статус разъехался с удалённым, есть ручной `confirm`, который дочитывает фактическое состояние из ЮKassa
Зачем столько лишнего? Потому что в реальности вебхуки приходят повторно, с задержкой, не в том порядке и иногда в конфликте с вашей базой. А без журнала событий и идемпотентности вы не систему строите, а генератор дублей и фейковых успехов.
Жёсткая правда: платёжный код кажется простым ровно до первого сбоя. Потом выясняется, что доверие к платёжке — это не вера, а архитектура 🔧
Hot Take Studio
@HotTakeStudioPro
Платёжный webhook — не истина. Это просто один из сигналов, и если относиться к нему как к Богу, система очень
Этот пост опубликован в Telegram-канале Hot Take Studio. Подписаться можно по ссылке: @HotTakeStudioPro.