Webhooks RestoZen
Recevez des notifications en temps réel pour tous les événements de votre restaurant
Vue d'ensemble
Les webhooks RestoZen vous permettent de recevoir des notifications HTTP en temps réel lorsque des événements se produisent dans votre restaurant.
Caractéristiques
-
Temps réel
Notifications instantanées dès qu'un événement se produit
-
Sécurisé
Signature HMAC-SHA256 pour vérifier l'authenticité
-
Fiable
Tentatives automatiques en cas d'échec (retry backoff)
-
Flexible
Choisissez les événements qui vous intéressent
Types d'événements
RestoZen envoie des webhooks pour les événements suivants :
Commandes (Orders)
order.created
Déclenché lorsqu'une nouvelle commande est passée par un client
order.confirmed
Déclenché lorsqu'une commande est confirmée par le restaurant
order.in_preparation
Déclenché lorsque la préparation de la commande commence
order.ready
Déclenché lorsque la commande est prête à être servie
order.completed
Déclenché lorsque la commande est terminée et servie
order.cancelled
Déclenché lorsqu'une commande est annulée
Paiements (Payments)
payment.succeeded
Déclenché lorsqu'un paiement est réussi
payment.failed
Déclenché lorsqu'un paiement échoue
payment.refunded
Déclenché lorsqu'un remboursement est effectué
Réservations (Reservations)
reservation.created
Déclenché lors de la création d'une réservation
reservation.confirmed
Déclenché lorsqu'une réservation est confirmée
reservation.cancelled
Déclenché lorsqu'une réservation est annulée
Exemple de Payload
Voici un exemple de payload JSON envoyé lors d'un événement order.created
{
"event": "order.created",
"timestamp": "2025-11-04T14:30:00Z",
"data": {
"order_id": "ord_7Hj3kL9mN2pQ",
"order_number": "2025-001234",
"restaurant_id": "rest_5Fg8hJ4kL1nM",
"address_id": "addr_9Nk3pL7mQ2rT",
"table_number": "12",
"status": "pending",
"total_amount": 4580,
"currency": "EUR",
"customer": {
"name": "Marie Dupont",
"email": "marie.dupont@example.com",
"phone": "+33612345678"
},
"items": [
{
"product_id": "prod_3Hj8kL4mN1pQ",
"name": "Pizza Margherita",
"quantity": 1,
"unit_price": 1200,
"total_price": 1200,
"options": [
{
"name": "Taille",
"value": "Grande"
}
]
},
{
"product_id": "prod_7Kl9mN3pQ5rS",
"name": "Salade César",
"quantity": 2,
"unit_price": 890,
"total_price": 1780
}
],
"special_instructions": "Sans oignons s'il vous plaît",
"created_at": "2025-11-04T14:30:00Z",
"updated_at": "2025-11-04T14:30:00Z"
}
}
Sécurité et Vérification
Chaque webhook est signé avec HMAC-SHA256 pour garantir son authenticité.
Headers HTTP
X-RestoZen-Signature
Signature HMAC-SHA256 du payload
X-RestoZen-Event
Type d'événement (ex: order.created)
X-RestoZen-Timestamp
Timestamp Unix de l'événement
Exemple de vérification (PHP)
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_RESTOZEN_SIGNATURE'];
$secret = 'your_webhook_secret';
$expectedSignature = hash_hmac('sha256', $payload, $secret);
if (hash_equals($expectedSignature, $signature)) {
// Signature valide, traiter le webhook
$event = json_decode($payload);
// ...
} else {
// Signature invalide
http_response_code(401);
exit('Invalid signature');
}
Guide d'Implémentation
Configurer votre endpoint
Créez une URL HTTPS publique qui recevra les webhooks (ex: https://yourdomain.com/webhooks/restozen)
Ajouter l'endpoint dans RestoZen
Accédez à Paramètres › API › Webhooks et ajoutez votre URL
Implémenter la vérification
Vérifiez toujours la signature HMAC avant de traiter les webhooks
Répondre rapidement
Votre endpoint doit répondre avec un code 200-299 en moins de 5 secondes
Gérer l'idempotence
Utilisez le champ event_id pour éviter de traiter un même événement plusieurs fois
Bonnes Pratiques
À FAIRE
- ✓ Répondre rapidement (< 5s)
- ✓ Vérifier la signature
- ✓ Gérer l'idempotence
- ✓ Logger les événements
- ✓ Utiliser HTTPS
À ÉVITER
- ✗ Traitement synchrone long
- ✗ Ignorer la signature
- ✗ Endpoint HTTP (non sécurisé)
- ✗ Pas de gestion d'erreur
- ✗ Traiter 2 fois le même événement
Besoin d'aide avec les webhooks ?
Notre équipe technique est là pour vous accompagner