GuidesFiabilitéÉvénements
Événements
PayHaze vous prévient de chaque changement par une notification signée, renvoyée tant que votre site ne l’a pas acceptée.
Déclarer une destination
Dans Développeurs, puis Notifications : une adresse HTTPS et sa clé de signature pos_whsec_…, montrée une fois.
Vérifier la signature
En-têtes : PayHaze-Event-ID, PayHaze-Delivery-ID, PayHaze-Attempt et PayHaze-Signature, de la forme t=<millisecondes>,v1=<hex>. Le message signé en HMAC-SHA256 est l’horodatage, un point, l’identifiant d’événement, un point, puis le corps brut.
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(raw, eventId, header, secret) {
const parts = Object.fromEntries(header.split(",").map(p => p.split("=")));
const expected = createHmac("sha256", secret).update(parts.t + "." + eventId + "." + raw).digest("hex");
const age = Math.abs(Date.now() - Number(parts.t));
return age < 5 * 60_000 && header.split(",").filter(p => p.startsWith("v1="))
.some(p => p.length === expected.length + 3 && timingSafeEqual(Buffer.from(p.slice(3)), Buffer.from(expected)));
}Doublons et rediffusion
Un même événement peut arriver deux fois : dédupliquez sur PayHaze-Event-ID. Une livraison rediffusée garde son identifiant et son corps, et ne déclenche jamais de nouveau débit.