Aller au contenu principal

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.