Webhooks

Recevoir les confirmations Opticar sur le serveur de l’agence.

Objectif : Opticar appelle votre serveur quand une réservation change (acceptée, refusée, payée…), pour que le site de l’agence puisse prévenir le client.

Étape 1 — Enregistrer votre URL

PUT /webhook
{
  "url": "https://www.votresite.tn/webhooks/opticar",
  "secret": "un-secret-long-et-aleatoire"
}
GET    /webhook   → voir la config
DELETE /webhook   → supprimer

L’URL doit être en HTTPS. Gardez le secret uniquement sur votre serveur.

Événements envoyés

  • booking.created — réservation créée via l’API
  • booking.status_changed — acceptée, refusée, etc.
  • booking.payment_status_changed — paiement mis à jour

Ce que vous recevez

Un POST JSON avec :

  • X-Opticar-Event — nom de l’événement
  • X-Opticar-Signature — signature HMAC-SHA256 du corps avec votre secret
{
  "event": "booking.status_changed",
  "occurred_at": "2026-10-10T12:00:00+01:00",
  "data": {
    "ref": 1042,
    "status": "yet_to_start",
    "payment_status": "unpaid",
    "vehicle": { "id": 12, "name": "…" },
    "driver": { "id": 45, "name": "Amine Ben Ali", "phone": "+216…" }
  }
}

Vérifier la signature (Node.js)

const crypto = require("crypto");
const expected = crypto
  .createHmac("sha256", process.env.OPTICAR_WEBHOOK_SECRET)
  .update(rawBody)
  .digest("hex");

if (expected !== req.headers["x-opticar-signature"]) {
  return res.status(401).end();
}
// puis traiter l’événement…
res.status(200).end();

Répondez vite avec un code 2xx. Le même événement peut arriver plusieurs fois — utilisez ref pour mettre à jour votre base sans doublon.

Checklist rapide

  1. Clé API stockée en variable d’environnement
  2. Appels Opticar uniquement côté serveur
  3. Recherche disponibilité avec dates
  4. Création client + réservation
  5. Webhook HTTPS + secret + signature vérifiée
  6. Message client : demande en attente de confirmation

← Retour aux premiers pas