Skip to main content

Обзор

Вебхуки позволяют вам получать автоматические HTTP-уведомления о важных событиях в вашем аккаунте, таких как подтверждённые платежи, обработанные возвраты или завершённые выводы средств.

Доступные события

Структура полезной нагрузки

Все вебхуки следуют одной базовой структуре:

Субсчета

Если событие относится к субсчёту, поле subAccount содержит его reference:
Если у субсчёта нет собственного эндпоинта для вебхуков, его события доставляются на эндпоинты основного аккаунта. Именно поэтому поле subAccount критично: только оно показывает, какому кошельку принадлежит событие.Всегда используйте это поле, чтобы зачислить событие в нужный кошелёк, и не считайте, что каждое событие, пришедшее на эндпоинт основного аккаунта, относится к самому основному аккаунту.

Отправляемые заголовки

Каждый запрос вебхука включает следующие заголовки:

Проверка подписи

Каждый вебхук подписан с использованием HMAC-SHA256 и secret вашего эндпоинта (отображается только один раз при создании). Для проверки выполните следующие шаги:
  1. Вычислите HMAC-SHA256 от сырого тела запроса, используя ваш secret в качестве ключа
  2. Добавьте к результату в hex префикс sha256=
  3. Сравните с заголовком X-Pague-Signature, используя сравнение за константное время
Node.js (crypto)
Всегда используйте сравнение за константное время (timingSafeEqual), чтобы избежать атак по времени (timing attacks). Никогда не сравнивайте подписи через ===.

Примеры полезной нагрузки

payment_completed

Отправляется, когда платёж PIX подтверждён.
split в вебхуке — это то, что было фактически распределено, а не то, что вы запросили при создании платежа. Значения расходятся, когда комиссия аккаунта меняется между созданием платежа и оплатой: чистая сумма уменьшается, и части урезаются в том порядке, в котором были отправлены, вместо того чтобы зачисление сорвалось.Для сверки с выпиской кошелька всегда используйте значение из вебхука, а не то, что вы отправили в запросе. Поле появляется только при наличии разделения; у платежа без него этого ключа нет.

payment_expired

Отправляется, когда платёж PIX истекает без подтверждения.

refund_completed

Отправляется, когда возврат обработан.
Соглашение о netAmount в возвратах: это то, что фактически получает адресат события (конечный клиент) — то есть полная сумма возврата. Комиссия за возврат списывается отдельно с баланса продавца. Общая стоимость возврата для продавца составляет amount + feeAmount.

withdrawal_completed

Отправляется, когда вывод средств успешно обработан.

withdrawal_failed

Отправляется, когда вывод средств отклонён или завершился сбоем.

withdrawal_reversed

Отправляется, когда вывод средств отменён (реверсирован) со стороны PSP.

balance_block_created

Отправляется, когда создаётся блокировка баланса (MED, судебная или административная).

balance_block_approved

Отправляется, когда блокировка баланса одобрена и сумма возвращена исходному плательщику.

balance_block_rejected

Отправляется, когда блокировка баланса отклонена и сумма возвращается в доступный баланс продавца.

Лучшие практики

Возвращайте статус 200 OK как можно быстрее. При необходимости обрабатывайте вебхук асинхронно.
Используйте eventId, чтобы не обрабатывать одно и то же событие дважды. Вебхуки могут отправляться повторно в случае сбоя.
Настраивайте ваш эндпоинт только с HTTPS, чтобы обеспечить безопасность данных.

Повторные попытки

Если ваш эндпоинт не отвечает статусом 2xx, мы попытаемся отправить вебхук повторно:
  • 5 попыток с экспоненциальным backoff
  • Начальный интервал: 2 секунды
  • Максимальный интервал: ~30 секунд между попытками
После 5 неуспешных попыток вебхук помечается как неуспешный.