Zum Hauptinhalt springen

Überblick

Dynamische Lieferung ermöglicht es Ihnen, die Produkterfüllung programmatisch zu verwalten, indem Sie einen Webhook-Endpunkt implementieren, der Bestellinformationen empfängt und Lieferinhalt zurückgibt. Ideal für die Lieferung digitaler Produkte, Lizenzschlüssel, Spielcodes oder die Integration externer Erfüllungssysteme. Wenn ein Kunde ein Produkt mit aktivierter dynamischer Lieferung kauft, sendet Komerza sofort eine POST-Anfrage an Ihre konfigurierte Webhook-URL mit Bestelldetails, und Ihr Endpunkt antwortet mit dem Inhalt, der dem Kunden geliefert werden soll.
Dynamische Lieferung wird pro Produktvariante in Ihren Produkteinstellungen unter Liefermethoden konfiguriert.

Anwendungsfälle

Digitale Produkte

Liefern Sie Lizenzschlüssel, Download-Links oder Zugangscodes in Echtzeit

Drittanbieter-Integration

Verbinden Sie sich mit externen Erfüllungssystemen oder Bestandsverwaltung

Benutzerdefinierte Logik

Implementieren Sie komplexe Lieferregeln basierend auf Kunden-, Produkt- oder Bestelldaten

Spielcodes

Liefern Sie automatisch Spielschlüssel, Aktivierungscodes oder In-Game-Items

Wie es funktioniert

  1. Kunde kauft - Ein Kunde schließt den Checkout für ein Produkt mit aktivierter dynamischer Lieferung ab
  2. Webhook ausgelöst - Komerza sendet eine POST-Anfrage an Ihre konfigurierte Webhook-URL
  3. Ihre Antwort - Ihr Endpunkt verarbeitet die Anfrage und gibt den Lieferinhalt zurück
  4. Kunde erhält - Der zurückgegebene Inhalt wird dem Kunden als Klartext geliefert

Konfiguration

Dynamische Lieferung einrichten

  1. Navigieren Sie zu Ihrem Produkt im Komerza-Dashboard
  2. Wählen Sie die Variante aus, die Sie konfigurieren möchten
  3. Wählen Sie Dynamische Lieferung als Liefermethode
  4. Geben Sie Ihre Webhook-Endpunkt-URL ein
  5. Generieren und speichern Sie Ihr Webhook-Geheimnis
Halten Sie Ihr Webhook-Geheimnis sicher. Es wird verwendet, um zu überprüfen, dass Anfragen tatsächlich von Komerza stammen.

Webhook-Anfrage

Anfrage-Header

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

Signaturverifizierung

Alle Webhook-Anfragen enthalten einen X-Signature-Header mit einer HMAC SHA256-Signatur. Sie sollten diese Signatur verifizieren, um sicherzustellen, dass die Anfrage von Komerza stammt. Signaturberechnung:
HMAC-SHA256(secret, request_body) -> HEX-codiert
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("Ungültige Signatur");
  }

  // Webhook verarbeiten...
});

Payload-Struktur

Der Webhook empfängt ein JSON-Payload mit der folgenden Struktur:
{
  "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": "kunde@beispiel.de",
      "name": "Max Mustermann"
    }
  }
}

Webhook-Antwort

Antwortformat

Ihr Endpunkt muss mit Klartext (text/plain) antworten, der den Lieferinhalt enthält. Dies wird dem Kunden genau so angezeigt, wie es zurückgegeben wird.
HTTP/1.1 200 OK
Content-Type: text/plain

LIZENZSCHLUESSEL-ABC123-XYZ789-PREMIUM
Download: https://beispiel.de/download/abc123
Gültig bis: 2026-11-27