Webhooks
Per garantir que el webhook és autèntic i enviat per B2Brouter, verifiqueu la signatura inclosa a la capçalera X-B2Brouter-Signature.
A continuació s’explica com podeu verificar la signatura al vostre servidor:
-
Extreure la informació de la capçalera: La capçalera
X-B2Brouter-Signatureconté dos components:t: El timestamp UNIX quan es va signar el payload.s: La signatura HMAC-SHA256. Exemple de capçalera:
t=1732530076,s=9f117925ea533a2ea74b19699e03ab5de5664b4ff021d3d01eaff8868ed29e4d -
Recrear el Payload: Combineu el timestamp rebut (
t) i el payload JSON en brut (data) usant un punt (.):payload = "#{timestamp}.#{data}" -
Calcular la signatura HMAC-SHA256: Useu la
signature_keycompartida i el payload per calcular la signatura:computed_signature = HMAC-SHA256(signature_key, payload) -
Comparar les signatures: Compareu la
computed_signatureamb el valorsde la capçalera. Si coincideixen, el webhook és vàlid.
Exemples
Section titled “Exemples”- 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);