Crear webhooks
Crear webhooks
Sección titulada «Crear webhooks»Esta guía le ayuda a crear webhooks usando la API de Chaingateway. Incluye detalles sobre cómo escribir un receptor de webhook básico, suscribirse a un webhook y gestionar parámetros específicos de cada chain.
Cómo funciona
Sección titulada «Cómo funciona»Nuestro sistema de webhooks funciona como un sistema Instant Payment Notification. Se puede usar para notificar a su software sobre un pago entrante o la recepción de un token. Consta de dos partes de código:
El webhook: Es la URL de endpoint a la que se enviarán las notificaciones de webhook. Debe proporcionar esta URL a la API de Chaingateway al suscribirse al webhook. También debe especificar los parámetros de filtro como sender, receiver, contractaddress, token_id y type (tipo de transacción). Si ocurre un evento en la blockchain que coincide con esos criterios, enviaremos un webhook a la URL que especificó.
El receptor de webhook: Es el código que se ejecuta en su servidor y escucha las notificaciones de webhook entrantes. Recibe el payload del webhook y realiza las acciones necesarias en su software según los datos recibidos.
Para configurar el sistema de webhooks, debe implementar el código del receptor de webhook en su servidor y configurar la URL del webhook en la API de Chaingateway. Una vez configurado, cada vez que se produzca un pago o la recepción de un token, la API de Chaingateway enviará una solicitud POST a su URL de webhook, activando el código del receptor de webhook y permitiendo que su software realice las acciones correspondientes.
Escribir un receptor de webhook básico
Sección titulada «Escribir un receptor de webhook básico»Un receptor de webhook es un endpoint del servidor que escucha las solicitudes HTTP POST entrantes de ChainGateway. A continuación se muestran ejemplos de receptores de webhook básicos en distintos lenguajes de programación.
Ejemplo de código
Sección titulada «Ejemplo de código»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); }}Crear un webhook para suscribirse a un evento de la blockchain
Sección titulada «Crear un webhook para suscribirse a un evento de la blockchain»Para suscribirse a un webhook, debe enviar una solicitud a la API de ChainGateway con los parámetros adecuados.
Parámetros
Sección titulada «Parámetros»- url (obligatorio): La URL de su endpoint receptor de webhook. Debe ser una URL válida.
- from: La dirección del remitente (opcional; se requiere al menos uno de
fromoto). - to: La dirección del receptor (opcional; se requiere al menos uno de
fromoto). - contractaddress: La dirección del contrato del token (opcional).
- token_id: Obligatorio cuando no están presentes ni
fromnito. - type: El tipo de transacción (opcional). Valores posibles:
TRX,TRC10,TRC20,TRC721.
Ejemplo de cabecera Authorization
Sección titulada «Ejemplo de cabecera Authorization»Reemplace YOUR_API_TOKEN por su token de API real.
Ejemplo de código
Sección titulada «Ejemplo de código»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();Información importante
Sección titulada «Información importante»- Asegúrese de que su endpoint receptor de webhook sea públicamente accesible y pueda gestionar solicitudes HTTP POST.
- Proteja su endpoint de webhook validando el origen de las solicitudes entrantes y garantizando la integridad de los datos.
- Chaingateway no almacena información sensible como el token. Por lo tanto, guarde esta información de forma segura.
- Para obtener una clave de API y aprender sobre la autorización, consulte la sección Primeros pasos de la documentación de Chaingateway.