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.