Что такое вебхуки и зачем они нужны
Вебхуки — это HTTP‑уведомления от провайдера в ваш backend, которые сигнализируют об изменении состояния ресурса: платеж совершился, возврат завершен, вывод средств выполнен. Они позволяют синхронизировать вашу базу с реальным результатом, избегая постоянного polling и ускоряя бизнес‑процессы (выдача доступа, печать чека, обновление статуса заказа).
Настройка endpoint и проверка подписи
Укажите публичный URL, принимающий POST JSON, например https://shop.example.ru/webhooks/payments. Каждый запрос содержит заголовки X-Event-Type, X-Request-Id и X-Signature (HMAC SHA‑256). Для валидации:
- Прочитайте сырое тело запроса без трансформаций.
- Вычислите HMAC по секрету endpoint.
- Сравните с X-Signature в постоянном времени. Ответ 200–204 подтверждает прием. Допускается ответ 202 с асинхронной обработкой через очередь.
Типы событий и полезные payload поля
Основные события:
- payment.succeeded / payment.failed / payment.canceled
- payment.waiting_for_capture (для двухэтапной оплаты)
- refund.succeeded / refund.failed
- payout.succeeded / payout.failed В payload ищите: data.object.id, status, amount, order_id, receipt_info, created_at, version. В metadata можно передавать идентификаторы из вашей системы.
Ретраи, порядок доставки и идемпотентность
Доставка событий «at least once»: возможны дубликаты и перестановки. Мы повторяем отправку по экспоненте до 24 часов или пока не получим 2xx. Рекомендуется: