MDH GROUP · BLOG

QR-gestützte Sofortzahlung am POS: Webhooks & API-Workflows für Händler

Ausgangssituation: Kassenschlange, gedruckter QR-Code, wechselnde Zahlwege Der Gastronom hat an jedem Tisch einen gedruckten QR-Code. Gäste sollen schnell per Smartphone bezahlen — die Zahlungsoptionen ändern sich aber regelmäßig (neue PSP, Aktionscodes, Trinkgeld-Regeln). Ein statischer QR-Code, de

← Alle Beiträge

QR-gestützte Sofortzahlung am POS: Webhooks & API-Workflows für Händler

Ausgangssituation: Kassenschlange, gedruckter QR-Code, wechselnde Zahlwege

Der Gastronom hat an jedem Tisch einen gedruckten QR-Code. Gäste sollen schnell per Smartphone bezahlen — die Zahlungsoptionen ändern sich aber regelmäßig (neue PSP, Aktionscodes, Trinkgeld-Regeln). Ein statischer QR-Code, der direkt zur Zahlungsseite eines Providers führt, ist starr und unflexibel. Ideal ist ein dynamischer QR-Workflow, der beim Scan eine Zahlung auslöst, das POS informiert und die Bestellung automatisch als bezahlt markiert.

Warum dynamische QR-Codes mit Webhooks und API hier sinnvoll sind

Dynamische QR-Codes trennen das gedruckte Medium vom Ziel: Der gedruckte Code bleibt, das Ziel (Zahlungsseite, Checkout-Flow, Fallback) lässt sich jederzeit ändern. Kombiniert mit Webhooks und API-Aufrufen ermöglicht das automatisierte Abläufe: Scan → Webhook/API → Erstellung/Bestätigung einer Bestellung → Weiterleitung zur Zahlungsseite oder direkter Zahlungsversuch. Zentral verwaltet in einem System wie Linkentra lässt sich das Target schnell anpassen, Medien/Branding pflegen und Scan-Statistiken einsehen.

3 praktikable Ablaufvarianten

Variante A — Orchestrator-Redirect (empfohlen für flexible Zahlungsintegration)

Architektur: QR → Linkentra (Short/Target) → Ihr Orchestrator (öffentliche Endpoint) → POS/PSP → Redirect zur Zahlungsseite.

  • Beim Scan leitet Linkentra zu Ihrem Orchestrator weiter (oder sendet eine Webhook-Notifikation an ihn).
  • Der Orchestrator erstellt in Ihrem POS eine Bestellposition via API, erzeugt ein Zahlungsobjekt beim PSP und gibt eine Zahlungs-URL zurück.
  • Der Orchestrator leitet den Kunden zur Zahlungsseite weiter; nach Zahlungseingang informiert der PSP Ihren POS per Callback und Ihr System markiert die Bestellung als bezahlt.

Variante B — Linkentra-Webhooks als Trigger (minimaler Eingriff)

Architektur: QR (Linkentra) → direkte Redirect zu statischer Zahlungsseite; Linkentra sendet zeitgleich Webhook an POS/Orchestrator.

  • Linkentra verwaltet den QR und leitet zur Zahlungsseite (z. B. PSP-Checkout) weiter.
  • Gleichzeitig wird ein Webhook an Ihre Backend-URL gesendet, das die Bestellung im POS anlegt und auf Zahlung wartet.
  • Nach erfolgreicher Zahlung gleicht Ihr System ab und vervollständigt die Bestellung.

Variante C — Scan → Direktzahlung (höchste Automatisierung, PSP-abhängig)

Architektur: QR → Orchestrator → API-Aufruf an PSP für Sofortzahlung (z. B. QR-basiertes Wallet) → Bestellabschluss.

Diese Variante setzt voraus, dass Ihr PSP eine API für unmittelliche Zahlungen (ohne Zwischenseite) anbietet. Vorteil: Kunde muss weniger klicken; Nachteil: stärkere Anforderungen an Sicherheit, Rückerstattungsprozesse und Integrationsaufwand.

Konkrete Webhook-Beispiel-Payloads

Diese Payloads sind Beispiele, die Ihrem POS/Orchestrator helfen, Bestellungen zu erzeugen und Zahlungen zu verknüpfen.

Scan-Event (gesendet beim Scan):

{
  "event": "scan",
  "qr_id": "qr_12345",
  "scan_id": "scan_67890",
  "timestamp": "2026-10-28T12:34:56Z",
  "client_ip": "203.0.113.42",
  "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)",
  "location": {"lat": 48.137154, "lng": 11.576124},
  "metadata": {"table": "T12", "staff_id": "u42"}
}

Order-Created-Callback (Ihr System an Linkentra/Logik):

{
  "event": "order_created",
  "order_id": "ord_20261028_0001",
  "qr_id": "qr_12345",
  "amount": 18.90,
  "currency": "EUR",
  "payment_url": "https://pay.provider/checkout/abcde",
  "expires_at": "2026-10-28T12:50:00Z"
}

Im einfachen Szenario leitet Linkentra nach dem Scan direkt zur payment_url weiter oder Ihr Orchestrator macht das. In komplexeren Setups verwendet Ihr Backend die scan-Payload, um Bestellung und Zahlung parallel zu initialisieren.

Sicherheits-Hardening — Basisregeln für Webhooks & API

  • TLS erzwingen: Alle Endpunkte müssen HTTPS mit aktuellen TLS-Versionen nutzen.
  • Authentifizierung: Verwenden Sie einen shared secret für Webhooks und prüfen Sie Signaturen (z. B. HMAC-SHA256 über Payload mit einem X-Signature-Header).
  • IP-Filterung & Rate-Limiting: Whitelisten Sie bekannte Sender-IP-Bereiche und limitieren Sie eingehende Requests, um Missbrauch zu verhindern.
  • Replay-Schutz: Akzeptieren Sie Webhook-Events nur mit eindeutigen IDs und verwerfen Sie doppelte oder zu alte Timestamps.
  • Minimalrechte Prinzip: API-Keys und Service-Accounts nur mit unbedingt notwendigen Rechten ausstatten.
  • Audit-Logs und Verschlüsselung: Sensible Daten verschlüsselt speichern; Zugriffe und Änderungen lückenlos protokollieren.

Beispiel: Verifizierung einer HMAC-Signatur (konzeptionell)

signature = header['X-Signature']
computed = HMAC_SHA256(shared_secret, request.body)
if not constant_time_compare(signature, computed): reject 401

Monitoring & Betrieb: So bleibt das System verlässlich

  • Health-Checks: Endpunkte für Liveness/Readiness bereitstellen und von einem Load-Balancer prüfen lassen.
  • Webhook-Retries: Implementieren Sie eine Retry-Policy mit Backoff und Dead-Letter-Queue für nicht verarbeitbare Events.
  • Dashboards & Alerts: Metriken wie Webhook-Latenz, Fehlerquote, Erfolgsrate der Zahlungs-Redirects und Scan-Volumen in Dashboards (z. B. Grafana) visualisieren; Alerts per Slack/Email/SMS einrichten.
  • Test-Umgebung: Staging-QR-Codes und eine Test-Webhook-URL verwenden, um Integrationen ohne Live-Betrieb zu prüfen.
  • Rate- & Spike-Protection: Schutzmechanismen gegen saisonale Lastspitzen (Events, Mittagessen) vorsehen.

Praxis-Checkliste für Deployment (kurz)

  • QR-Design & Branding in Linkentra anlegen (SVG/PNG-Export für Druck).
  • Orchestrator-Endpoint bereitstellen (TLS, Auth, Logging).
  • POS-API-Integration: Endpunkte für Order-Create, Order-Update, Payment-Confirm definieren.
  • Webhook-Handling implementieren: Signaturprüfung, Idempotenz, DLQ.
  • Monitoring aufsetzen: Health-Checks, Dashboards, Alerts.
  • Staging testen: komplette Zahlungs-Loop durchspielen, Fehlerfälle simulieren.

Kurzes Praxisbeispiel

Ein Café nutzt Linkentra, um QR-Codes an den Tischen zu verwalten. Beim Scan leitet Linkentra entweder direkt an die PSP-Checkout-Seite weiter (Variante B) oder zu einem Orchestrator, der Bestellung und Zahlung koordiniert (Variante A). Die POS-Kasse erhält per Webhook sofort eine Order-ID mit Tisch- und Scan-Metadaten; nach Zahlungseingang markiert die Kasse die Bestellung automatisch als bezahlt, Ausgabe von Rechnung und Bon geschieht ohne manuelles Zutun. Betreiber profitieren von zentraler Steuerung der QR-Targets, Anpassbarkeit von Zahlungszielen und Scan-Statistiken für Analysen.

Fazit & Handlungsempfehlung

Mit dynamischen QR-Codes, Webhooks und API-Workflows lassen sich Zahlungen am POS deutlich beschleunigen und administrative Schritte automatisieren. Entscheidend sind eine klare Orchestrator-Architektur, saubere Sicherheitsmaßnahmen und ein robustes Monitoring. Linkentra kann die zentrale Verwaltung der QR-Codes übernehmen — sowohl in Cloud- als auch in Self‑Hosted-Setups — und so Änderungen an Ziel-URLs, Branding und Fallbacks ohne Druckneuausgabe ermöglichen.

Jetzt starten: Linkentra entdecken und prüfen, welche Variante (Orchestrator-Redirect vs. Webhook-Trigger) am besten zu Ihrer Kassen- und Zahlungsarchitektur passt. Linkentra entdecken

Nächster Schritt

Linkentra selbst ausprobieren

Dynamische QR-Codes mit Kontrolle über Hosting und Daten: Inhalte nachträglich ändern, Branding anpassen, Medien zentral verwalten und Scans auswerten – wahlweise auf eigener Infrastruktur (Self‑Hosted) oder sofort in der Linkentra Cloud. Editionsabhängige Funktionen für Teams, API und White‑Label.

Linkentra entdecken