Recepción y validación de firma
Objetivo
Garantizar que el webhook recibido:
- Proviene de Bidzi (autenticidad)
- No fue alterado (integridad)
- No es replay (repetición maliciosa)
¿Qué envía Bidzi?
Bidzi envía un POST con un body JSON (serializado desde WebhookTransaction) y agrega headers para trazabilidad y verificación:
X-Bidzi-Id: identificador único del intento de entrega.
X-Bidzi-Timestamp: timestamp.
X-Bidzi-Signature: firma del request para verificación.
Firma del request
Bidzi genera la firma a partir del contenido:
{X-Bidzi-Id}.{X-Bidzi-Timestamp}.{jsonBody}
y la envía en el header X-Bidzi-Signature.
Manejo de errores
Todo el proceso está dentro de un try-catch que captura cualquier Throwable. Si ocurre un error (por ejemplo, falla de red, timeout o error de serialización), se registra el error y se persiste el evento usando saveEvent con código 500 y el mensaje del error, para dejar constancia del fallo.
Validación del webhook
Con el uso de X-Bidzi-Signature (generada a partir de X-Bidzi-Id, X-Bidzi-Timestamp y el body del request) y su verificación con el secreto compartido, se confirma que el webhook proviene de Bidzi y que el contenido no fue alterado durante el envío. De esta manera, el webhook recibido queda validado de forma segura antes de ser procesado.
Updated about 2 months ago
