Zum Inhalt springen

Webhooks

Erfahren Sie, wie die Webhook-Funktion von Chaingateway Ihrem Server Instant-Payment-Benachrichtigungen liefern kann.

Die Webhooks von Chaingateway liefern Ihren Systemendpunkten Echtzeit-Instant-Payment-Benachrichtigungen. Dazu sollten Sie einen Webhook erstellen, kurz bevor die Zahlung erfolgt. Diese Webhooks verfügen über mehrere Filteroptionen und liefern Ihnen Transaktionsinformationen, sobald eine Transaktion abgewickelt wurde, die Ihren Filterkriterien entspricht.

Webhooks: Webhooks sind eine Möglichkeit für Anwendungen, Echtzeit-Benachrichtigungen an andere Anwendungen oder Dienste zu senden. Im Blockchain-Kontext können Webhooks verwendet werden, um Benachrichtigungen über verschiedene Ereignisse zu erhalten, etwa neu geminte Blöcke, bestätigte Transaktionen oder ausgelöste Smart-Contract-Ereignisse.

Wenn Sie einen Webhook einrichten, geben Sie einen URL-Endpunkt in Ihrer Anwendung an, der die Benachrichtigungen empfängt. Sobald das angegebene Ereignis eintritt, sendet das Blockchain-Netzwerk eine HTTP-POST-Anfrage an Ihren Webhook-Endpunkt mit den relevanten Daten. Ihre Anwendung kann diese Daten dann verarbeiten und entsprechende Aktionen ausführen, etwa eine Datenbank aktualisieren, Benachrichtigungen senden oder andere Prozesse auslösen.

Instant Payment Notifications (IPNs): IPNs sind eine spezielle Art von Webhook, die im Kontext von Zahlungssystemen verwendet wird, einschließlich blockchainbasierter Zahlungssysteme. IPNs werden typischerweise verwendet, um Benachrichtigungen über zahlungsbezogene Ereignisse zu erhalten, etwa erfolgreiche Zahlungen, fehlgeschlagene Zahlungen oder Rückerstattungen.

Wenn eine Zahlung auf einem Blockchain-Netzwerk erfolgt, kann eine IPN ausgelöst werden, um Ihre Anwendung über den Zahlungsstatus zu informieren. So kann Ihre Anwendung ihre internen Datensätze aktualisieren, Nutzern sofortiges Feedback geben oder weitere Aktionen basierend auf dem Zahlungsstatus auslösen.

Sowohl Webhooks als auch IPNs sind essenziell für den Aufbau echtzeitfähiger und ereignisgesteuerter Anwendungen, die mit Blockchain-Netzwerken interagieren. Sie ermöglichen es Ihrer Anwendung, stets über die neuesten Ereignisse informiert zu sein und sofortige Maßnahmen basierend auf diesen Ereignissen zu ergreifen.

Unser Webhook-System sendet Nachrichten in diesem Format

{
"id": "9d18457f-c71c-4be4-ae7c-ce04e48359ed",
"webhook_id": "9ced86a9-b8d9-4bc2-bbd8-5ffe5b456bc8",
"from": "TTd9qHyjqiUkfTxe3gotbuTMpjU8LEbpkN",
"to": "DScWVXehzWdV2YS8fA2ryNsiHpKiLgAxM",
"blocknumber": "65542464",
"datetime": "2024-09-25 14:48:27",
"tokenid": null,
"type": "TRC20",
"contractaddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"txid": "18f52f2a55b94a6e3705de4abb18e95dfce79970f27b29450705c561e12b6988",
"amount": 108935
}

Um einen Webhook zu erstellen, müssen Sie folgende Schritte durchlaufen:

  • Einen Empfängerendpunkt erstellen, an den wir Ihnen die Webhooks senden können
  • Einen Webhook auf Chaingateway mit dem Empfängerendpunkt erstellen
  • Auf Blockchain-Ereignisse warten
  • Die Anfrage verarbeiten und den korrekten Antwortcode zurücksenden

