Webhooks-Übersicht
Webhooks liefern Echtzeit-HTTP-POST-Benachrichtigungen an Ihren Server, wenn Ereignisse bei Ihren Bestellungen auftreten. Dies macht das Polling der API für Statusaktualisierungen überflüssig.
Unterstützte Ereignisse
| Ereignis | Beschreibung |
|---|---|
order.completed | Eine Bestellung wurde vollständig abgeschlossen und alle Produkte geliefert |
order.failed | Eine Bestellung ist fehlgeschlagen (Zahlungsfehler oder Bereitstellungsfehler) |
order.refunded | Eine Bestellung wurde erstattet |
order.cancelled | Eine Bestellung wurde storniert |
* | Platzhalter (Wildcard) -- alle Ereignisse empfangen |
Webhook-Payload
Wenn ein Ereignis eintritt, sendet Vignetim eine POST-Anfrage an Ihre registrierte URL mit folgender Struktur:
{
"event": "order.completed",
"timestamp": "2026-03-20T14:31:15.000Z",
"data": {
"orderId": "ord-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETED",
"externalReference": "YOUR-ORDER-REF-001",
"products": [
{
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"productTypeId": 1,
"status": "COMPLETED"
}
],
"total": {
"amount": 11.5,
"currency": "EUR"
},
"completedAt": "2026-03-20T14:31:15.000Z"
}
}
Zustellungs-Header
Jede Webhook-Zustellung enthält die folgenden Header:
| Header | Beschreibung |
|---|---|
X-Webhook-Signature | HMAC-SHA256 Hex-Signatur des Anfragekörpers, signiert mit dem signingSecret des Webhooks |
X-Webhook-Event | Der Ereignistyp (z. B. order.completed) |
X-Webhook-Timestamp | ISO-8601-Zeitstempel, wann das Ereignis generiert wurde |
Content-Type | application/json |
Signaturverifizierung
Verifizieren Sie immer die Webhook-Signatur, um sicherzustellen, dass der Payload authentisch ist und nicht manipuliert wurde.
import crypto from 'crypto';
function verifyWebhookSignature(body, signature, secret) {
const expected = crypto.createHmac('sha256', secret).update(body).digest('hex');
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}
// In your webhook handler:
app.post('/webhooks/vignetim', (req, res) => {
const signature = req.headers['x-webhook-signature'];
const rawBody = req.rawBody; // Ensure you capture the raw body
if (!verifyWebhookSignature(rawBody, signature, 'whs_your-webhook-signing-secret')) {
return res.status(401).send('Invalid signature');
}
const event = req.body;
console.log(`Received event: ${event.event}`);
// Process the event...
res.status(200).send('OK');
});
Wiederholungsrichtlinie (Retry Policy)
Wenn Ihr Endpunkt nicht innerhalb von 10 Sekunden eine 2xx-Antwort zurückgibt, wiederholt Vignetim die Zustellung:
| Versuch | Verzögerung |
|---|---|
| 1. Wiederholung | Sofort |
| 2. Wiederholung | 1 Sekunde |
| 3. Wiederholung | 5 Sekunden |
Nach 3 fehlgeschlagenen Wiederholungsversuchen wird die Zustellung als fehlgeschlagen markiert.
Automatische Deaktivierung
Wenn ein Webhook-Endpunkt 10 aufeinanderfolgende Zustellungsfehler ansammelt, wird er automatisch deaktiviert. Sie müssen ihn über die API oder Ihr Partner-Dashboard erneut aktivieren. Verwenden Sie den Testendpunkt (POST /webhooks/:id/test), um die Konnektivität zu überprüfen, bevor Sie ihn wieder aktivieren.