Vignetim

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

EreignisBeschreibung
order.completedEine Bestellung wurde vollständig abgeschlossen und alle Produkte geliefert
order.failedEine Bestellung ist fehlgeschlagen (Zahlungsfehler oder Bereitstellungsfehler)
order.refundedEine Bestellung wurde erstattet
order.cancelledEine 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:

HeaderBeschreibung
X-Webhook-SignatureHMAC-SHA256 Hex-Signatur des Anfragekörpers, signiert mit dem signingSecret des Webhooks
X-Webhook-EventDer Ereignistyp (z. B. order.completed)
X-Webhook-TimestampISO-8601-Zeitstempel, wann das Ereignis generiert wurde
Content-Typeapplication/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:

VersuchVerzögerung
1. WiederholungSofort
2. Wiederholung1 Sekunde
3. Wiederholung5 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.