Introduction
Generalement, lorsque vous faites une requete a un endpoint API, vous vous attendez a obtenir une reponse quasi immediate. Cependant, certaines requetes peuvent prendre beaucoup de temps a traiter, ce qui peut entrainer des erreurs de timeout. Afin d’eviter une erreur de timeout, une reponse en attente est retournee. Puisque vos enregistrements doivent etre mis a jour avec l’etat final de la requete, vous devez soit :- Faire une requete pour une mise a jour (communement appelee polling) ou,
- Ecouter les evenements en utilisant une URL webhook.
Polling vs Webhooks
Le polling necessite de faire une requeteGET a intervalles reguliers pour obtenir le statut final d’une requete. Par exemple, lorsque vous attribuez une adresse a un client pour les depots, vous continuez a faire une requete pour les transactions liees a l’adresse jusqu’a ce que vous en trouviez une.
Avec les webhooks, le serveur de ressources, Blockradar dans ce cas, envoie des mises a jour a votre serveur lorsque le statut de votre requete change. Le changement de statut d’une requete est appele un evenement. Vous ecouterez typiquement ces evenements sur un endpoint POST appele votre URL webhook.
Le tableau ci-dessous met en evidence quelques differences entre le polling et les webhooks :
| Polling | Webhooks | |
|---|---|---|
| Mode de mise a jour | Manuel | Automatique |
| Limitation de debit | Oui | Non |
| Impacte par le scaling | Oui | Non |
Creer une URL webhook
Une URL webhook est simplement un endpoint POST vers lequel un serveur de ressources envoie des mises a jour. L’URL doit analyser une requete JSON et retourner un200 OK :
200 OK dans l’en-tete HTTP. Sans un 200 OK dans l’en-tete de reponse, nous continuerons a envoyer des evenements pendant les 2 heures et 35 minutes suivantes :
- Nous tenterons d’envoyer les webhooks 5 fois avec un delai croissant entre chaque tentative, en commencant par 5 minutes et en augmentant de maniere exponentielle jusqu’a 80 minutes. La duree totale pour ces 5 tentatives sera d’environ 2 heures et 35 minutes.
Tester les Webhooks Localement
Pendant le developpement, vous pouvez configurer votre URL webhook dans votre environnement de portefeuille principal TEST vers une adresse locale, telle quehttp://localhost ou 127.0.0.1.
Pour exposer votre serveur local a Internet a des fins de test, envisagez d’utiliser un outil comme ngrok ou webhook.site. Ces outils vous permettent de voir a quoi ressemble le payload webhook et de simuler des evenements webhook localement avant de deployer votre application dans un environnement de production.
En utilisant ces outils, vous pouvez vous assurer que votre integration webhook fonctionne correctement et gerer tous les problemes dans un environnement local et controle avant de passer a la production.
Renvoyer le Webhook de Transaction
Dans le cas ou pour une raison quelconque vous ne recevez pas le webhook de transaction et que le temps de backoff est ecoule, nous avons fourni une API que vous pouvez utiliser pour renvoyer un webhook de transactionVerifier l’origine de l’evenement
Puisque votre URL webhook est publiquement accessible, vous devez verifier que les evenements proviennent de Blockradar et non d’un acteur malveillant. Il existe deux facons de s’assurer que les evenements vers votre URL webhook proviennent de Blockradar :- Validation de signature (recommande)
Validation de signature
Les evenements envoyes depuis Blockradar portent l’en-tete x-blockradar-signature. La valeur de cet en-tete est une signature HMAC SHA512 du payload de l’evenement signee en utilisant votre cle secrete. La verification de la signature de l’en-tete doit etre effectuee avant de traiter l’evenement :Checklist de Mise en Production
Maintenant que vous avez cree avec succes votre URL webhook, voici quelques facons d’assurer une experience agreable :- Ajoutez l’URL webhook sur vos portefeuilles principaux sur le tableau de bord Blockradar
- Assurez-vous que votre URL webhook est publiquement accessible (les URL localhost ne peuvent pas recevoir d’evenements)
- Si vous utilisez
.htaccess, n’oubliez pas d’ajouter le/final a l’URL - Testez votre webhook pour vous assurer que vous obtenez le corps JSON et retournez une reponse HTTP
200 OK - Si votre fonction webhook a des taches de longue duree, vous devriez d’abord accuser reception du webhook en retournant un
200 OKavant de proceder aux taches de longue duree - Si nous n’obtenons pas une reponse HTTP
200 OKde vos webhooks, nous la signalons comme une tentative echouee - Nous tenterons d’envoyer les webhooks 5 fois avec un delai croissant entre chaque tentative, en commencant par 5 minutes et en augmentant de maniere exponentielle jusqu’a 80 minutes. La duree totale pour ces 5 tentatives sera d’environ 2 heures et 35 minutes.
Types d’evenements
Voici les evenements que nous declenchons actuellement. Nous ajouterons d’autres a cette liste a mesure que nous nous connecterons a plus d’actions a l’avenir.Exemples d’Evenements
Voici des exemples de payloads webhook pour certains des evenements les plus courants :- Depot Reussi
- Depot en Traitement
- Retrait Reussi
- Swap Reussi
Types d’Evenements Disponibles
| Evenement | Description |
|---|---|
deposit.processing | Un depot est en cours de traitement |
deposit.success | Un depot a ete traite avec succes |
deposit.failed | Un depot a echoue |
deposit.cancelled | Un depot a ete annule |
withdraw.processing | Un retrait est en cours de traitement |
withdraw.success | Un retrait a ete traite avec succes |
withdraw.failed | Un retrait a echoue |
withdraw.cancelled | Un retrait a ete annule |
swap.success | Un swap a ete execute avec succes |
swap.failed | Un swap a echoue |
signed.success | Une transaction signee a ete completee avec succes |
signed.failed | Une transaction signee a echoue |
Les payloads webhook complets incluent des informations detaillees sur les transactions, actifs, blockchains et portefeuilles. Consultez les onglets d’exemples ci-dessus pour les structures de payload completes.
Bon codage !

