Verificación de firma en Webhook e Idempotencia

Verifica 6MM webhooks de Agente con el cuerpo de la solicitud en bruto y procesa reintentos, tiempos de espera y eventos repetidos sin acciones comerciales duplicadas.
Ver como Markdown

Los Webhooks notifican a un backend socio sobre cambios asíncronos en el estado del negocio. Como la entrega puede intentarse de nuevo, cada receptor debe verificar la firma antes de analizar datos confiables y debe procesar el evento de forma idempotente.

Encabezados de webhook

CabeceraDescripción
X-Agent-TimestampMarca de tiempo de Unix en segundos.
X-Agente-NonceProtección contra repeticiones.
X-Agent-SignatureHMAC-SHA256 firma.
timestamp + nonce + rawBody

Utiliza el cuerpo exacto de la solicitud en bruto recibido sobre HTTP al reconstruir el valor con firma. Analizar y volver a serializar JSON primero puede cambiar el orden del espacio en blanco o de los campos y producir una firma diferente.

Flujo de verificación

  1. Lee los encabezados de la marca de tiempo, nonce y de la firma.
  2. Capturar el cuerpo de la solicitud sin modificar.
  3. Construye timestamp + nonce + rawBody.
  4. Calcular HMAC-SHA256 con el compañero API secreto.
  5. Comparar las firmas calculadas y recibidas mediante una comparación en tiempo constante.
  6. Aplicar los controles aprobados de fecha y reutilización de la hora.
  7. Analizar y procesar el evento solo después de que la verificación tenga éxito.

Cuando haya disponible un verificador oficial de Agent SDK , úsalo en lugar de mantener un código de firma independiente.

Idempotencia de orden

CasoManejo
Solicitud inicial de traspasoCrea una agentOrderNoúnica a nivel mundial.
HTTP tiempo fueraConsulta el agentOrderNo original antes de crear uno nuevo.
PROCESSING respuestaEspera el estado del webhook o de la consulta de la orden.
Webhook repetidoDeduplicar por clave de idempotencia y estado final.

Guarda suficiente información para reconocer una entrega repetida y recuperarla de forma segura:

CampoPropósito
Clave de evento o negocioIdentifica de forma única la notificación u operación.
Número de pedido del socioConecta el evento con la solicitud original.
Hash de carga útilAyuda a identificar cargas útiles repetidas en conflicto.
Estado actual de procesamientoDistingue trabajos recibidos, procesando, exitosos y fallidos.
Estado final de la empresaEvita que una acción terminal se aplique dos veces.
Marca temporal procesadaApoya políticas de investigación y retención.

Compromete el registro de cambio de negocio e idempotencia en la misma transacción cuando sea posible. Un evento repetido debería devolver el resultado ya conocido en lugar de aplicar de nuevo el saldo, pedido o cambio de usuario.

Regla de tiempo muerto y reintento

Un tiempo de espera HTTP no demuestra que la petición original falló. Consulta la operación usando el agentOrderNooriginal o espera su webhook antes de decidir si se requiere otra acción. Crear un nuevo número de orden de negocio tras cada tiempo de espera puede provocar movimientos duplicados de fondos.

Lista de verificación de producción

  • Verificar la firma antes de JSON análisis o procesamiento empresarial.
  • Preservar el cuerpo bruto independientemente de la carga útil analizada.
  • Rechazar solicitudes obsoletas o reproducidas según la política de integración aprobada.
  • Hacer que el procesamiento de eventos sea seguro para entregas repetidas y fuera de orden.
  • Registrar los IDs de eventos, números de pedido de socios, resultados de procesamiento y tiempo de solicitud.
  • Redactar secretos y valores de firma de registros y adjuntos de soporte.