Retour aux développeurs
Webhooks
Inopay émet des webhooks signés HMAC SHA-256 pour vous notifier des événements clés. Tous les webhooks sont retentés avec backoff exponentiel jusqu'à 24 h.
Événements
Liste des événements disponibles. Vous choisissez les abonnements lors de l'enregistrement de l'endpoint.
| Événement | Description |
|---|---|
| order.created | Ordre accepté par Inopay et transmis à la SGI. |
| order.executed | Ordre exécuté entièrement ou partiellement par la SGI. |
| order.cancelled | Ordre annulé par l'utilisateur ou la SGI. |
| kyc.attested | Nouvelle attestation KYC émise. |
| kyc.revoked | Attestation KYC révoquée. |
| audit.snapshot | Snapshot d'audit quotidien ancré et publié. |
Signature HMAC SHA-256
Vérifiez chaque webhook avec la clé partagée et le header X-Inopay-Signature. Comparaison en temps constant obligatoire.
// Verify Inopay webhook signature (Node.js)
import { createHmac, timingSafeEqual } from 'node:crypto';
export function verifyInopaySignature(
rawBody: string,
header: string,
secret: string,
): boolean {
// header format: "t=<timestamp>,v1=<hex>"
const parts = Object.fromEntries(
header.split(',').map((p) => p.split('=')),
);
const expected = createHmac('sha256', secret)
.update(`${parts.t}.${rawBody}`)
.digest('hex');
return timingSafeEqual(
Buffer.from(expected, 'hex'),
Buffer.from(parts.v1, 'hex'),
);
}