Webhook Einstellungen
Was ist ein Webhook
Ein Webhook stellt die Möglichkeit dar, aus billware heraus, bei einem bestimmten Event, ein externes Script (bzw. Endpunkt) aufzurufen. Ein Webhook kann als ein "Event-Listener" oder als eine "Push-Notification" betrachtet werden.
Du hast einen Webhook angelegt, der bei dem Event order.create Deinen eigenen externen Endpunkt https://www.meine-domain.de/webhook anspricht. Jedes Mal, wenn jetzt in billware ein Auftrag angelegt wird, schickt der Webhook den gesamten Datensatz an den definierten Endpunkt. Dort kannst du die Daten weiterverarbeiten (z.B. ein Versand von Serial-Keys an Deinen Kunden etc.)
Webhook erstellen und konfigurieren
Verfügbare Optionen
Option | Beschreibung |
---|---|
Status | aktiviert / deaktiviert den Webhook. |
Name | Individueller Name für den Webhook. |
Event | Bei welchem Event (s. unten) der Webhook den Endpunkt ansprechen soll. |
Endpunkt | Der Endpunkt / das Skript, welches durch den Webhook angesprochen wird. Bitte beachten: Der Endpunkt muss mit https://. |
Schlüssel | Der geheime Schlüssel (bzw. Webhook-Secret), mit dessen Hilfe die Signatur erzeugt wird (s. Verifizierung). |
Verzögerung | Der Webhook kann mit einer Verzögerung abgeschickt werden. Mögliche Werte: zwischen 0 und 96 Stunden. |
Zusätzliche Daten | Der Webhok kann zusätzliche Daten im Format "Key => Value" transportieren. Diese Daten sind optional. |
Verfügbare Events
Event | Beschreibung |
---|---|
order.create | Bei Neuanlegung eines Auftrags. |
order.update | Bei Aktualisierung eines bestehenden Auftrags. |
order.delete | Bei Löschung eines Auftrags. |
customer.create | Bei Neuanlegung eines Kunden. |
customer.update | Bei Aktualisierung eines bestehenden Kunden. |
customer.delete | Bei Löschung eines Kunden. |
article.create | Bei Neuanlegung eines Artikels. |
article.update | Bei Aktualisierung eines bestehenden Artikels. |
article.delete | Bei Löschung eines Artikels. |
Header
Es werden mit jedem Webhook zwei HTTP-Header mitgeschickt:
X-Bw-Signature: Enthält die Signatur, die aus den geschickten Daten und dem Schlüssel (Webhook-Secret) durch einen HMAC mit sha256 erzeugt wird.
X-Bw-Event: Enthält das Event (s. verfügbare Events).
Endpunkt-Verifizierung
PHP
<?php define('WEBHOOK_SECRET_KEY', 'my-secret-key'); function isFromBillware($data, $signature) { $calculated = base64_encode(hash_hmac('sha256', $data, WEBHOOK_SECRET_KEY, true)); return $signature == $calculated; } $header = getallheaders(); $signature = $header['X-Bw-Signature']; $data = file_get_contents('php://input'); if (isFromBillware($data, $signature)) { // do something } ?>
Node.Js
/*jshint node: true */ 'use strict'; var crypto = require('crypto'), config = require('../lib/config').config; module.exports = function(secret) { return function(req, res, next) { req.isFromBillware = false; var bwSignature = req.header('X-Bw-Signature'); if (bwSignature) { req.bwHasher = crypto.createHmac('sha256', secret); req.on('data', function (chunk) { req.bwHasher.update(chunk); }); req.on('end', function() { var hash = req.bwHasher.digest('base64'); req.isFromBillware = hash === bwSignature ? true : false; }); } next(); }; };
Hinweise
- Ein Webhook-Endpoint kann nur über https:// angesprochen werden.
- Jeder Webhook benötigt einen individuellen Schlüssel.
- billware überprüft ob ein Webhook erfolgreich war, wenn ein HTTP-Status Code zwischen 200 und 299 zurückgegeben wurde.
- Der HTTP-Status Code 410 deaktiviert den Webhook.
- Jeder HTTP-Status Code, der nicht zwischen 200 und 299 liegt oder 410 ist, stellt einen Fehler im Endpunkt dar. Der Webhook versucht bis zu 10 Mal (mit einem zeitlich ansteigendem Intervall) den Endpunkt zu kontaktieren. Nach 10 erfolglosen Versuchen, wird der Webhook deaktiviert.