Sécurité
Vérification de la signature
Toujours vérifier la signature de chaque webhook avant de le traiter. Ne traitez jamais un webhook sans vérifier son authenticité.HTTPS obligatoire
- Utilisez uniquement HTTPS pour vos endpoints webhook
- Ne configurez jamais une URL HTTP en production
- Utilisez des certificats SSL valides
Secret webhook
- Gardez votre secret webhook sécurisé : Ne le commitez jamais dans votre code
- Utilisez des variables d’environnement pour stocker le secret
- Ne partagez jamais votre secret via des canaux non sécurisés
- Régénérez votre secret si vous suspectez une compromission
Performance
Réponse rapide
Répondez rapidement à votre endpoint webhook pour éviter les retries. Le timeout est de 30 secondes, mais visez une réponse en quelques secondes :- Acceptez immédiatement : Retournez un code HTTP 200 dès la réception
- Traitement asynchrone : Traitez le webhook en arrière-plan si nécessaire
- Queue : Utilisez une queue pour les traitements longs
Exemple : Traitement asynchrone
Idempotence
Pourquoi l’idempotence est importante
Les webhooks peuvent être reçus plusieurs fois pour une même transaction, pour deux raisons distinctes :- Les états intermédiaires : JEKO émet des webhooks
pendingavant l’état final - Les retries : un webhook non acquitté est renvoyé (voir Comportement des webhooks)
Stratégies d’idempotence
- État final : si la commande est déjà en
successouerrorde votre côté, ignorez le webhook - Référence de transaction : servez-vous de la référence pour retrouver la commande concernée
- Base de données : stockez les identifiants de transaction déjà traités
Exemple : Vérification d’idempotence
Gestion d’erreurs
Codes de statut appropriés
Retournez toujours un code HTTP approprié :- 200-299 : Succès - webhook traité
- 400-499 : Erreur client - ne sera pas réessayé
- 500-599 : Erreur serveur - sera réessayé
Gestion gracieuse des erreurs
- Logging : Enregistrez toutes les erreurs pour le débogage
- Alertes : Configurez des alertes pour les erreurs critiques
- Fallback : Ayez un mécanisme de fallback si le webhook échoue
Logging et monitoring
Logs recommandés
Enregistrez les informations suivantes pour chaque webhook :- Timestamp de réception
- Type d’événement
- ID de l’événement
- Statut de traitement (succès/échec)
- Temps de traitement
Monitoring
Surveillez :- Taux de succès/échec des webhooks
- Temps de réponse moyen
- Nombre de retries
- Erreurs récurrentes
Tests
Endpoint de test
Créez un endpoint de test pour valider votre intégration :Tests locaux
Utilisez des outils comme ngrok ou localtunnel pour tester vos webhooks localement.Checklist d’intégration
- Endpoint HTTPS configuré
- Vérification de signature implémentée
- Secret webhook stocké de manière sécurisée
- Réponse rapide (timeout de 30 secondes)
- Référence lue avec fallback
transactionDetails→apiTransactionableDetails - Statut
pendingignoré (jamais traité comme un échec) - Traitement idempotent implémenté
-
amount.amountconverti avant comparaison (chaîne ou nombre) - Gestion d’erreurs robuste
- Logging et monitoring configurés
- Tests effectués
Support
Si vous rencontrez des problèmes avec vos webhooks, contactez le support JEKO à hello@jeko.africa avec :- L’ID de l’événement
- Le timestamp de l’événement
- Les logs de votre endpoint
- Le code de statut retourné