Разработчикам · Вебхуки

HMAC-подписанные вебхуки для жизненного цикла вывода.

Когда вашему продукту нужно асинхронное состояние жизненного цикла, регистрируйте эндпоинты вебхуков и проверяйте каждую доставку. Подпись связывает временную метку с точным сырым телом, так что вы можете отклонять подделанные или повторно отправленные полезные нагрузки.

01

События жизненного цикла

СобытиеЗначение
deposit.createdДепозит продавца создан на Base
deposit.partially_filledДепозит заполнен частично
deposit.filledДепозит заполнен полностью
deposit.closedПродавец закрыл или вывел оставшийся баланс
otc.takenПриватный OTC-депозит принят одобренным покупателем
02

Проверяйте каждую доставку

  1. 1Прочитайте заголовок X-Usdctofiat-Signature в форме t=<unix>,v1=<hex>.
  2. 2Соберите подписываемую полезную нагрузку как строку timestamp.rawBody, используя сырое, неразобранное тело.
  3. 3Вычислите HMAC-SHA256 по этой полезной нагрузке с секретом вашего эндпоинта.
  4. 4Сравните за постоянное время со значением v1 в hex, прежде чем доверять событию.
  5. 5При желании отклоняйте доставки, временная метка которых старше выбранного вами окна.
03

Защита от повтора — на ваше усмотрение

Эталонный приёмник в репозитории стартеров считает временные метки старше 5 минут устаревшими, чтобы защититься от повторов. Это окно обеспечивается вашим верификатором, а не отправителем, так что вы можете сделать его жёстче или мягче под вашу задержку и допуск к повторам.

Поскольку подпись покрывает timestamp.rawBody, разбирайте JSON только после прохождения проверки HMAC. Проверка разобранного объекта вместо сырых байтов — самый частый способ незаметно ошибиться в верификации подписи.

04

Регистрация и эксплуатация

  • Регистрируйте эндпоинты с вашим API-ключом Peerlytics; один ключ аутентифицирует поверхности offramp и Peerlytics.
  • Эндпоинты, которые получают повторяющиеся подряд сбои доставки, могут быть отключены, пока вы их не исправите.
  • Используйте приёмник из репозитория стартеров как заведомо рабочий эталон HMAC-верификации.
  • Относитесь к вебхукам как к подсказкам о состоянии; когда это важно, сверяйтесь с ончейн-истиной через deposits().

Common questions

Как подписываются вебхуки USDCtoFiat?

Каждая доставка несёт X-Usdctofiat-Signature: t=<unix>,v1=<hex>, HMAC-SHA256 по строке timestamp.rawBody. Заново вычислите HMAC с секретом вашего эндпоинта по сырому телу и сравните за постоянное время, прежде чем доверять событию.

Как предотвратить повторно отправленные вебхуки?

Отклоняйте доставки, чья подписанная временная метка старше выбранного вами окна. Эталонный приёмник использует 5 минут. Отправитель не обеспечивает окно, так что это ответственность вашего верификатора.

Нужен ли API-ключ для вебхуков?

Да. Создание депозитов не требует разрешений, но регистрация эндпоинтов вебхуков использует API-ключ Peerlytics. Тот же ключ аутентифицирует и API Peerlytics.