Verificación e Idempotencia de la Firma de Webhook

Verifica 6MM webhooks del 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 asociado 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 idempotentemente.

Encabezados de Webhook

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

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

Flujo de verificación

  1. Lee los encabezados de la marca de tiempo, nonce y signature.
  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 usando una comparación en tiempo constante.
  6. Aplicar las verificaciones aprobadas de frescura y reutilización con marca de tiempo.
  7. Analizar y procesar el evento solo después de que la verificación tenga éxito.

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

Idempotencia de orden

CasoManejo
Solicitud inicial de transferenciaCrea 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 manera segura:

CampoPropósito
Clave de evento o negocioIdentifica de manera única la notificación u operación.
Número de orden de 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 del negocioEvita que una acción terminal se aplique dos veces.
Marca de tiempo 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 nuevamente el saldo, orden o cambio de usuario.

Regla de tiempo fuera y reintento

Un tiempo de espera HTTP no prueba que la solicitud 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 después de cada tiempo de espera puede causar 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 repetidas 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 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.