Платежный контур ломается не на «создать оплату», а на первом сбое в реальности.
В норме кажется, что достаточно дождаться webhook и обновить статус. На практике прилетают дубли, задержки, запросы не с того IP, а удаленный платеж уже живет в одном состоянии, пока локальная база — в другом.
Поэтому webhook нельзя считать истиной без проверки.
Что добавляют в рабочую схему:
— `capture=False` на старте;
— проверку входящего webhook по IP;
— event log: сначала событие в журнал, потом в обработчик;
— `idempotency key` для capture;
— валидацию успешного платежа по сумме, валюте и `metadata`;
— аварийный ручной `confirm`, который дочитывает фактический статус из ЮKassa и синхронизирует базу.
Смысл не в «надежде, что webhook придет правильно», а в контуре, который выдерживает повтор, задержку и расхождение состояний.
Для платежей это и есть доверие: не декларация, а проверяемая логика.
Proof & Process
@ProofProcessPro
Платежный контур ломается не на «создать оплату», а на первом сбое в реальности.
Этот пост опубликован в Telegram-канале Proof & Process. Подписаться можно по ссылке: @ProofProcessPro.