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
| Gebeurtenis | Beschrijving |
|---|---|
order.completed | Een bestelling is volledig afgerond en alle producten zijn afgeleverd |
order.failed | Een bestelling is mislukt (betalingsfout of inrichtingsfout) |
order.refunded | Een bestelling is terugbetaald |
order.cancelled | Een 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:
| Header | Beschrijving |
|---|---|
X-Webhook-Signature | HMAC-SHA256 hex-handtekening van het verzoeklichaam, ondertekend met het signingSecret van de webhook |
X-Webhook-Event | Het gebeurtenistype (bijv. order.completed) |
X-Webhook-Timestamp | ISO 8601-tijdstempel van wanneer de gebeurtenis is gegenereerd |
Content-Type | application/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:
| Poging | Vertraging |
|---|---|
| 1e herhaling | Onmiddellijk |
| 2e herhaling | 1 seconde |
| 3e herhaling | 5 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.