Accueil · Connexion · Créer un compte gratuit

Vérifier la signature d’un webhook

Chaque appel est signé : recalculez l’empreinte avec votre secret pour vérifier qu’il vient bien de Formix.

À quoi ça sert

Refuser les faux appels dans votre système.

Prérequis et forfait

Le secret du webhook (whsec_…), lisible avec GET r=hooks de l’API.

Étapes

  1. Lisez l’en-tête X-Formix-Signature : il a la forme t=<horodatage>,v1=<empreinte>.
  2. Prenez le corps brut de la requête (sans le reformater).
  3. Calculez HMAC-SHA256 de la chaîne « t.corps » avec le secret du webhook.
  4. Comparez avec v1 par une comparaison à temps constant (hash_equals en PHP).
  5. Refusez l’appel si la signature diffère ou si l’horodatage est trop ancien (par exemple plus de 5 minutes).
  6. Répondez par un code 2xx dans les 8 secondes ; sinon Formix réessaiera.
$ok = hash_equals(hash_hmac('sha256', $t . '.' . file_get_contents('php://input'), $secret), $v1);

Résultat attendu

Seuls les appels authentiques sont traités. X-Formix-Delivery identifie la livraison (utile contre les doublons) et X-Formix-Event le type d’événement.

Astuces

  • Chaque nouvel essai est signé de nouveau avec un nouvel horodatage ; l’identifiant de livraison reste le même.

Problèmes fréquents

Ma vérification échoue toujours.
Vérifiez que vous signez le corps brut exact, avec le bon secret (celui du webhook concerné) et le format t + "." + corps.

Pages concernées

Ces pages demandent d’être connecté.

Articles liés