Temps réel
Notifications envoyées en moins de 1 seconde après l\
Signature HMAC
Chaque webhook est signé pour garantir son authenticité.
Retry automatique
Jusqu'à 5 tentatives en cas d'échec avec backoff exponentiel.
Événements disponibles
Paiements
payment.createdUn paiement a été initiépayment.succeededUn paiement a réussipayment.failedUn paiement a échouéRemboursements
refund.createdUn remboursement a été initiérefund.succeededUn remboursement a réussiAbonnements
subscription.createdUn abonnement a été créésubscription.renewedUn abonnement a été créésubscription.cancelledUn abonnement a été crééTransferts
payout.createdUn transfert a été initiépayout.succeededUn transfert a réussiStructure d'un webhook
Chaque webhook envoyé contient les informations suivantes:
{
"id": "evt_abc123",
"type": "payment.succeeded",
"created_at": "2024-03-15T10:30:00Z",
"data": {
"id": "pay_xyz789",
"object": "payment",
"amount": 25000,
"currency": "XOF",
"status": "succeeded",
"provider": "orange_money"
}
}Sécurité
Chaque webhook est signé avec votre secret webhook. Vérifiez toujours la signature avant de traiter les données.
Header de signature
X-Simiz-Signature: sha256=abc123...Vérification (Node.js)
import crypto from 'crypto';
function verifyWebhook(payload: string, signature: string, secret: string): boolean {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}Politique de retry
Si votre endpoint ne répond pas avec un code 2xx, nous réessayons automatiquement:
#1
Immédiat
#2
5 min
#3
30 min
#4
2 heures
#5
24 heures
Répondez rapidement
Votre endpoint doit répondre en moins de 30 secondes. Traitez les webhooks de manière asynchrone si nécessaire.