Bonnes pratiques webhook
1. Renvoyer rapidement un 200
Traitez les webhooks de manière asynchrone. Retournez immédiatement une réponse 200, puis gérez l’événement dans un job en arrière-plan.
app.post('/webhooks/ikawaari', (req, res) => {
// Accuser réception immédiatement
res.status(200).json({ received: true });
// Traiter de manière asynchrone
processEvent(req.body).catch(console.error);
});
2. Gérer les événements dupliqués
Les webhooks peuvent être livrés plus d’une fois. Utilisez l’id de l’événement pour dédupliquer :
async function processEvent(event) {
const alreadyProcessed = await db.events.findOne({ eventId: event.id });
if (alreadyProcessed) return;
await db.events.insert({ eventId: event.id, processedAt: new Date() });
// Traiter l’événement...
}
3. Vérifier les signatures
Vérifiez toujours les signatures webhook en production.
4. Gérer les types d’événements qui vous intéressent
Ignorez les événements dont vous n’avez pas besoin :
const relevantEvents = ['payment_intent.succeeded', 'payment_intent.payment_failed'];
if (!relevantEvents.includes(event.type)) {
return res.status(200).json({ received: true });
}
5. Utiliser HTTPS
Utilisez toujours des endpoints HTTPS en production. Ikawaari ne livrera pas de webhooks à des URLs HTTP en mode live.
6. Surveiller la livraison
Vérifiez le statut de livraison des webhooks dans Developers → Webhooks → [endpoint] → Attempts dans le dashboard.