Incompatibilidade de assinatura
A causa mais comum é assinar JSON analisado em vez do corpo bruto exato ou usar um carimbo de data/hora diferente do cabeçalho da solicitação.
Testador de Webhooks
Edite um corpo de exemplo e gere uma assinatura HMAC-SHA256 e uma requisição cURL para seu ambiente de teste.
Informe o endereço, o segredo de teste e o timestamp.
A assinatura é calculada no navegador. Use um segredo de teste.
Timestamp Unix em milissegundos, como nos cabeçalhos do BoltUtil.
A assinatura e o cURL são atualizados ao editar o JSON.
Informe um segredo, timestamp e JSON válidos.
Calculada com o timestamp, o corpo original e o segredo de teste.
Informe um endereço, segredo, timestamp e JSON válidos.Exemplo de callback de pedido USDC, adaptável a USDT. Pedido, endereços e hash são fictícios e não comprovam pagamento.
A ferramenta não envia requisições. Execute o cURL manualmente no seu ambiente de teste.
Verificação
Verifique com a mesma regra, registre o evento e atualize o pedido.
Ver guia de verificaçãoHMAC_SHA256(timestamp + "." + rawBody, secret)Use o carimbo de data/hora em milissegundos do cabeçalho e o corpo bruto exato para calcular o HMAC antes de analisar JSON. Espaços em branco, quebras de linha e ordem dos campos afetam a assinatura.
Compare a assinatura recebida com um auxiliar de tempo constante fornecido pelo tempo de execução da sua linguagem.
Somente retorne sucesso após registrar o evento ou colocá-lo em uma fila interna durável.
Diagnóstico de Webhooks
A maioria dos problemas vem de verificação de assinatura, parsing do body, tratamento de retentativas ou retorno de sucesso antes de registrar o evento.
A causa mais comum é assinar JSON analisado em vez do corpo bruto exato ou usar um carimbo de data/hora diferente do cabeçalho da solicitação.
Use o segredo do webhook configurado para o endpoint do comerciante. As chaves de API e os segredos do webhook devem ser tratados como credenciais diferentes.
O middleware JSON pode reordenar ou reformatar cargas úteis. Capture o corpo bruto antes de analisar ao verificar assinaturas HMAC.
Respostas fora de 2xx indicam falha. Novas tentativas dependem do tipo de callback, status HTTP e política de retentativas.
Elimine duplicatas por pedido e status ou ID único do evento. Um hash pode conter várias transferências.
Retorne HTTP 2xx somente após gravar o evento em seu banco de dados ou fila. Caso contrário, uma falha poderá causar a perda de uma notificação de pagamento concluída.
Perguntas frequentes
Use estas verificações quando o pagamento foi concluído mas sua aplicação não atualizou.
Verifique o corpo exato da solicitação bruta, o cabeçalho do carimbo de data/hora e o segredo do webhook configurado. Assinar JSON analisado ou um corpo reformatado geralmente produz um HMAC diferente.
Não. BoltUtil usa o status HTTP: 2xx indica recebimento. Verifique e registre o evento antes de responder.
Use restrição única ou operação atômica por pedido e status ou ID do evento. Não use apenas o hash da transação.
Retorne 2xx após verificar e registrar o evento. Em caso de falha, retorne um erro adequado; retentativas dependem do callback e da política.