Outil
Votre serveur reçoit les demandes de devis QuoteBuilder par webhook et la signature ne passe pas ? Collez le corps brut de la requête, le secret enregistré avec le webhook et la valeur de l'en-tête X-QuoteBuilder-Signature. L'outil recalcule la signature dans votre navigateur, la compare et cherche les causes d'écart les plus courantes. Rien n'est envoyé : utilisez quand même un secret de test. Webhook de demande de devis.
Outil de diagnostic, calcul local dans votre navigateur (Web Crypto). Aucune donnée n'est envoyée ni conservée. Aucune valeur n'est inventée : tout vient de ce que vous collez. Le résultat dit seulement si ce corps, ce secret et cet en-tête correspondent ; il ne garantit pas la sécurité de votre récepteur. Côté QuoteBuilder, l'événement envoyé est « quote.submitted », en POST, en JSON, avec une seule tentative par webhook actif : un envoi en échec n'est pas renvoyé automatiquement.
Node.js (corps brut conservé, comparaison en temps constant) :
const crypto = require("crypto");
function signatureValide(corpsBrut, entete, secret) {
const attendue = crypto.createHmac("sha256", secret).update(corpsBrut).digest("hex");
const recue = String(entete || "").trim().toLowerCase();
if (!/^[0-9a-f]{64}$/.test(recue)) return false;
return crypto.timingSafeEqual(Buffer.from(attendue, "hex"), Buffer.from(recue, "hex"));
}
// corpsBrut : le Buffer ou la chaîne lue AVANT JSON.parse
// entete : req.headers["x-quotebuilder-signature"]PHP :
$corpsBrut = file_get_contents('php://input');
$recue = strtolower(trim($_SERVER['HTTP_X_QUOTEBUILDER_SIGNATURE'] ?? ''));
$attendue = hash_hmac('sha256', $corpsBrut, $secret);
if (!hash_equals($attendue, $recue)) {
http_response_code(401);
exit;
}
$demande = json_decode($corpsBrut, true);Ensuite : compte Free · webhook de demande de devis vers votre CRM · funnel de devis formation professionnelle · sources d'une demande : funnel, API, plugins · estimateur du coût de la double saisie · Intégrations · démo rayonnage.
Non. Le corps, le secret et l'en-tête restent dans votre navigateur. Le HMAC SHA-256 est calculé avec Web Crypto. Rien n'est envoyé.
X-QuoteBuilder-Signature : 64 caractères hexadécimaux minuscules, HMAC SHA-256 du corps brut, sans préfixe sha256=.
La signature porte sur les octets reçus. Un outil qui réindente le JSON change le corps. Signez le corps brut, avant tout parsing.
Non. Chaque webhook actif reçoit une seule tentative par demande. Un échec se rattrape ensuite par l'API.
Compte Free sans carte. Menu Support, API & webhooks, secret HMAC. La démo rayonnage montre un parcours public.
Commencer gratuitement