Bevor Sie einen Webhook erstellen, müssen Sie zunächst einen Empfänger einrichten. Ein Webhook-Empfänger ist eine Komponente oder ein Endpunkt, der auf eingehende Webhook-Anfragen lauscht. Er fungiert als Empfänger oder Listener für Ereignisse, die von externen Systemen oder Diensten ausgelöst werden. Wenn ein Webhook-Ereignis eintritt, stellt das sendende System eine HTTP-Anfrage an die URL des Webhook-Empfängers und liefert Daten zu diesem Ereignis.

Die Aufgabe des Webhook-Empfängers besteht darin, die eingehenden Webhook-Anfragen zu verarbeiten. Er führt üblicherweise Aktionen basierend auf den empfangenen Daten aus, etwa eine Datenbank aktualisieren, eine Benachrichtigung auslösen oder spezifische Geschäftslogik ausführen.

Um einen Webhook-Empfänger einzurichten, müssen Sie in Ihrer Anwendung einen Endpunkt definieren, der eingehende HTTP-Anfragen empfangen kann. Dieser Endpunkt sollte öffentlich erreichbar sein, damit das sendende System Webhook-Ereignisse an ihn senden kann. Sobald der Empfänger eingerichtet ist, können Sie das sendende System so konfigurieren, dass es Webhook-Ereignisse an die URL des Empfängers sendet.

::: tip Wichtig: Es ist entscheidend, dass Webhook-Empfänger von außen erreichbar sind. Das bedeutet, dass die in den Webhook-Empfängern definierten Endpunkt-URLs öffentlich erreichbar sein sollten, damit die sendenden Systeme Webhook-Ereignisse an sie senden können. Stellen Sie sicher, dass Sie Ihre Netzwerkeinstellungen, Firewalls und Sicherheitsmaßnahmen entsprechend konfigurieren, um eingehende HTTP-Anfragen an die Webhook-Empfänger zuzulassen. :::

#!/bin/bash
# Define the endpoint URL
ENDPOINT_URL="https://example.com/webhook"
# Start a local server to receive the webhook
nc -l -p 8080 > webhook_payload.json &
# Print the server's PID
echo "Webhook receiver is running with PID: $!"
# Wait for the webhook payload to be received
sleep 5
# Read the received payload from the file
PAYLOAD=$(cat webhook_payload.json)
# Process the webhook data
# Update database, trigger notifications, execute business logic, etc.
# Send the response back to the sender
echo "Webhook received successfully" | curl -X POST -d @- $ENDPOINT_URL
# Clean up the temporary files
rm webhook_payload.json

Sobald Sie Ihren öffentlichen Webhook-Empfänger erstellt haben, können wir jetzt den Webhook erstellen.

Beim Erstellen eines Webhooks haben Sie mehrere Optionen, um Ihre relevanten Ereignisse zu filtern.

  • from (string): Die Adresse des Absenders.
  • to (string): Die Adresse des Empfängers.
  • contractaddress (string): Die Adresse eines Contracts, den Sie verfolgen möchten.
  • token_id (string): Eine NFT-Token-ID.
  • type (string enum): Der zu verfolgende Asset-Typ. Mögliche Werte für Ethereum sind ETH, ERC20 oder ERC721. Prüfen Sie die Dokumentation für andere Chains.

Sie müssen außerdem den Parameter url hinzufügen, der ein vollständig qualifizierter Domainname oder eine IP-Adresse mit der Route zu dem zuvor erstellten Webhook-Empfängerendpunkt sein muss.

Daraus ergibt sich ein erforderliches Set aus „url” und entweder „from” oder „to”. Der Rest ist optional.

Beispiele:

Terminal-Fenster
curl --request POST \
--url https://api.chaingateway.io/api/v2/ethereum/webhooks \
--header 'Authorization: YOUR_SECRET_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"from": "0x922815dFbEa128eAeaAAa185508fe078bECeFBBE",
"to": "0x922815dFbEa128eAeaAAa185508fe078bECeFBBE",
"url": "http://vonrueden.com/",
"contractaddress": "0x922815dFbEa128eAeaAAa185508fe078bECeFBBE",
"token_id": null,
"type": "ERC20"
}'

Die Antwort sieht dann etwa so aus:

{
"status": 201,
"ok": true,
"message": "Webhook created",
"data": {
"webhook": "9b2b4dcc-1479-4bcd-9b8a-015673e80f46"
}
}