Skip to main content

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 :
  1. Acceptez immédiatement : Retournez un code HTTP 200 dès la réception
  2. Traitement asynchrone : Traitez le webhook en arrière-plan si nécessaire
  3. 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 pending avant l’état final
  • Les retries : un webhook non acquitté est renvoyé (voir Comportement des webhooks)
Sans traitement idempotent, vous risquez de livrer une commande ou de rembourser un client deux fois.

Stratégies d’idempotence

  1. État final : si la commande est déjà en success ou error de votre côté, ignorez le webhook
  2. Référence de transaction : servez-vous de la référence pour retrouver la commande concernée
  3. 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

  1. Logging : Enregistrez toutes les erreurs pour le débogage
  2. Alertes : Configurez des alertes pour les erreurs critiques
  3. 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 transactionDetailsapiTransactionableDetails
  • Statut pending ignoré (jamais traité comme un échec)
  • Traitement idempotent implémenté
  • amount.amount converti 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é