Ir al contenido
Log in

Webhooks

Para verificar que el webhook es auténtico y fue enviado por B2Brouter, comprueba la firma incluida en la cabecera X-B2Brouter-Signature. A continuación se explica cómo verificar la firma en tu servidor:

  1. Extraer la información de la cabecera: La cabecera X-B2Brouter-Signature contiene dos componentes:

    • t: El timestamp UNIX en el momento en que se firmó el payload.
    • s: La firma HMAC-SHA256. Ejemplo de cabecera:
    t=1732530076,s=9f117925ea533a2ea74b19699e03ab5de5664b4ff021d3d01eaff8868ed29e4d
  2. Recrear el payload: Combina el timestamp recibido (t) y el payload JSON en bruto (data) usando un punto (.):

    payload = "#{timestamp}.#{data}"
  3. Calcular la firma HMAC-SHA256: Usa la signature_key compartida y el payload para calcular la firma:

    computed_signature = HMAC-SHA256(signature_key, payload)
  4. Comparar las firmas: Compara computed_signature con el valor s de la cabecera. Si coinciden, el webhook es válido.

  1. PHP:
$headers = getallheaders();
$header = $headers['X-B2Brouter-Signature'];
preg_match('/t=([^,]+),s=(.+)/', $header, $matches);
$timestamp = $matches[1];
$signatureHash = $matches[2];
$recalculatedHash = hash_hmac(
'sha256',
$timestamp . '.' . file_get_contents('php://input'),
'your_webhook_secret'
);
$isValid = hash_equals($signatureHash, $recalculatedHash);