Aller au contenu

Webhooks

Recevez des notifications en temps réel lorsque des événements se produisent dans votre compte.

Les webhooks vous permettent de recevoir des notifications HTTP POST lorsque certains événements se produisent dans votre compte Malipo. Configurez l’URL de votre endpoint dans le tableau de bord pour commencer à recevoir des événements.

Type d’événement Description
charge.succeeded Un paiement a été complété avec succès
charge.failed Un paiement a échoué
charge.declined Un paiement a été refusé par le client
charge.expired Un paiement a expiré avant complétion
charge.refunded Un paiement a été remboursé (total ou partiel)
checkout.session.completed Une session de paiement a été complétée
payout.succeeded Un paiement a été complété avec succès
payout.failed Un paiement a échoué

Chaque événement webhook suit ce format standard :

{
"id": "evt_1234567890",
"object": "event",
"type": "charge.succeeded",
"created_at": "2025-01-15T10:30:00Z",
"data": {
"object": {
"id": "ch_1234567890",
"object": "charge",
"amount": 1000,
"currency": "CDF",
"status": "succeeded"
}
}
}

Vérifiez l’authenticité des webhooks en utilisant les signatures HMAC-SHA256.

Exemple de vérification Node.js
const crypto = require("crypto");
function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(payload, "utf8")
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
const signature = req.headers["x-malipo-signature"];
if (!verifyWebhook(req.body, signature, process.env.WEBHOOK_SECRET)) {
return res.status(400).send("Signature invalide");
}
const event = JSON.parse(req.body);
console.log(event.type);
res.json({ received: true });
});