Webhooks erstellen
Webhooks erstellen
Abschnitt betitelt „Webhooks erstellen“Diese Anleitung hilft Ihnen beim Erstellen von Webhooks mit der Chaingateway-API. Sie enthält Details zum Schreiben eines einfachen Webhook-Empfängers, zum Abonnieren eines Webhooks und zum Umgang mit chain-spezifischen Parametern.
Wie es funktioniert
Abschnitt betitelt „Wie es funktioniert“Unser Webhook-System funktioniert als Instant-Payment-Notification-System. Es kann verwendet werden, um Ihre Software über eine eingehende Zahlung oder einen Token-Empfang zu informieren. Es besteht aus zwei Codeteilen:
Der Webhook: Dies ist die Endpunkt-URL, an die die Webhook-Benachrichtigungen gesendet werden. Diese URL müssen Sie der Chaingateway-API beim Abonnieren des Webhooks mitteilen. Außerdem müssen Sie die Filterparameter wie sender, receiver, contractaddress, token_id und type (Transaktionstyp) angeben. Tritt auf der Blockchain ein Ereignis ein, das diesen Kriterien entspricht, senden wir einen Webhook an die von Ihnen angegebene URL.
Der Webhook-Empfänger: Dies ist der Code, der auf Ihrem Server läuft und auf eingehende Webhook-Benachrichtigungen lauscht. Er empfängt das Webhook-Payload und führt die notwendigen Aktionen in Ihrer Software basierend auf den empfangenen Daten aus.
Um das Webhook-System einzurichten, müssen Sie den Webhook-Empfänger-Code auf Ihrem Server implementieren und die Webhook-URL in der Chaingateway-API konfigurieren. Sobald dies eingerichtet ist, sendet die Chaingateway-API bei jeder Zahlung oder jedem Token-Empfang eine POST-Anfrage an Ihre Webhook-URL, löst den Webhook-Empfänger-Code aus und ermöglicht Ihrer Software, entsprechende Aktionen durchzuführen.
Einen einfachen Webhook-Empfänger schreiben
Abschnitt betitelt „Einen einfachen Webhook-Empfänger schreiben“Ein Webhook-Empfänger ist ein Server-Endpunkt, der auf eingehende HTTP-POST-Anfragen von ChainGateway lauscht. Im Folgenden finden Sie Beispiele für einfache Webhook-Empfänger in verschiedenen Programmiersprachen.
Codebeispiel
Abschnitt betitelt „Codebeispiel“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); }}Einen Webhook zum Abonnieren eines Blockchain-Ereignisses erstellen
Abschnitt betitelt „Einen Webhook zum Abonnieren eines Blockchain-Ereignisses erstellen“Um einen Webhook zu abonnieren, müssen Sie eine Anfrage mit den passenden Parametern an die ChainGateway-API senden.
Parameter
Abschnitt betitelt „Parameter“- url (erforderlich): Die URL Ihres Webhook-Empfängerendpunkts. Muss eine gültige URL sein.
- from: Die Absenderadresse (optional, mindestens eines von
fromodertoist erforderlich). - to: Die Empfängeradresse (optional, mindestens eines von
fromodertoist erforderlich). - contractaddress: Die Contract-Adresse des Tokens (optional).
- token_id: Erforderlich, wenn weder
fromnochtoangegeben ist. - type: Der Transaktionstyp (optional). Mögliche Werte:
TRX,TRC10,TRC20,TRC721.
Beispiel-Authorization-Header
Abschnitt betitelt „Beispiel-Authorization-Header“Ersetzen Sie YOUR_API_TOKEN durch Ihren tatsächlichen API-Token.
Codebeispiel
Abschnitt betitelt „Codebeispiel“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();Wichtige Informationen
Abschnitt betitelt „Wichtige Informationen“- Stellen Sie sicher, dass Ihr Webhook-Empfängerendpunkt öffentlich erreichbar ist und HTTP-POST-Anfragen verarbeiten kann.
- Sichern Sie Ihren Webhook-Endpunkt ab, indem Sie die Quelle eingehender Anfragen prüfen und die Datenintegrität sicherstellen.
- Chaingateway speichert keine sensiblen Informationen wie den Token. Bewahren Sie diese Informationen daher sicher auf.
- Informationen zum Erhalt eines API-Keys und zur Autorisierung finden Sie im Abschnitt „Erste Schritte” der Chaingateway-Dokumentation.