Verificação de Assinatura e Idempotência em Webhook

Verifique 6MM webhooks do Agente com o corpo bruto do pedido e processe tentativas, timeouts e eventos repetidos sem ações empresariais duplicadas.

Ver como Markdown

Os Webhooks notificam o backend parceiro sobre alterações assíncronas no estado do negócio. Como a entrega pode ser tentada novamente, cada recetor deve verificar a assinatura antes de analisar dados confiáveis e deve processar o evento de forma idempotente.

Cabeçalhos Webhook

CabeçalhoDescrição
X-Agent-TimestampCarimbo de data e hora do Unix em segundos.
X-Agente-NonceSem proteção contra repetições.
X-Agent-SignatureHMAC-SHA256 assinatura.
timestamp + nonce + rawBody

Use o corpo bruto do pedido recebido ao longo de HTTP ao reconstruir o valor assinado. Analisar e voltar a serializar JSON primeiro pode alterar a ordem dos espaços em branco ou dos campos e produzir uma assinatura diferente.

Fluxo de verificação

  1. Leia os cabeçalhos de carimbo temporal, nonce e assinatura.
  2. Capturar o corpo bruto do pedido não modificado.
  3. Construir timestamp + nonce + rawBody.
  4. Calcular HMAC-SHA256 com o parceiro API segredo.
  5. Compare as assinaturas calculadas e recebidas usando uma comparação em tempo constante.
  6. Aplicar as verificações aprovadas de carimbo temporal e não reutilização.
  7. Analisar e processar o evento apenas após o sucesso da verificação.

Quando estiver disponível um verificador oficial de Agent SDK , utilize-o em vez de manter um código de assinatura independente.

Idempotência da ordem

CasoCondução
Pedido inicial de transferênciaCrie uma agentOrderNoglobalmente única.
HTTP pausaConsulta o agentOrderNo original antes de criar um novo.
PROCESSING respostaAguarde pelo estado do webhook ou da encomenda de consulta.
Webhook repetidoDesduplicar por chave de idempotência e estado final.

Armazene informação suficiente para reconhecer uma entrega repetida e recuperar em segurança:

CampoFinalidade
Chave do evento ou do negócioIdentifica de forma única a notificação ou operação.
Número de encomenda do parceiroLiga o evento ao pedido original.
Hash da carga útilAjuda a identificar cargas úteis repetidas em conflito.
Estado atual do processamentoDistingue trabalhos recebidos, processados, bem-sucedidos e falhados.
Estado final do negócioImpede que uma ação terminal seja aplicada duas vezes.
Carimbo temporal processadoApoia políticas de investigação e retenção.

Comprometa o registo de alteração do negócio e de idempotência na mesma transação sempre que possível. Um evento repetido deve devolver o resultado já conhecido em vez de aplicar novamente o saldo, a ordem ou a alteração do utilizador.

Regra do tempo limite e da retentativa

Um HTTP tempo não prova que o pedido original falhou. Consulte a operação usando o agentOrderNooriginal , ou espere pelo seu webhook, antes de decidir se é necessária outra ação. Criar um novo número de ordem de negócio após cada pausa pode causar movimentos duplicados de fundos.

Lista de verificação de produção

  • Verificar a assinatura antes de JSON análise ou processamento empresarial.
  • Preservar o corpo bruto independentemente da carga útil analisada.
  • Rejeitar pedidos obsoletos ou reproduzidos de acordo com a política de integração aprovada.
  • Tornar o processamento de eventos seguro para entregas repetidas e fora de ordem.
  • Registar IDs de eventos, números de encomenda dos parceiros, resultados de processamento e tempo de pedido.
  • Redigir segredos e valores de assinatura dos registos e anexos de suporte.