Pregled webhookov (Webhooks)
Webhooki dostavljajo HTTP POST obvestila v realnem času na vaš strežnik, ko se zgodijo dogodki na vaših naročilih. To odpravlja potrebo po povpraševanju (polling) API-ja za posodobitve statusa.
Podprti dogodki
| Dogodek | Opis |
|---|---|
order.completed | Naročilo je bilo v celoti zaključeno in vsi produkti dostavljeni |
order.failed | Naročilo ni uspelo (neuspelo plačilo ali napaka pri pripravi) |
order.refunded | Naročilo je bilo povrnjeno |
order.cancelled | Naročilo je bilo preklicano |
* | Nadomestni znak (wildcard) -- prejemajte vse dogodke |
Vsebina webhooka
Ko se zgodi dogodek, Vignetim pošlje POST zahtevo na vaš registrirani URL z naslednjo strukturo:
{
"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"
}
}
Glave dostave
Vsaka dostava webhooka vključuje naslednje glave:
| Header | Opis |
|---|---|
X-Webhook-Signature | HMAC-SHA256 šestnajstiški podpis telesa zahteve, podpisan z signingSecret webhooka |
X-Webhook-Event | Tip dogodka (npr. order.completed) |
X-Webhook-Timestamp | ISO 8601 časovni žig, kdaj je bil dogodek ustvarjen |
Content-Type | application/json |
Preverjanje podpisa
Vedno preverite podpis webhooka, da zagotovite avtentičnost vsebine in da ni bila spremenjena.
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');
});
Politika ponovnih poskusov
Če vaša končna točka ne vrne odgovora 2xx v 10 sekundah, Vignetim ponovi dostavo:
| Poskus | Zakasnitev |
|---|---|
| 1. ponovni poskus | Takoj |
| 2. ponovni poskus | 1 sekunda |
| 3. ponovni poskus | 5 sekund |
Po vseh 3 neuspelih poskusih ponovitve se dostava označi kot neuspela.
Samodejna onemogočitev
Če webhook končna točka nabere 10 zaporednih neuspelih dostav, se samodejno onemogoči. Ponovno jo boste morali omogočiti prek API-ja ali vaše partnerske nadzorne plošče. Uporabite testno končno točko (POST /webhooks/:id/test) za preverjanje povezljivosti pred ponovnim omogočenjem.