Apercu des webhooks (Webhooks Overview)
Les webhooks livrent des notifications HTTP POST en temps reel a votre serveur lorsque des evenements surviennent sur vos commandes. Cela elimine le besoin d'interroger l'API (polling) pour les mises a jour de statut.
Evenements pris en charge
| Evenement | Description |
|---|---|
order.completed | Une commande a ete entierement completee et tous les produits livres |
order.failed | Une commande a echoue (echec de paiement ou erreur de provisionnement) |
order.refunded | Une commande a ete remboursee |
order.cancelled | Une commande a ete annulee |
* | Joker (wildcard) -- recevoir tous les evenements |
Charge utile du webhook (Webhook Payload)
Lorsqu'un evenement survient, Vignetim envoie une requete POST a votre URL enregistree avec la structure suivante :
{
"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"
}
}
En-tetes de livraison
Chaque livraison de webhook inclut les en-tetes suivants :
| En-tete | Description |
|---|---|
X-Webhook-Signature | Signature hexadecimale HMAC-SHA256 du corps de la requete, signee avec le signingSecret du webhook |
X-Webhook-Event | Le type d'evenement (par ex., order.completed) |
X-Webhook-Timestamp | Horodatage ISO 8601 indiquant quand l'evenement a ete genere |
Content-Type | application/json |
Verification de la signature
Verifiez toujours la signature du webhook pour vous assurer que la charge utile est authentique et n'a pas ete alteree.
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');
});
Politique de nouvelle tentative (Retry Policy)
Si votre endpoint ne retourne pas une reponse 2xx dans les 10 secondes, Vignetim reessaie la livraison :
| Tentative | Delai |
|---|---|
| 1ere nouvelle tentative | Immediat |
| 2eme nouvelle tentative | 1 seconde |
| 3eme nouvelle tentative | 5 secondes |
Apres l'echec des 3 tentatives de nouvelle livraison, la livraison est marquee comme echouee.
Desactivation automatique
Si un endpoint webhook accumule 10 echecs de livraison consecutifs, il est automatiquement desactive. Vous devrez le reactiver depuis l'API ou votre tableau de bord partenaire. Utilisez l'endpoint de test (POST /webhooks/:id/test) pour verifier la connectivite avant de le reactiver.