Passer au contenu principal

Aperçu

La livraison dynamique vous permet de gérer par programmation l’exécution des produits en implémentant un endpoint webhook qui reçoit les informations de commande et renvoie le contenu de livraison. Idéal pour livrer des produits numériques, des clés de licence, des codes de jeux ou pour intégrer des systèmes d’exécution externes. Lorsqu’un client achète un produit avec la livraison dynamique activée, Komerza envoie immédiatement une requête POST à votre URL webhook configurée avec les détails de la commande, et votre endpoint répond avec le contenu à livrer au client.
La livraison dynamique est configurée par variante de produit dans les paramètres de votre produit, sous les méthodes de livraison.

Cas d’utilisation

Produits numériques

Livrez des clés de licence, des liens de téléchargement ou des codes d’accès en temps réel

Intégration tierce

Connectez-vous à des systèmes d’exécution externes ou de gestion des stocks

Logique personnalisée

Implémentez des règles de livraison complexes basées sur le client, le produit ou les données de commande

Codes de jeux

Livrez automatiquement des clés de jeux, codes d’activation ou objets in-game

Comment ça fonctionne

  1. Le client achète - Un client finalise le paiement pour un produit avec la livraison dynamique activée
  2. Webhook déclenché - Komerza envoie une requête POST à votre URL webhook configurée
  3. Votre réponse - Votre endpoint traite la requête et renvoie le contenu de livraison
  4. Le client reçoit - Le contenu renvoyé est livré au client en texte brut

Configuration

Configurer la livraison dynamique

  1. Naviguez vers votre produit dans le tableau de bord Komerza
  2. Sélectionnez la variante à configurer
  3. Choisissez Livraison dynamique comme méthode de livraison
  4. Saisissez l’URL de votre endpoint webhook
  5. Générez et sauvegardez votre secret webhook
Gardez votre secret webhook sécurisé. Il est utilisé pour vérifier que les requêtes proviennent bien de Komerza.

Requête webhook

En-têtes de requête

Content-Type: application/json
Accept: application/json
User-Agent: Komerza/1.0
X-Signature: <HMAC-SHA256-SIGNATURE>

Vérification de la signature

Toutes les requêtes webhook incluent un en-tête X-Signature contenant une signature HMAC SHA256. Vous devriez vérifier cette signature pour vous assurer que la requête provient de Komerza. Calcul de la signature :
HMAC-SHA256(secret, request_body) -> encodé en HEX
const crypto = require("crypto");

function verifySignature(secret, body, signature) {
  const calculatedSignature = crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex")
    .toUpperCase();

  return calculatedSignature === signature.toUpperCase();
}

app.use("/webhook", express.raw({ type: "application/json" }));

app.post("/webhook", (req, res) => {
  const signature = req.headers["x-signature"];
  const body = req.body.toString("utf8");

  if (!verifySignature(process.env.WEBHOOK_SECRET, body, signature)) {
    return res.status(401).send("Signature invalide");
  }

  // Traiter le webhook...
});

Structure du payload

Le webhook reçoit un payload JSON avec la structure suivante :
{
  "storeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "customerId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "lineItemId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "productId": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
  "variantId": "8f7e6d5c-4b3a-2918-7654-3210fedcba98",
  "quantity": 1,
  "order": {
    "id": "5f3a8b2c-1d4e-5f6a-7b8c-9d0e1f2a3b4c",
    "totalPrice": 29.99,
    "currency": "USD",
    "customer": {
      "email": "client@exemple.com",
      "name": "Jean Dupont"
    }
  }
}

Réponse webhook

Format de réponse

Votre endpoint doit répondre avec du texte brut (text/plain) contenant le contenu de livraison. Ceci sera affiché au client exactement tel que renvoyé.
HTTP/1.1 200 OK
Content-Type: text/plain

CLE-LICENCE-ABC123-XYZ789-PREMIUM
Téléchargement: https://exemple.com/download/abc123
Valide jusqu'au: 2026-11-27