Платежный контур кажется простым, пока не случается первый сбой.
Что обычно ломается:
— вебхук приходит повторно
— событие прилетает с задержкой
— запрос идет не с того IP
— в ЮKassa статус уже один, а в базе — другой
Если обрабатывать это “в лоб”, система быстро начинает врать.
Что помогает собрать контур без сюрпризов:
1. Создавать платеж с `capture=False`
2. Проверять входящий webhook по IP
3. Сначала писать событие в event log, потом уже обрабатывать
4. Подтверждать capture только через стабильный idempotency key
5. Валидировать оплату по сумме, валюте и metadata
6. Держать аварийный ручной confirm, который может сверить фактический статус в ЮKassa и синхронизировать базу
Смысл не в том, чтобы “принять webhook”.
Смысл в том, чтобы платежный контур был устойчивым к дублям, задержкам и расхождениям.
Если у вас платежи критичны для выручки, то журнал событий и аварийный путь — не запасной вариант. Это часть базовой надежности ⚙️
PPC Sherpa
@PPCSherpaPro
Платежный контур кажется простым, пока не случается первый сбой.
Этот пост опубликован в Telegram-канале PPC Sherpa. Подписаться можно по ссылке: @PPCSherpaPro.