Несоответствие подписи
Наиболее распространенной причиной является подписание проанализированного JSON вместо точного необработанного тела или использование отметки времени, отличной от заголовка запроса.
Тестер Webhook
Измените пример тела запроса и создайте подпись HMAC-SHA256 и команду cURL для тестовой среды.
Укажите адрес, тестовый ключ и метку времени.
Подпись вычисляется в браузере. Используйте тестовый ключ.
Метка Unix в миллисекундах, как в заголовках BoltUtil.
Подпись и cURL обновляются при изменении JSON.
Введите ключ, корректную метку времени и JSON.
Вычисляется из метки времени, исходного тела и тестового ключа.
Укажите корректный адрес, ключ, метку времени и JSON.Пример уведомления по заказу USDC; можно указать USDT. Заказ, адреса и хеш вымышлены и не подтверждают оплату.
Инструмент не отправляет запросы. Запустите cURL вручную в тестовой среде.
Проверка подписи
Проверьте по той же формуле, сохраните событие и обновите заказ.
Руководство по проверкеHMAC_SHA256(timestamp + "." + rawBody, secret)Используйте метку времени в миллисекундах из заголовка и точное необработанное тело для расчета HMAC перед анализом JSON. Пробелы, разрывы строк и порядок полей влияют на подпись.
Сравните полученную подпись с помощником постоянного времени, предоставляемым средой выполнения вашего языка.
Возвращайте успех только после записи события или помещения его в устойчивую внутреннюю очередь.
Устранение неполадок Webhook
Проверьте исходное тело, секрет и статус ответа, чтобы обнаружить проблему.
Наиболее распространенной причиной является подписание проанализированного JSON вместо точного необработанного тела или использование отметки времени, отличной от заголовка запроса.
Используйте секрет веб-перехватчика, настроенный для конечной точки продавца. Ключи API и секреты веб-перехватчиков следует рассматривать как разные учетные данные.
Промежуточное программное обеспечение JSON может переупорядочивать или переформатировать полезные нагрузки. Захватите необработанное тело перед анализом при проверке подписей HMAC.
Ответ вне 2xx означает сбой. Повтор зависит от типа уведомления, HTTP-статуса и политики.
Устраняйте повторы по заказу и статусу или уникальному ID события. Один хеш может содержать несколько переводов.
Возвращайте HTTP 2xx только после записи события в базу данных или очередь. В противном случае при сбое уведомление о завершенном платеже может быть потеряно.
FAQ
Проверка подписи, ответы и дублирование поставок.
Проверьте точное тело необработанного запроса, заголовок метки времени и настроенный секрет веб-перехватчика. Подписание проанализированного JSON или переформатированного тела обычно приводит к другому HMAC.
Нет. BoltUtil использует HTTP-статус: 2xx означает успешную доставку. Сначала проверьте и сохраните событие.
Используйте уникальное ограничение или атомарную операцию по заказу и статусу или ID события. Одного хеша недостаточно.
Возвращайте 2xx после проверки и сохранения. При сбое верните подходящую ошибку; повтор зависит от типа уведомления и политики.