Тестер Webhook

Проверьте WebhookСверьте подпись

Измените пример тела запроса и создайте подпись HMAC-SHA256 и команду cURL для тестовой среды.

Подпись Webhook

Настройте тест, измените тело и скопируйте подпись и запрос.

01

Настройка теста

Укажите адрес, тестовый ключ и метку времени.

Подпись вычисляется в браузере. Используйте тестовый ключ.

Метка Unix в миллисекундах, как в заголовках BoltUtil.

02

Измените тело, создайте подпись

Подпись и cURL обновляются при изменении JSON.

Подпись

HMAC-SHA256

Введите ключ, корректную метку времени и JSON.

Вычисляется из метки времени, исходного тела и тестового ключа.

Корректный JSON
cURL / POSTТестовый запрос
Укажите корректный адрес, ключ, метку времени и JSON.

Пример уведомления по заказу USDC; можно указать USDT. Заказ, адреса и хеш вымышлены и не подтверждают оплату.

Инструмент не отправляет запросы. Запустите cURL вручную в тестовой среде.

Сначала проверьте подпись

Проверьте по той же формуле, сохраните событие и обновите заказ.

Руководство по проверке
HMAC_SHA256(timestamp + "." + rawBody, secret)
  1. 01

    Проверьте необработанное тело

    Используйте метку времени в миллисекундах из заголовка и точное необработанное тело для расчета HMAC перед анализом JSON. Пробелы, разрывы строк и порядок полей влияют на подпись.

  2. 02

    Используйте безопасное по времени сравнение

    Сравните полученную подпись с помощником постоянного времени, предоставляемым средой выполнения вашего языка.

  3. 03

    Запишите безопасно, а затем верните 2xx.

    Возвращайте успех только после записи события или помещения его в устойчивую внутреннюю очередь.

Не совпадает? Начните здесь

Проверьте исходное тело, секрет и статус ответа, чтобы обнаружить проблему.

01

Несоответствие подписи

Наиболее распространенной причиной является подписание проанализированного JSON вместо точного необработанного тела или использование отметки времени, отличной от заголовка запроса.

02

Неправильный секрет

Используйте секрет веб-перехватчика, настроенный для конечной точки продавца. Ключи API и секреты веб-перехватчиков следует рассматривать как разные учетные данные.

03

Парсер тела изменил полезную нагрузку

Промежуточное программное обеспечение JSON может переупорядочивать или переформатировать полезные нагрузки. Захватите необработанное тело перед анализом при проверке подписей HMAC.

04

Конечная точка возвращает не 2xx

Ответ вне 2xx означает сбой. Повтор зависит от типа уведомления, HTTP-статуса и политики.

05

Обработка не идемпотентна

Устраняйте повторы по заказу и статусу или уникальному ID события. Один хеш может содержать несколько переводов.

06

Успех превыше долговечности

Возвращайте HTTP 2xx только после записи события в базу данных или очередь. В противном случае при сбое уведомление о завершенном платеже может быть потеряно.

Вопросы во время отладки

Проверка подписи, ответы и дублирование поставок.

Почему проверка подписи вебхука не удалась?

Проверьте точное тело необработанного запроса, заголовок метки времени и настроенный секрет веб-перехватчика. Подписание проанализированного JSON или переформатированного тела обычно приводит к другому HMAC.

Должна ли конечная точка веб-перехватчика возвращать SUCCESS в теле ответа?

Нет. BoltUtil использует HTTP-статус: 2xx означает успешную доставку. Сначала проверьте и сохраните событие.

Как мне обрабатывать повторяющиеся доставки веб-перехватчиков?

Используйте уникальное ограничение или атомарную операцию по заказу и статусу или ID события. Одного хеша недостаточно.

Когда моя конечная точка должна вернуть HTTP 2xx?

Возвращайте 2xx после проверки и сохранения. При сбое верните подходящую ошибку; повтор зависит от типа уведомления и политики.