Créer des webhooks
Créer des webhooks
Section intitulée « Créer des webhooks »Ce guide vous aide à créer des webhooks avec l’API Chaingateway. Il détaille l’écriture d’un récepteur de webhook basique, l’abonnement à un webhook et la gestion des paramètres spécifiques à chaque chaîne.
Comment ça fonctionne
Section intitulée « Comment ça fonctionne »Notre système de webhook fonctionne comme un système Instant Payment Notification. Il peut être utilisé pour informer votre logiciel d’un paiement entrant ou d’une réception de token. Il se compose de deux parties de code :
Le webhook : Il s’agit de l’URL d’endpoint vers laquelle les notifications webhook seront envoyées. Vous devez fournir cette URL à l’API Chaingateway lors de l’abonnement au webhook. Vous devez également spécifier les paramètres de filtre comme sender, receiver, contractaddress, token_id et type (type de transaction). Si un événement sur la blockchain se produit et correspond à ces critères, nous enverrons un webhook vers l’URL que vous avez spécifiée.
Le récepteur de webhook : Il s’agit du code qui s’exécute sur votre serveur et écoute les notifications webhook entrantes. Il reçoit le payload du webhook et effectue les actions nécessaires dans votre logiciel en fonction des données reçues.
Pour mettre en place le système de webhook, vous devez implémenter le code du récepteur de webhook sur votre serveur et configurer l’URL du webhook dans l’API Chaingateway. Une fois configuré, chaque fois qu’un paiement ou une réception de token se produit, l’API Chaingateway enverra une requête POST vers votre URL de webhook, déclenchant le code du récepteur de webhook et permettant à votre logiciel d’entreprendre les actions appropriées.
Écrire un récepteur de webhook basique
Section intitulée « Écrire un récepteur de webhook basique »Un récepteur de webhook est un endpoint serveur qui écoute les requêtes HTTP POST entrantes provenant de ChainGateway. Voici des exemples de récepteurs de webhook basiques dans différents langages de programmation.
Exemple de code
Section intitulée « Exemple de code »const express = require('express');const app = express();const port = 3000;
app.use(express.json());
app.post('/webhook', (req, res) => { console.log('Received webhook:', req.body); res.status(200).send('Webhook received');});
app.listen(port, () => { console.log(`Webhook receiver listening at http://localhost:${port}`);});from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])def webhook(): data = request.json print('Received webhook:', data) return jsonify({'status': 'Webhook received'}), 200
if __name__ == '__main__': app.run(port=3000)<?phpif ($_SERVER['REQUEST_METHOD'] === 'POST') { $data = file_get_contents('php://input'); $json = json_decode($data, true); file_put_contents('php://stderr', print_r($json, TRUE)); http_response_code(200); echo json_encode(['status' => 'Webhook received']);}?>/** To integrate this code into a Laravel application, follow these steps:** 1. Create a new route in your `routes/web.php` file:* Route::post('/webhook', [WebhookController::class, 'handleWebhook']);** 2. Create a new controller using the Artisan command:* php artisan make:controller WebhookController** This will create a new `WebhookController` class in the `app/Http/Controllers` directory.** 3. Open the newly created `WebhookController.php` file and replace its content with the code provided above.** Now, your Laravel application is ready to handle webhooks using the `WebhookController` class.**/
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class WebhookController extends Controller{ public function handleWebhook(Request $request) { $data = $request->all(); file_put_contents('php://stderr', print_r($data, TRUE)); return response()->json(['status' => 'Webhook received'], 200); }}Créer un webhook pour s’abonner à un événement blockchain
Section intitulée « Créer un webhook pour s’abonner à un événement blockchain »Pour vous abonner à un webhook, vous devez envoyer une requête à l’API ChainGateway avec les paramètres appropriés.
Paramètres
Section intitulée « Paramètres »- url (requis) : L’URL de votre endpoint récepteur de webhook. Doit être une URL valide.
- from : L’adresse de l’émetteur (optionnel, au moins un des deux
fromoutoest requis). - to : L’adresse du destinataire (optionnel, au moins un des deux
fromoutoest requis). - contractaddress : L’adresse du contrat du token (optionnel).
- token_id : Requis lorsque ni
fromnitone sont présents. - type : Le type de transaction (optionnel). Valeurs possibles :
TRX,TRC10,TRC20,TRC721.
Exemple d’en-tête Authorization
Section intitulée « Exemple d’en-tête Authorization »Remplacez YOUR_API_TOKEN par votre token API réel.
Exemple de code
Section intitulée « Exemple de code »curl --request POST \ --url https://api.chaingateway.io/v2/webhooks \ --header 'Accept: application/json' \ --header 'content-type: application/json' \ --header 'Authorization: YOUR_API_TOKEN' \ --data '{ "url": "http://yourdomain.com/webhook", "from": "TXSenderAddress", "to": "TXReceiverAddress", "contractaddress": "0xTokenContractAddress", "token_id": "12345", "type": "TRC20"}'import requests
url = "https://api.chaingateway.io/v2/webhooks"payload = { "url": "http://yourdomain.com/webhook", "from": "TXSenderAddress", "to": "TXReceiverAddress", "contractaddress": "0xTokenContractAddress", "token_id": "12345", "type": "TRC20"}headers = { 'Accept': 'application/json', 'content-type': 'application/json', 'Authorization': 'YOUR_API_TOKEN'}
response = requests.post(url, json=payload, headers=headers)print(response.json())const axios = require('axios');
const url = 'https://api.chaingateway.io/v2/webhooks';const payload = { url: 'http://yourdomain.com/webhook', from: 'TXSenderAddress', to: 'TXReceiverAddress', contractaddress: '0xTokenContractAddress', token_id: '12345', type: 'TRC20'};const headers = { 'Accept': 'application/json', 'content-type': 'application/json', 'Authorization': 'YOUR_API_TOKEN'};
axios.post(url, payload, { headers }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); });<?phprequire 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();$response = $client->post('https://api.chaingateway.io/v2/webhooks', [ 'headers' => [ 'Accept' => 'application/json', 'content-type' => 'application/json', 'Authorization' => 'YOUR_API_TOKEN', ], 'json' => [ 'url' => 'http://yourdomain.com/webhook', 'from' => 'TXSenderAddress', 'to' => 'TXReceiverAddress', 'contractaddress' => '0xTokenContractAddress', 'token_id' => '12345', 'type' => 'TRC20' ]]);
echo $response->getBody();?><?php
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([ 'Accept' => 'application/json', 'content-type' => 'application/json', 'Authorization' => 'YOUR_API_TOKEN',])->post('https://api.chaingateway.io/v2/webhooks', [ 'url' => 'http://yourdomain.com/webhook', 'from' => 'TXSenderAddress', 'to' => 'TXReceiverAddress', 'contractaddress' => '0xTokenContractAddress', 'token_id' => '12345', 'type' => 'TRC20']);
echo $response->body();Informations importantes
Section intitulée « Informations importantes »- Assurez-vous que votre endpoint récepteur de webhook est publiquement accessible et peut traiter les requêtes HTTP POST.
- Sécurisez votre endpoint webhook en validant la source des requêtes entrantes et en garantissant l’intégrité des données.
- Chaingateway ne stocke pas d’informations sensibles comme le token. Conservez donc ces informations de manière sécurisée.
- Pour obtenir une clé API et en savoir plus sur l’autorisation, consultez la section Prise en main de la documentation Chaingateway.