API Documentation

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

1

Configurer votre endpoint

Créez une URL HTTPS publique qui recevra les webhooks (ex: https://yourdomain.com/webhooks/restozen)

POST https://yourdomain.com/webhooks/restozen
2

Ajouter l'endpoint dans RestoZen

Accédez à Paramètres › API › Webhooks et ajoutez votre URL

3

Implémenter la vérification

Vérifiez toujours la signature HMAC avant de traiter les webhooks

4

Répondre rapidement

Votre endpoint doit répondre avec un code 200-299 en moins de 5 secondes

5

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

🍪 Gestion des Cookies

Nous utilisons des cookies pour améliorer votre expérience, vous proposer du contenu personnalisé et analyser notre trafic. Vous pouvez accepter tous les cookies ou gérer vos préférences.