Passer au contenu principal
Cette page présente des outils et des techniques pour tester les intégrations de webhooks pendant le développement et pour diagnostiquer les problèmes en production.

Développement local

Exposer des serveurs locaux

Étant donné que les webhooks doivent accéder à votre serveur depuis Internet, vous devrez rendre votre serveur de développement local accessible publiquement.

Utiliser Cloudflare Tunnels

Cloudflare Tunnels offre un moyen gratuit d’exposer en toute sécurité votre serveur de développement local sur Internet, sans créer de compte ni ouvrir de ports sur le pare-feu :
# Téléchargez cloudflared depuis les publications GitHub ou utilisez un gestionnaire de paquets

# Exposez votre serveur local
cloudflared tunnel --url localhost:3000

# Exemple de sortie :
# Votre tunnel express a été créé ! Accédez-y (il peut falloir un certain temps avant qu’il soit accessible) :
# https://abc123.trycloudflare.com
Utilisez l’URL fournie dans la configuration de votre webhook :
{
  "url": "https://abc123.trycloudflare.com/webhook"
}

Débogage des problèmes courants

Les webhooks n’arrivent pas

  1. Vérifiez l’accessibilité de l’URL – Assurez-vous que votre point de terminaison est accessible publiquement
  2. Vérifiez l’utilisation de HTTPS – Les URL de webhook doivent utiliser HTTPS
  3. Vérifiez la configuration du pare-feu – Autorisez les connexions entrantes vers le port de votre webhook
  4. Vérifiez les filtres d’événements – Assurez-vous d’être abonné aux bons types d’événements

Échec de la vérification de la signature

  1. Vérifiez la clé secrète – Assurez-vous d’utiliser la bonne clé
  2. Vérifiez l’utilisation du corps brut – Assurez-vous d’utiliser le corps brut de la requête :
// ❌ Incorrect — utilisation du corps parsé
const signature = crypto
  .createHmac('sha256', secret)
  .update(JSON.stringify(req.body))
  .digest('hex');

// ✅ Correct — utilisation du corps brut
app.use('/webhook', express.raw({ type: 'application/json' }));
app.post('/webhook', (req, res) => {
  const signature = crypto
    .createHmac('sha256', secret)
    .update(req.body) // Buffer brut
    .digest('hex');
});