Webhooks или polling — что выбрать для получения статусов платежей? Ответ зависит от требований к консистентности, а не от моды.
Webhooks: Stripe/PayPal пушат события когда что-то меняется. Плюсы — почти реальное время, нет лишних запросов. Минусы — at-least-once delivery (события дублируются), ваш сервер должен быть доступен, порядок событий не гарантирован.
Проблема порядка реальная: payment.succeeded может прийти раньше payment.created если Stripe ретраит. Ваш обработчик должен работать корректно при любом порядке событий.
Polling: вы сами запрашиваете API каждые N секунд. Надёжнее для критичных операций — вы контролируете логику retry. Минус — нагрузка на API и задержка.
Гибридный подход, который работает на практике:
1. Webhook обновляет статус и инвалидирует кэш
2. Критичные операции (выплаты, активация подписок) дополнительно верифицируются через polling с экспоненциальным backoff
3. Background job каждые 15 минут сверяет расходящиеся статусы между вашей БД и API провайдера
Это избыточно? Да. Но в платёжках избыточность — это не overengineering, это страховка от потери денег.
Интеграция платежных решений
@payment_integration_ops_arb
Webhooks или polling — что выбрать для получения статусов платежей? Ответ зависит от требований к консистентно
Этот пост опубликован в Telegram-канале Интеграция платежных решений. Подписаться можно по ссылке: @payment_integration_ops_arb.