Voici les étapes à suivre pour une intégration correcte des webhooks :
Créer un point de terminaison HTTP pour une callback afin de recevoir les requêtes des webhooks.
Ce point de terminaison doit être capable de traiter les requêtes POST telle que ci-dessous:
https://website.com/webhook_payment
Appuyer pour révéler.
C’est un exemple de webhook retourné en cas d’événement payment_intent.created
.
Référencer ce point de terminaison dans l'API HUB2 et le souscrire à un événement.
L’API HUB2 a un point de terminaison dédié à cette action qui doit être appelé avec le contenu suivant :
Appuyer pour révéler.
Voici des exemples de code pour faire ainsi :
Voici un exemple de réponse de l’API HUB2 à cet appel :
Appuyer pour révéler.
Cette réponse contient un secret associé au webhook créé: "secret": "5257a869e7ecebeda32affa62cd..."
.
Ce secret doit être gardé précieusement, il sera nécessaire pour vérifier l’intégrité du webhook reçu.
Pour plus de détails sur l’API Webhooks, consulter la documentation suivante :: Documentation API Webhooks
Vérification de la signature du webhook.
Cette étape est nécessaire pour s’assurer que personne ne peut forger de faux webhooks.
Passer cette étape laisse une vulnérabilité pour des personnes malicieuses qui pourront valider leurs transactions eux-mêmes.
Afin de s’assurer que le webhook reçu provient bien de l’API HUB2, il est impératif de verifier la signature du body (payload).
Ce secret a été généré à l’étape 2 ("secret": "5257a869e7ecebeda32affa62cd..."
dans notre exemple).
Extraire le contenu du BODY de la requête POST envoyée par Hub2 (voir Json response). Il en résulte une chaîne de caractères qui doit être signée via HMAC256 et le secret
.
Voici quelques exemples de procédure selon le langage de programmation utilisé :
Le corps de la requête doit être une string JSON. Soit le framework web utilisé retourne directement du JSON, soit il faut faire un appel type JSON.stringify()
sur le corps de votre requête pour l’obtenir.
Pour finir il faut comparer la signature calculée à celle fournie par Hub2. La signature se situe dans les HEADERS de la requête.
Hub2-Signature
: Nom du headers1
: Correspond à la signature faite avec le secret
actif.s0
: Correspond à la signature faite avec un ancien oldSecret
si présent.Lors d’une mis à jour d’un secret
, le précédent secret
actif devient oldSecret
pendant une durée de 24h et est utilisé pour générer la signature s0
.
Voici les étapes à suivre pour une intégration correcte des webhooks :
Créer un point de terminaison HTTP pour une callback afin de recevoir les requêtes des webhooks.
Ce point de terminaison doit être capable de traiter les requêtes POST telle que ci-dessous:
https://website.com/webhook_payment
Appuyer pour révéler.
C’est un exemple de webhook retourné en cas d’événement payment_intent.created
.
Référencer ce point de terminaison dans l'API HUB2 et le souscrire à un événement.
L’API HUB2 a un point de terminaison dédié à cette action qui doit être appelé avec le contenu suivant :
Appuyer pour révéler.
Voici des exemples de code pour faire ainsi :
Voici un exemple de réponse de l’API HUB2 à cet appel :
Appuyer pour révéler.
Cette réponse contient un secret associé au webhook créé: "secret": "5257a869e7ecebeda32affa62cd..."
.
Ce secret doit être gardé précieusement, il sera nécessaire pour vérifier l’intégrité du webhook reçu.
Pour plus de détails sur l’API Webhooks, consulter la documentation suivante :: Documentation API Webhooks
Vérification de la signature du webhook.
Cette étape est nécessaire pour s’assurer que personne ne peut forger de faux webhooks.
Passer cette étape laisse une vulnérabilité pour des personnes malicieuses qui pourront valider leurs transactions eux-mêmes.
Afin de s’assurer que le webhook reçu provient bien de l’API HUB2, il est impératif de verifier la signature du body (payload).
Ce secret a été généré à l’étape 2 ("secret": "5257a869e7ecebeda32affa62cd..."
dans notre exemple).
Extraire le contenu du BODY de la requête POST envoyée par Hub2 (voir Json response). Il en résulte une chaîne de caractères qui doit être signée via HMAC256 et le secret
.
Voici quelques exemples de procédure selon le langage de programmation utilisé :
Le corps de la requête doit être une string JSON. Soit le framework web utilisé retourne directement du JSON, soit il faut faire un appel type JSON.stringify()
sur le corps de votre requête pour l’obtenir.
Pour finir il faut comparer la signature calculée à celle fournie par Hub2. La signature se situe dans les HEADERS de la requête.
Hub2-Signature
: Nom du headers1
: Correspond à la signature faite avec le secret
actif.s0
: Correspond à la signature faite avec un ancien oldSecret
si présent.Lors d’une mis à jour d’un secret
, le précédent secret
actif devient oldSecret
pendant une durée de 24h et est utilisé pour générer la signature s0
.