Vignetim

Webhooks-overzicht (Webhooks Overview)

Webhooks leveren realtime HTTP POST-meldingen aan uw server wanneer er gebeurtenissen plaatsvinden bij uw bestellingen. Dit elimineert de noodzaak om de API te pollen voor statusupdates.

Ondersteunde gebeurtenissen

GebeurtenisBeschrijving
order.completedEen bestelling is volledig afgerond en alle producten zijn afgeleverd
order.failedEen bestelling is mislukt (betalingsfout of inrichtingsfout)
order.refundedEen bestelling is terugbetaald
order.cancelledEen bestelling is geannuleerd
*Jokerteken -- ontvang alle gebeurtenissen

Webhook-payload

Wanneer een gebeurtenis plaatsvindt, stuurt Vignetim een POST-verzoek naar uw geregistreerde URL met de volgende structuur:

{
	"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"
	}
}

Afleveringsheaders

Elke webhook-aflevering bevat de volgende headers:

HeaderBeschrijving
X-Webhook-SignatureHMAC-SHA256 hex-handtekening van het verzoeklichaam, ondertekend met het signingSecret van de webhook
X-Webhook-EventHet gebeurtenistype (bijv. order.completed)
X-Webhook-TimestampISO 8601-tijdstempel van wanneer de gebeurtenis is gegenereerd
Content-Typeapplication/json

Handtekeningverificatie

Verifieer altijd de webhook-handtekening om te controleren of de payload authentiek is en niet is gemanipuleerd.

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');
});

Herhalingbeleid

Als uw endpoint niet binnen 10 seconden een 2xx-antwoord retourneert, herhaalt Vignetim de aflevering:

PogingVertraging
1e herhalingOnmiddellijk
2e herhaling1 seconde
3e herhaling5 seconden

Na alle 3 herhaalpogingen wordt de aflevering als mislukt gemarkeerd.

Automatische uitschakeling

Als een webhook-endpoint 10 opeenvolgende afleveringsfouten verzamelt, wordt het automatisch uitgeschakeld. U moet het opnieuw inschakelen via de API of uw partnerdashboard. Gebruik het testendpoint (POST /webhooks/:id/test) om de connectiviteit te verifiëren voordat u het opnieuw inschakelt.