Statischer QR-Code
Statische QR-Codes mit TWINT für deinen Webshop erstellen.
Statischen QR-Code erstellen – Gastro-Beispiel
Du kannst einen statischen QR-Code mit unserer Merchant API erstellen.
Zur Vereinfachung erklären wir das am Beispiel der QR-Code-Erstellung.
Schritt 1: QR-Code erstellen
Erstelle einen QR-Code mit den Pflichtparametern:
Das Feld webshopUrl ist Pflicht.
Dein QR-Code kann mit jedem QR-Code-Scanner gelesen werden.
Schritt 2: QR-Code anzeigen
Nach Schritt 1 erhältst du in der Antwort einen QR-Code-String.
Verwende diesen String als src-Attribut in einem HTML-<img>-Tag. So kannst du den QR-Code als Bild anzeigen.
Schritt 3: QR-Code scannen
Scannt der Käufer den QR-Code mit der TWINT-App, wird er mit folgenden Parametern auf deine Webshop-URL weitergeleitet.
- qr_code_session_id
- returnAppScheme (iOS)
- returnAppPackage (Android)
Beispiel-Weiterleitungen
Gescannt mit der TWINT-App
- iOS:
https://{{webshopUrl}}?qr_code_session_id={{session}}&returnAppScheme={{appName}} - Android:
https://{{webshopUrl}}?qr_code_session_id={{session}}&returnAppPackage={{appName}}
Gescannt mit einer normalen QR-Code-Scanner-App
https://{{webshopUrl}}
Schritt 4: Gateway
Sobald der Käufer auf deinem Webshop Produkte gewählt hat und bezahlen möchte, musst du ein Gateway erstellen mit dem passenden Betrag und der Währung (optional: Warenkorb).
Beim Erstellen des Gateways übergibst du die QR-Code-Session-ID und den «Return-App»-Parameter:
$gateway->setQrCodeSessionId($_GET['qr_code_session_id']);
if ($_GET['returnAppScheme']) {
$returnApp = 'returnAppScheme=' . $_GET['returnAppScheme']; // iOS
} else if ($_GET['returnAppPackage']) {
$returnApp = 'returnAppPackage=' . $_GET['returnAppPackage']; // Android
}
$gateway->setReturnApp($returnApp);
In der Gateway-Antwort erhältst du den TWINT-App-Link:
{
"status": "success",
"data": [
{
"transactionId": "100",
"appLink": "intent://payment#Intent;action=ch.twint.action.TWINT_PAYMENT;scheme=twint;S.code=12345;S.startingOrigin=EXTERNAL_WEB_BROWSER;S.browser_fallback_url=;end", // Android
// "appLink": 'twint-issuer1://applinks/?al_applink_data={"app_action_type": "TWINT_PAYMENT","extras": {"code": "12345",},"referer_app_link": {"target_url": "", "url": "", "app_name": "EXTERNAL_WEB_BROWSER"}, "version": "6.0" }' // iOS
}
]
}
Sobald du appLink in der Antwort erhältst, musst du ihn öffnen. Die TWINT-App wird für den Käufer automatisch geöffnet.
Parallel dazu startest du ein Transaction Polling mit der transactionId aus der Antwort und dem Endpunkt Transaktion abrufen. Du kannst die GET-Anfrage jede Sekunde wiederholen, bis sich der Transaktionsstatus von initiated auf confirmed oder cancelled ändert. Danach kannst du auf deinem Webshop die passende Ergebnisseite anzeigen.
QR-Code scannen (andere App / Kamera)
Scannt der Kunde den QR-Code mit einer anderen App als TWINT, wird er ebenfalls auf deine Webshop-URL weitergeleitet – jedoch ohne die speziellen Parameter. Wenn der Käufer auf deinem Webshop bezahlen möchte, musst du ein Gateway erstellen.
Anders als im TWINT-App-Fall erstellst du das Gateway mit folgenden Redirect-URLs.
$gateway->setSuccessRedirectUrl('https://www.merchant-website.com/success');
$gateway->setFailedRedirectUrl('https://www.merchant-website.com/failed');
$gateway->setCancelRedirectUrl('https://www.merchant-website.com/cancel');
In der Gateway-Antwort erhältst du einen Link wie hier beschrieben. Öffne diesen Link. Der Käufer wird auf die zahls.ch-Gateway-Seite weitergeleitet, wählt dort sein Zahlungsmittel und schliesst die Zahlung ab. Anschliessend leitet ihn die beim Gateway gesetzte URL weiter.
QR-Code löschen
Du kannst den QR-Code über den Endpunkt QR-Code löschen entfernen.
Brichst du den Bestellvorgang in deinem Webshop ab, musst du die Session ebenfalls beenden, um Zahlungen nach dem Abbruch zu verhindern. Den QR-Code-Scan löschst du über QR-Code-Scan löschen, indem du die Session-ID setzt (siehe #schritt-3-qr-code-scannen).