Par Jeff Lindsay · 2007 · Sources officielles vérifiées
En résumé
Mécanisme de communication asynchrone permettant à une application d'envoyer automatiquement des données en temps réel à une autre application via une requête HTTP POST dès qu'un événement survient.
Souvent qualifié d''API inversée' ou de 'reverse API', un webhook fonctionne selon un modèle push plutôt que pull. Au lieu que votre application demande périodiquement 'y a-t-il un nouveau paiement ?', le fournisseur (Stripe, GitHub, Shopify) effectue un appel HTTP POST vers une URL publique sécurisée de votre serveur dès que l'événement `payment_intent.succeeded` se produit, transmettant les données au format JSON.
Traiter un webhook exige de vérifier scrupuleusement l'origine du message et de gérer les réessais en cas de panne.
Le fournisseur signe le payload brut avec une clé secrète partagée transmise dans les en-têtes (ex: `stripe-signature`). Le serveur récepteur recalcule la signature pour garantir l'authenticité et l'intégrité.
En cas de timeout réseau, le fournisseur réémet le webhook plusieurs fois. Le serveur doit enregistrer l'ID de l'événement pour ne jamais traiter deux fois la même opération (ex: ne pas débiter deux fois un client).
Renvoyer immédiatement un statut HTTP 200 et déléguer les traitements longs à une file de tâches en arrière-plan pour éviter les timeouts côté émetteur.
Données techniques vérifiées auprès des documentations officielles, des RFCs et des spécifications standards.