# Weitere Zahlungsmethoden Akzeptieren Sie unterstützte Zahlungsmethoden, indem Sie einen QR-Code auf den Terminal-Lesegeräten anzeigen. Zusätzlich zu Karten unterstützt Terminal auch QR-Code-basierte [Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/overview.md). Ihre Kundinnen und Kunden können einen QR-Code scannen, um ihren Bezahlvorgang auf ihrem Mobilgerät abzuschließen. **Unterstützte Zahlungsmethoden**: [WeChat Pay](https://docs.stripe.com/payments/wechat-pay.md)1, [Affirm](https://docs.stripe.com/payments/affirm.md) und [PayNow](https://docs.stripe.com/payments/paynow.md) **Unterstützte Lesegeräte**: [Intelligente Lesegeräte](https://docs.stripe.com/terminal/smart-readers.md) und [Tap-to-Pay-Lesegeräte](https://docs.stripe.com/terminal/tap-to-pay-readers.md) 1WeChat Pay ist für Terminal in Japan aufgrund regionaler Einschränkungen nicht verfügbar. > Verbundene Konten müssen über die [erforderliche Funktion](https://docs.stripe.com/connect/account-capabilities.md#payment-methods) verfügen, um Transaktionen für jede Zahlungsmethode durchzuführen. Erfahren Sie mehr über die Kompatibilität von Connect mit [Affirm](https://docs.stripe.com/payments/affirm.md#connect), [WeChat Pay](https://docs.stripe.com/payments/wechat-pay.md#connect), und [PayNow](https://docs.stripe.com/payments/paynow.md#connect). > > Verwenden Sie ein physisches Lesegerät, um kartenlose Zahlungsmethoden für Stripe Terminal zu testen. Das simulierte Lesegerät wird nicht unterstützt. > > Alle Transaktionen müssen mit einer funktionalen Netzwerkverbindung durchgeführt werden, nicht im [Offline-Zustand](https://docs.stripe.com/terminal/features/operate-offline/overview.md). ## Intelligente Lesegeräte und Tap to Pay auf Android - [setReaderDisplay (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/set-reader-display.html) Bei [intelligenten Lesegeräten](https://docs.stripe.com/terminal/smart-readers.md) mit integrierten Displays und [Tap to Pay auf Android](https://docs.stripe.com/terminal/tap-to-pay-readers.md) zeigt das Lesegerät den QR-Code direkt auf seinem Bildschirm an. Wenn Sie nur Zahlungsmethoden ohne Karte akzeptieren möchten, kann das Lesegerät die für Zahlungsmethoden mit Karte verwendete Eingabeaufforderung **auflegen oder einstecken** umgehen. Wenn Sie eine einzelne Zahlungsmethode ohne Karte aktiviert haben, lädt das Lesegerät den QR-Code direkt. Andernfalls zeigt das Lesegerät eine Liste der Optionen für Zahlungsmethoden ohne Karte an. > #### Einsatz von Lesegeräten in den USA > > Wenn Sie in den USA Lesegeräte mit Zahlungsmethoden ohne Karte einsetzen möchten, wird die [Anzeige der Warenkorbangaben](https://docs.stripe.com/terminal/features/display.md) derzeit nicht unterstützt. Die Anzeige der Warenkorbangaben zeigt das NFC-Logo an und unterstützt das „Pre-Dipping“, also die Vorabvalidierung von Karten zur Tokenisierung von Kartendaten, bevor ein PaymentIntent erstellt wird. ![Der Bildschirm zur Erfassung der Zahlungsmethode mit einer Schaltfläche für weitere Arten der Bezahlung](https://b.stripecdn.com/docs-statics-srv/assets/s700-more-ways-to-pay.dfa04185db8a0b70bb7b13e7a695a80d.png) Bildschirm „Zahlungsmethode erfassen“ ![Der Bildschirm zur Auswahl der Zahlungsmethode mit Schaltflächen zum Bezahlen mit Karte, Affirm oder WeChat Pay](https://b.stripecdn.com/docs-statics-srv/assets/s700-pay-with-screen.9c8f58c5a58e9db064085647d0151737.png) Bildschirm zur Auswahl der Zahlungsmethode ![Der Bildschirm zum Laden von Zahlungen](https://b.stripecdn.com/docs-statics-srv/assets/s700-loading-screen.5e0523a12d7a1fc5c4f6f511d0928163.png) Bildschirm wird geladen ![Der Bildschirm, auf dem ein zu scannender QR-Code von WeChat Pay angezeigt wird](https://b.stripecdn.com/docs-statics-srv/assets/s700-wechat-pay-qr-code.a63cff6f60892ec896f726a93b88c167.png) Bildschirm „QR-Code scannen“ ![Der Bildschirm, auf dem „Genehmigt“ angezeigt wird](https://b.stripecdn.com/docs-statics-srv/assets/s700-approved-screen.ae53ca99ba84aefbf2cb1aacf9ef1a2e.png) Bildschirm „Genehmigt“ # Servergestützt > This is a Servergestützt for when terminal-sdk-platform is server-driven. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=server-driven. ## Erstellen Sie ein PaymentIntent Um kartenlose Zahlungsmethoden über die QR-Code-Schnittstelle zu akzeptieren, [erstellen Sie eine PaymentIntent](https://docs.stripe.com/api/payment_intents.md) und fügen Sie Ihre bevorzugten Zahlungsmethodenarten in den Parameter `payment_method_types` ein. - Kombinieren Sie `card_present` mit anderen kartenlosen Zahlungsmethoden, um Ihren Kundinnen und Ihren Kunden im Bezahlvorgang alle Zahlungsmethoden anzuzeigen. Wir empfehlen, diese Option zu aktivieren, wenn Sie in einer Umgebung mit überwiegend [Offline-Anwendungen](https://docs.stripe.com/terminal/features/operate-offline/overview.md) arbeiten, da im Offline-Modus nur Karten unterstützt werden. - Wenn Sie keine Karten akzeptieren möchten, unterstützen Sie nur Zahlungsmethoden ohne Karte. - Wenn Sie wissen, zu welcher Zahlungsmethode Sie Ihre Kundinnen und Kunden zum Bezahlvorgang weiterleiten möchten, wählen Sie eine einzelne Zahlungsmethode aus. ### Erfassungstyp Nicht alle Zahlungsmethoden unterstützen [manuelles Erfassen](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment). Die folgende Tabelle zeigt, welche Zahlungsmethoden manuelles Erfassen unterstützen: | Zahlungsmethode | Manuelle Erfassung | | --------------- | ------------------- | | `card_present` | ✓ Unterstützt | | `affirm` | ✓ Unterstützt | | `wechat_pay` | ❌ Nicht unterstützt | | `paynow` | ❌ Nicht unterstützt | Um möglichst viele Zahlungsmethoden zu unterstützen, erstellen Sie Ihren PaymentIntent, wobei `capture_method` auf `automatic` eingestellt ist. Um manuelles Erfassen für Kartenzahlungen und Affirm zu unterstützen und gleichzeitig Zahlungsmethoden zu akzeptieren, die eine automatische Erfassung erfordern, legen Sie `capture_method` im verschachtelten Attribut `payment_method_options.card_present` auf `manual` fest. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "payment_method_types[]=card_present" \ -d "payment_method_types[]=wechat_pay" \ -d capture_method=automatic \ -d "payment_method_options[card_present][capture_method]=manual" ``` ## Zahlung abwickeln Im Gegensatz zu Kartenzahlungen erfolgt die Verarbeitung von QR-Code-Zahlungen asynchron. Bei der der Abwicklung eines PaymentIntent mit einer QR-Code-Zahlungsmethode generiert Stripe einen für diese Zahlung eindeutigen QR-Code. Nach der Zahlungsabwicklung zeigt das Lesegerät den QR-Code an, den der Kunde oder die Kundin mit seinem bzw. ihren Mobilgerät scannen kann. Sobald der Kunde oder die Kundin die Zahlung auf seinem bzw. ihrem Gerät abgeschlossen hat, aktualisiert sich das Lesegerät und zeigt die abgeschlossene Zahlung an. > Die Zeit, die das Lesegerät benötigt, um das Ergebnis der Zahlung anzuzeigen, kann je nach verwendeter Zahlungsmethode unterschiedlich sein. Das Lesegerät wird in der Regel nach wenigen Sekunden aktualisiert. QR-Code-Zahlungen unterstützen sowohl die sofortige Zahlungsabwicklung als auch den zweistufigen Einzugs- und Bestätigungsablauf. #### Sofort verarbeiten - [Einen PaymentIntent verarbeiten](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md) Um Zahlungen einzuziehen, stellen Sie eine Anfrage an Stripe mit der ID des von Ihnen erstellten PaymentIntent und dem Lesegerät, das Sie für die Transaktion verwenden möchten. Einige Zahlungsmethoden (z. B. Affirm) erfordern eine [return_url](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#process_payment_intent-process_config-return_url), wenn Sie einen PaymentIntent bestätigen, um Ihre Kundin oder Ihren Kunden nach der Authentifizierung oder Stornierung ihrer/seiner Zahlung in der App oder auf der Website der Zahlungsmethode dorthin weiterzuleiten. Sie können bei der Verarbeitung des PaymentIntents Ihre eigene [return_url](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#process_payment_intent-process_config-return_url) angeben. Wenn Sie keine angeben, wird dem Kunden oder der Kundin eine [generische Startseite](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) angezeigt, die von Stripe gehostet wird. ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/process_payment_intent \ -u "<>:" \ -d payment_intent=pi_xxx \ --data-urlencode "process_config[return_url]=https://my.store.com/payment-completed" ``` Wenn Sie eine Zahlung abwickeln, antwortet Stripe sofort mit einem HTTP-Statuscode `200` auf die Anfrage als Bestätigung, dass das Lesegerät die Aktion erhalten hat. In den meisten Fällen gibt die Anfrage ein [Lesegerät](https://docs.stripe.com/api/terminal/readers.md) mit dem Status `in_progress` zurück. Da die Abwicklung jedoch asynchron erfolgt, kann der Aktionsstatus bereits den endgültigen Status (`succeeded` oder `failed`) widerspiegeln, wenn die Zahlung schnell abgeschlossen wird. Gleichzeitig wechselt der Bildschirm des Lesegeräts zu einer Nutzeroberfläche, auf der der Kunde/die Kundin aufgefordert wird, seine/ihre Karte einzulegen oder eine QR-Code-Zahlungsmethode auszuwählen. Bei QR-Code-Zahlungen aktualisieren Kundinnen/Kunden, die die Zahlung auf ihrem Gerät durchführen, den Status der Zahlung. Um den [Status des Lesegeräts zu verifizieren](https://docs.stripe.com/terminal/payments/collect-card-payment.md?terminal-sdk-platform=server-driven#verify-reader), überwachen Sie den `terminal.reader.action_succeeded`-Webhook oder fragen Sie das Lesegerät und PaymentIntent Status ab, um den Status der Zahlung zu erhalten. ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx \ -u "<>:" ``` ```json { "id": "tmr_xxx", "object": "terminal.reader", ... "status": "online", "action": { "type": "process_payment_intent", "process_payment_intent": { "payment_intent": "pi_xxx" }, "status": "in_progress", "failure_code": null, "failure_message": null } } ``` #### Einziehen, prüfen und bestätigen ### Eine PaymentMethod erfassen - [Eine Zahlungsmethode erfassen](https://docs.stripe.com/api/terminal/readers/collect_payment_method.md) Um Zahlungen einzuziehen, stellen Sie eine Anfrage an Stripe mit der ID des von Ihnen erstellten PaymentIntent und dem Lesegerät, das Sie für die Transaktion verwenden möchten. Wenn Sie mit der Erfassung einer Zahlungsmethode beginnen, antwortet Stripe sofort mit einem HTTP-Statuscode `200` auf die Anfrage und gibt ein [Lesegerät](https://docs.stripe.com/api/terminal/readers.md) mit dem Aktionsstatus `in_progress` zurück. Gleichzeitig wechselt der Bildschirm des Lesegeräts zu einer Nutzeroberfläche, auf der der Kunde/die Kundin aufgefordert wird, seine/ihre Karte einzulegen oder eine QR-Code-Zahlungsmethode auszuwählen. ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/collect_payment_method \ -u "<>:" \ -d payment_intent=pi_xxx ``` Nachdem das Lesegerät die Daten der Zahlungsmethode erfasst hat, wird die PaymentMethod an das serverseitige PaymentIntent angehängt und im Reader-Objekt als `action.collect_payment_method.payment_method` gespeichert. Um den [Status des Lesegeräts zu verifizieren](https://docs.stripe.com/terminal/payments/collect-card-payment.md?terminal-sdk-platform=server-driven#verify-reader), überwachen Sie den `terminal.reader.action_updated` oder fragen Sie den Aktionsstatus des Lesegeräts ab, um die PaymentMethod zu untersuchen. Zu diesem Zeitpunkt können Sie die ausgewählte Zahlungsmethode bestimmen und andere Daten aus der PaymentMethod einsehen. ### PaymentIntent abwickeln - [PaymentIntent bestätigen](https://docs.stripe.com/api/terminal/readers/confirm_payment_intent.md) Nachdem Sie eine Zahlungsmethode erfolgreich erfasst haben, können Sie mit der Verarbeitung der PaymentIntent fortfahren. Das Bestätigen des PaymentIntent erfolgt asynchron. Sie können den `terminal.reader.action_succeeded`-Webhook überwachen oder den Status des Lesegeräts oder des PaymentIntent abfragen, um den Status der Zahlung zu erhalten. Einige Zahlungsmethoden (z. B. Affirm) erfordern eine [return_url](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#confirm_payment_intent-confirm_config-return_url), wenn Sie eine PaymentIntent bestätigen, um Ihre Kundin oder Ihren Kunden nach der Authentifizierung oder Stornierung ihrer/seiner Zahlung in der App oder auf der Website der Zahlungsmethode dorthin weiterzuleiten. Sie können bei der Bestätigung des PaymentIntents Ihre eigene [return_url](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#confirm_payment_intent-confirm_config-return_url) angeben. Wenn Sie keine angeben, wird dem Kunden oder der Kundin eine [generische Startseite](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) angezeigt, die von Stripe gehostet wird. ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/confirm_payment_intent \ -u "<>:" \ -d payment_intent=pi_xxx \ --data-urlencode "confirm_config[return_url]=https://my.store.com/payment-completed" ``` Bei QR-Code-Zahlungen wechselt der Bildschirm des Lesegeräts nach der Bestätigung der Zahlung zu einer Nutzeroberfläche, auf der der QR-Code angezeigt wird, den der Kunde/die Kundin scannen kann. Der Kunde/Die Kundin, der/die die Zahlung auf seinem/ihrem Gerät durchführt, aktualisiert die Zahlung, wodurch das Ereignis `terminal.reader.action_succeeded` übermittelt wird. Wenn die Kundin/der Kunde die Zahlung mit dem QR-Code abbricht und auf die Schaltfläche Zurück tippt, schlägt die Bestätigung des Payment Intents mit dem Ereignis `terminal.reader.action_failed` fehl, und das Lesegerät kehrt zum Begrüßungsbildschirm zurück. ### Geben Sie das Lesegerät frei, um eine weitere Zahlung anzunehmen Es kann mehrere Minuten dauern, bis ein Kunde/eine Kundin die Zahlung auf seinem/ihrem Gerät abschließt. Anstatt zu warten, bis das Lesegerät das Ergebnis der abgeschlossenen Zahlung anzeigt, können Sie das Lesegerät freigeben, um eine Zahlung für einen anderen Kunden/eine andere Kundin vorzunehmen. Nachdem die Kundin/der Kunde den QR-Code gescannt und zu ihrem/seinem Gerät gewechselt hat, um die Zahlung abzuschließen, verwenden Sie den Endpoint [cancel_action](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-cancel_action), um das Lesegerät zurückzusetzen. ```curl curl -X POST https://api.stripe.com/v1/terminal/readers/tmr_xxx/cancel_action \ -u "<>:" ``` Nachdem Sie die Aktion des Lesegeräts zum Prozess der Zahlung abgebrochen haben, verbleibt die Zahlung im Status `requires_action`, sodass die Kundin/der Kunde die Zahlung abschließen kann. Verwenden Sie die Webhooks `payment_intent.succeeded` und `payment_intent.payment_failed`, um das Ergebnis der abgeschlossenen Zahlung abzugleichen. Erfahren Sie, wie Sie [einen PaymentIntent mit Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). ## Kundenerlebnis Nachdem Sie die [Abwicklung](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) des PaymentIntent , scannt der Kunde oder die Kundin einen QR-Code, er auf dem Bildschirm des Lesegeräts angezeigt wird. Je nach Zahlungsmethode kann der Kunde oder die Kundin die Zahlung schnell in seiner bzw. ihrer Mobilanwendung abschließen (die meisten Digital Wallets) oder einen längeren Vorgang zur Bewertung von Finanzierungsangeboten durchlaufen (Zahlungsmethoden wie „Jetzt kaufen, später bezahlen“). In den folgenden Abschnitten wird der Zahlungsablauf für unterstützte Zahlungsmethoden mit intelligenten Lesegeräten dargestellt: #### Affirm Erfahren Sie mit diesen [Affirm-Schulungsressourcen](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources) mehr darüber, wie Sie das beste Kundenerlebnis schaffen und den Bekanntheitsgrad der BNPL-Optionen in einem Geschäft fördern. ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## Tests In einer *Sandbox* können Sie den QR-Code mithilfe eines üblichen Scan-Anmeldeformulars für QR-Codes auf Ihrem Mobiltelefon scannen. Der QR-Code enthält eine URL, die Sie zu einer von Stripe gehosteten Testzahlungsseite weiterleitet, auf der Sie die Testzahlung entweder autorisieren oder ablehnen können. ### Affirm-Sandbox Wenn Ihr Konto mit Affirm verbunden ist, gelangen Sie über die QR-Code URL zu einer von Affirm gehosteten Sandbox-Seite, auf der Sie den Prozess der Zahlung abschließen können. Wenn Sie zur Affirm-Sandbox weitergeleitet werden, erhalten Sie möglicherweise eine Aufforderung, die letzten vier Ziffern Ihrer Sozialversicherungsnummer einzugeben. Affirm empfiehlt, zu Testzwecken entweder `0000` oder `5678` zu verwenden. Wenn Ihr Konto nicht mit Affirm verbunden ist, werden Sie zu der von Stripe gehosteten Test-Zahlungsseite weitergeleitet. > Der Endpoint [present_payment_method](https://docs.stripe.com/api/terminal/readers/present_payment_method.md) unterstützt die Angabe von QR-Code-Zahlungsmethodentypen nicht. # JavaScript > This is a JavaScript for when terminal-sdk-platform is js. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=js. > #### Empfehlung für intelligente Lesegeräte > > Für intelligente Lesegeräte wie das Lesegerät [BBPOS WisePOS E](https://docs.stripe.com/terminal/payments/setup-reader/bbpos-wisepos-e.md), [Stripe Reader S700/S710](https://docs.stripe.com/terminal/readers/stripe-reader-s700-s710.md) und [Verifone-Lesegeräte](https://docs.stripe.com/terminal/payments/setup-reader/verifone.md) empfehlen wir die Verwendung der [servergestützten Integration](https://docs.stripe.com/terminal/payments/setup-integration.md?terminal-sdk-platform=server-driven) anstelle des JavaScript-SDK. > > Das JavaScript-SDK erfordert Ihr POS und Lesegerät im selben lokalen Netzwerk mit funktionierendem lokalen DNS. Die Server-gestützte Integration verwendet stattdessen die Stripe API, was in komplexen Netzwerkumgebungen einfacher sein kann. Lesen Sie unseren [Plattformvergleich](https://docs.stripe.com/terminal/payments/setup-reader.md#sdk), um die beste Plattform für Ihre Anforderungen auszuwählen. ## Erstellen Sie ein PaymentIntent Um kartenlose Zahlungsmethoden über die QR-Code-Schnittstelle zu akzeptieren, [erstellen Sie eine PaymentIntent](https://docs.stripe.com/api/payment_intents.md) und fügen Sie Ihre bevorzugten Zahlungsmethodenarten in den Parameter `payment_method_types` ein. - Kombinieren Sie `card_present` mit anderen kartenlosen Zahlungsmethoden, um Ihren Kundinnen und Ihren Kunden im Bezahlvorgang alle Zahlungsmethoden anzuzeigen. Wir empfehlen, diese Option zu aktivieren, wenn Sie in einer Umgebung mit überwiegend [Offline-Anwendungen](https://docs.stripe.com/terminal/features/operate-offline/overview.md) arbeiten, da im Offline-Modus nur Karten unterstützt werden. - Wenn Sie keine Karten akzeptieren möchten, unterstützen Sie nur Zahlungsmethoden ohne Karte. - Wenn Sie wissen, zu welcher Zahlungsmethode Sie Ihre Kundinnen und Kunden zum Bezahlvorgang weiterleiten möchten, wählen Sie eine einzelne Zahlungsmethode aus. ### Erfassungstyp Nicht alle Zahlungsmethoden unterstützen [manuelles Erfassen](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment). Die folgende Tabelle zeigt, welche Zahlungsmethoden manuelles Erfassen unterstützen: | Zahlungsmethode | Manuelle Erfassung | | --------------- | ------------------- | | `card_present` | ✓ Unterstützt | | `affirm` | ✓ Unterstützt | | `wechat_pay` | ❌ Nicht unterstützt | | `paynow` | ❌ Nicht unterstützt | Um möglichst viele Zahlungsmethoden zu unterstützen, erstellen Sie Ihren PaymentIntent, wobei `capture_method` auf `automatic` eingestellt ist. Um manuelles Erfassen für Kartenzahlungen und Affirm zu unterstützen und gleichzeitig Zahlungsmethoden zu akzeptieren, die eine automatische Erfassung erfordern, legen Sie `capture_method` im verschachtelten Attribut `payment_method_options.card_present` auf `manual` fest. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "payment_method_types[]=card_present" \ -d "payment_method_types[]=wechat_pay" \ -d capture_method=automatic \ -d "payment_method_options[card_present][capture_method]=manual" ``` ## Zahlung abwickeln Im Gegensatz zu Kartenzahlungen erfolgt die Verarbeitung von QR-Code-Zahlungen asynchron. Bei der der Abwicklung eines PaymentIntent mit einer QR-Code-Zahlungsmethode generiert Stripe einen für diese Zahlung eindeutigen QR-Code. Nach der Zahlungsabwicklung zeigt das Lesegerät den QR-Code an, den der Kunde oder die Kundin mit seinem bzw. ihren Mobilgerät scannen kann. Sobald der Kunde oder die Kundin die Zahlung auf seinem bzw. ihrem Gerät abgeschlossen hat, aktualisiert sich das Lesegerät und zeigt die abgeschlossene Zahlung an. > Die Zeit, die das Lesegerät benötigt, um das Ergebnis der Zahlung anzuzeigen, kann je nach verwendeter Zahlungsmethode unterschiedlich sein. Das Lesegerät wird in der Regel nach wenigen Sekunden aktualisiert. #### Einziehen, prüfen und bestätigen ### Eine PaymentMethod erfassen - [collectPaymentMethod (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#collect-payment-method) Um Zahlungen einzuziehen, übergeben Sie das von Ihnen erstellte PaymentIntent-Objekt an das SDK. Ihre App muss mit einem Lesegerät verbunden sein, um eine Zahlungsmethode einzuziehen. Wenn Sie mit der Erfassung einer Zahlungsmethode beginnen, fordert das Lesegerät die Kundin oder den Kunden auf, seine bzw. ihre Karte anzutippen, einzulegen oder „weitere Zahlungsmethoden“ zu verwenden, darunter auch QR-Code-Zahlungsmethoden. ```javascript async () => { // clientSecret is the client_secret from the PaymentIntent you created in Step 1. const result = await terminal.collectPaymentMethod(clientSecret); if (result.error) { // Placeholder for handling result.error } else { // Placeholder for processing result.paymentIntent } } ``` Diese Methode erfasst die Daten der Zahlungsmethode mithilfe des verbundenen Lesegeräts und ordnet die Daten dem lokalen PaymentIntent zu. Zu diesem Zeitpunkt können Sie die ausgewählte Art der Zahlungsmethode bestimmen. ### PaymentIntent abwickeln - [processPayment (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#process-payment) Nachdem Sie eine Zahlungsmethode erfolgreich erfasst haben, können Sie mit der Verarbeitung der PaymentIntent fortfahren. der Abwicklung des PaymentIntent mit dem SDK ist synchron, der Aufruf von `processPayment` wird blockiert, bis die Zahlung abgeschlossen ist. Bei QR-Code-Zahlungen wechselt diese Methode den Bildschirm des Lesegeräts zu einer Nutzeroberfläche, auf der der QR-Code angezeigt wird, den der Kunde bzw. die Kundin scannen kann. Der Kunde oder die Kundin, der bzw. die die Zahlung auf seinem bzw. ihrem Gerät abschließt, aktualisiert die Zahlung und ermöglicht es der Methode, zurückzukehren. Sollte der Kunde oder die Kundin die Zahlung stornieren, gibt das SDK einen Fehler zurück. Einige Zahlungsmethoden (z. B. Affirm) erfordern eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url), wenn Sie eine PaymentIntent bestätigen, um Ihre Kundin oder Ihren Kunden nach der Authentifizierung oder Stornierung ihrer/seiner Zahlung in der App oder auf der Website der Zahlungsmethode dorthin weiterzuleiten. Sie können bei der Bestätigung des PaymentIntents Ihre eigene [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) angeben. Wenn Sie keine angeben, wird dem Kunden oder der Kundin eine [generische Startseite](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) angezeigt, die von Stripe gehostet wird. ```javascript async () => { const result = await terminal.processPayment(paymentIntent, { config_override: { return_url: "https://stripe.com" }}); if (result.error) { // Placeholder for handling result.error } else if (result.paymentIntent) { // Placeholder for notifying your backend to capture result.paymentIntent.id } } ``` ### Geben Sie das Lesegerät frei, um eine weitere Zahlung anzunehmen Es kann mehrere Minuten dauern, bis ein Kunde/eine Kundin die Zahlung auf seinem/ihrem Gerät abschließt. Anstatt zu warten, bis das Lesegerät das Ergebnis der abgeschlossenen Zahlung anzeigt, können Sie das Lesegerät freigeben, um eine Zahlung für einen anderen Kunden/eine andere Kundin vorzunehmen. - [cancelProcessPayment](https://docs.stripe.com/terminal/references/api/js-sdk.md#cancel-process-payment) Nachdem die Kundin/der Kunde den QR-Code gescannt und zu ihrem/seinem Gerät gewechselt hat, um die Zahlung abzuschließen, rufen Sie [cancelProcessPayment](https://docs.stripe.com/terminal/references/api/js-sdk.md#cancel-process-payment) auf, um das Lesegerät zurückzusetzen. Nachdem Sie die Aktion des Lesegeräts zum Prozess der Zahlung abgebrochen haben, verbleibt die Zahlung im Status `requires_action`, sodass die Kundin/der Kunde die Zahlung abschließen kann. Verwenden Sie die Webhooks `payment_intent.succeeded` und `payment_intent.payment_failed`, um das Ergebnis der abgeschlossenen Zahlung abzugleichen. Erfahren Sie, wie Sie [einen PaymentIntent mit Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). ## Kundenerlebnis Nachdem Sie die [Abwicklung](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) des PaymentIntent , scannt der Kunde oder die Kundin einen QR-Code, er auf dem Bildschirm des Lesegeräts angezeigt wird. Je nach Zahlungsmethode kann der Kunde oder die Kundin die Zahlung schnell in seiner bzw. ihrer Mobilanwendung abschließen (die meisten Digital Wallets) oder einen längeren Vorgang zur Bewertung von Finanzierungsangeboten durchlaufen (Zahlungsmethoden wie „Jetzt kaufen, später bezahlen“). In den folgenden Abschnitten wird der Zahlungsablauf für unterstützte Zahlungsmethoden mit intelligenten Lesegeräten dargestellt: #### Affirm Erfahren Sie mit diesen [Affirm-Schulungsressourcen](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources) mehr darüber, wie Sie das beste Kundenerlebnis schaffen und den Bekanntheitsgrad der BNPL-Optionen in einem Geschäft fördern. ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## Tests In einer *Sandbox* können Sie den QR-Code mithilfe eines üblichen Scan-Anmeldeformulars für QR-Codes auf Ihrem Mobiltelefon scannen. Der QR-Code enthält eine URL, die Sie zu einer von Stripe gehosteten Testzahlungsseite weiterleitet, auf der Sie die Testzahlung entweder autorisieren oder ablehnen können. ### Affirm-Sandbox Wenn Ihr Konto mit Affirm verbunden ist, gelangen Sie über die QR-Code URL zu einer von Affirm gehosteten Sandbox-Seite, auf der Sie den Prozess der Zahlung abschließen können. Wenn Sie zur Affirm-Sandbox weitergeleitet werden, erhalten Sie möglicherweise eine Aufforderung, die letzten vier Ziffern Ihrer Sozialversicherungsnummer einzugeben. Affirm empfiehlt, zu Testzwecken entweder `0000` oder `5678` zu verwenden. Wenn Ihr Konto nicht mit Affirm verbunden ist, werden Sie zu der von Stripe gehosteten Test-Zahlungsseite weitergeleitet. # iOS > This is a iOS for when terminal-sdk-platform is ios. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=ios. ## Erstellen Sie ein PaymentIntent Um kartenlose Zahlungsmethoden über die QR-Code-Schnittstelle zu akzeptieren, [erstellen Sie eine PaymentIntent](https://docs.stripe.com/api/payment_intents.md) und fügen Sie Ihre bevorzugten Zahlungsmethodenarten in den Parameter `payment_method_types` ein. - Kombinieren Sie `card_present` mit anderen kartenlosen Zahlungsmethoden, um Ihren Kundinnen und Ihren Kunden im Bezahlvorgang alle Zahlungsmethoden anzuzeigen. Wir empfehlen, diese Option zu aktivieren, wenn Sie in einer Umgebung mit überwiegend [Offline-Anwendungen](https://docs.stripe.com/terminal/features/operate-offline/overview.md) arbeiten, da im Offline-Modus nur Karten unterstützt werden. - Wenn Sie keine Karten akzeptieren möchten, unterstützen Sie nur Zahlungsmethoden ohne Karte. - Wenn Sie wissen, zu welcher Zahlungsmethode Sie Ihre Kundinnen und Kunden zum Bezahlvorgang weiterleiten möchten, wählen Sie eine einzelne Zahlungsmethode aus. ### Erfassungstyp Nicht alle Zahlungsmethoden unterstützen [manuelles Erfassen](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment). Die folgende Tabelle zeigt, welche Zahlungsmethoden manuelles Erfassen unterstützen: | Zahlungsmethode | Manuelle Erfassung | | --------------- | ------------------- | | `card_present` | ✓ Unterstützt | | `affirm` | ✓ Unterstützt | | `wechat_pay` | ❌ Nicht unterstützt | | `paynow` | ❌ Nicht unterstützt | Um möglichst viele Zahlungsmethoden zu unterstützen, erstellen Sie Ihren PaymentIntent, wobei `capture_method` auf `automatic` eingestellt ist. Um manuelles Erfassen für Kartenzahlungen und Affirm zu unterstützen und gleichzeitig Zahlungsmethoden zu akzeptieren, die eine automatische Erfassung erfordern, legen Sie `capture_method` im verschachtelten Attribut `payment_method_options.card_present` auf `manual` fest. #### Swift ```swift import UIKit import StripeTerminal class PaymentViewController: UIViewController { // ... // Action for a "Checkout" button func checkoutAction() throws { let params = try PaymentIntentParametersBuilder(amount: 1000, currency: "usd") .setPaymentMethodTypes( [PaymentMethodType.cardPresent, PaymentMethodType.wechatPay] ) .setCaptureMethod(CaptureMethod.automatic) .setPaymentMethodOptionsParameters( PaymentMethodOptionsParametersBuilder( cardPresentParameters: CardPresentParametersBuilder() .setCaptureMethod(CardPresentCaptureMethod.manual) .build() ) .build() ) .build() Terminal.shared.createPaymentIntent(params) { createResult, createError in if let error = createError { print("createPaymentIntent failed: \(error)") } else if let paymentIntent = createResult { print("createPaymentIntent succeeded") // ... } } } // ... } ``` ## Zahlung abwickeln Im Gegensatz zu Kartenzahlungen erfolgt die Verarbeitung von QR-Code-Zahlungen asynchron. Bei der Bestätigung eines PaymentIntent mit einer QR-Code-Zahlungsmethode generiert Stripe einen für diese Zahlung eindeutigen QR-Code. Nach Bestätigung zeigt das Lesegerät den QR-Code an, den der Kunde oder die Kundin mit seinem bzw. ihren Mobilgerät scannen kann. Sobald der Kunde oder die Kundin die Zahlung auf seinem bzw. ihrem Gerät abgeschlossen hat, aktualisiert sich das Lesegerät und zeigt die abgeschlossene Zahlung an. > Die Zeit, die das Lesegerät benötigt, um das Ergebnis der Zahlung anzuzeigen, kann je nach verwendeter Zahlungsmethode unterschiedlich sein. Das Lesegerät wird in der Regel nach wenigen Sekunden aktualisiert. #### Einziehen, prüfen und bestätigen ### Eine PaymentMethod erfassen - [collectPaymentMethod (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)collectPaymentMethod:delegate:completion:) Um Zahlungen einzuziehen, übergeben Sie das von Ihnen erstellte PaymentIntent-Objekt an das SDK. Ihre App muss mit einem Lesegerät verbunden sein, um eine Zahlungsmethode einzuziehen. Wenn Sie mit der Erfassung einer Zahlungsmethode beginnen, fordert das Lesegerät den Kunden oder die Kundin auf, seine bzw. ihre Karte anzutippen, einzulegen oder „weitere Zahlungsmethoden“ zu verwenden, darunter auch QR-Code-Zahlungsmethoden. Das Lesegerät übernimmt automatisch die Anzeige der Auswahl der Zahlungsmethode und des QR-Codes. #### Swift ```swift import UIKit import StripeTerminal class PaymentViewController: UIViewController, ReaderDisplayDelegate { // Label for displaying messages from the card reader let readerMessageLabel = UILabel(frame: .zero) var collectCancelable: Cancelable? = nil // ... // Action for a "Checkout" button func checkoutAction() throws { let params = try PaymentIntentParametersBuilder(amount: 1000, currency: "usd").build() Terminal.shared.createPaymentIntent(params) { createResult, createError in if let error = createError { print("createPaymentIntent failed: \(error)") } else if let paymentIntent = createResult { print("createPaymentIntent succeeded") self.collectCancelable = Terminal.shared.collectPaymentMethod(paymentIntent) { collectResult, collectError in if let error = collectError { print("collectPaymentMethod failed: \(error)") } else if let paymentIntent = collectResult { print("collectPaymentMethod succeeded") // ... Confirm the payment } } } } } } // MARK: MobileReaderDelegate - only needed for mobile readers, this is the delegate set during connectReader func reader(_ reader: Reader, didRequestReaderInput inputOptions: ReaderInputOptions = []) { readerMessageLabel.text = Terminal.stringFromReaderInputOptions(inputOptions) } func reader(_ reader: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) { readerMessageLabel.text = Terminal.stringFromReaderDisplayMessage(displayMessage) } // MARK: ReaderDisplayDelegate func terminal(_ terminal: Terminal, didRequestReaderInput inputOptions: ReaderInputOptions = []) { readerMessageLabel.text = Terminal.stringFromReaderInputOptions(inputOptions) } func terminal(_ terminal: Terminal, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) { readerMessageLabel.text = Terminal.stringFromReaderDisplayMessage(displayMessage) } ``` Diese Methode erfasst die Daten der Zahlungsmethode mithilfe des verbundenen Lesegeräts und ordnet die Daten dem lokalen PaymentIntent zu. Zu diesem Zeitpunkt können Sie die ausgewählte Art der Zahlungsmethode bestimmen. ### PaymentIntent bestätigen - [confirmPaymentIntent (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)confirmPaymentIntent:completion:) Nachdem Sie eine Zahlungsmethode erfolgreich erfasst haben, können Sie mit der Bestätigung der PaymentIntent fortfahren. Die Bestätigung des PaymentIntent mit dem SDK ist synchron, der Aufruf von `confirmPaymentIntent` wird blockiert, bis die Zahlung abgeschlossen ist. Bei QR-Code-Zahlungen wechselt diese Methode den Bildschirm des Lesegeräts zu einer Nutzeroberfläche, auf der der QR-Code angezeigt wird, den der Kunde bzw. die Kundin scannen kann. Das Lesegerät übernimmt die Anzeige des QR-Codes automatisch. Der Kunde oder die Kundin, der bzw. die die Zahlung auf seinem bzw. ihrem Gerät abschließt, aktualisiert die Zahlung und ermöglicht es der Methode, zurückzukehren. Sollte der Kunde oder die Kundin die Zahlung stornieren, gibt das SDK einen Fehler zurück. Einige Zahlungsmethoden (z. B. Affirm) erfordern eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url), wenn Sie eine PaymentIntent bestätigen, um Ihre Kundin oder Ihren Kunden nach der Authentifizierung oder Stornierung ihrer/seiner Zahlung in der App oder auf der Website der Zahlungsmethode dorthin weiterzuleiten. Sie können bei der Bestätigung des PaymentIntents Ihre eigene [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) angeben. Wenn Sie keine angeben, wird dem Kunden oder der Kundin eine [generische Startseite](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) angezeigt, die von Stripe gehostet wird. #### Swift ```swift let confirmConfig = try ConfirmPaymentIntentConfigurationBuilder().setReturnUrl("https://stripe.com").build() // ... Confirm the payment self.confirmCancelable = Terminal.shared.confirmPaymentIntent(collectPaymentMethodPaymentIntent, confirmConfig: confirmConfig) { confirmResult, confirmError in if let error = confirmError { print("confirmPaymentIntent failed: \(error)") } else if let confirmedPaymentIntent = confirmResult { print("confirmPaymentIntent succeeded") // Notify your backend to capture the PaymentIntent if let stripeId = confirmedPaymentIntent.stripeId { APIClient.shared.capturePaymentIntent(stripeId) { captureError in if let error = captureError { print("capture failed: \(error)") } else { print("capture succeeded") } } } else { print("Payment collected offline"); } } } ``` ### Geben Sie das Lesegerät frei, um eine weitere Zahlung anzunehmen Es kann mehrere Minuten dauern, bis ein Kunde/eine Kundin die Zahlung auf seinem/ihrem Gerät abschließt. Anstatt zu warten, bis das Lesegerät das Ergebnis der abgeschlossenen Zahlung anzeigt, können Sie das Lesegerät freigeben, um eine Zahlung für einen anderen Kunden/eine andere Kundin vorzunehmen. - [Stornierbar (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPCancelable.html) Nachdem die Kundin/der Kunde den QR-Code gescannt und zu ihrem/seinem Gerät gewechselt hat, um die Zahlung abzuschließen, verwenden Sie das vom iOS SDK zurückgegebene `Cancelable`-Objekt, um die Aktion abzubrechen und das Lesegerät zurückzusetzen. Nachdem Sie die Aktion des Lesegeräts zum Bestätigen der Zahlung abgebrochen haben, verbleibt die Zahlung im Status `requires_action`, sodass die Kundin/der Kunde die Zahlung abschließen kann. Verwenden Sie die Webhooks `payment_intent.succeeded` und `payment_intent.payment_failed`, um das Ergebnis der abgeschlossenen Zahlung abzugleichen. Erfahren Sie, wie Sie [einen PaymentIntent mit Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). ## Kundenerlebnis Nachdem Sie die [Abwicklung](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) des PaymentIntent [bestätigen](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) Je nach Zahlungsmethode kann der Kunde oder die Kundin die Zahlung schnell in seiner bzw. ihrer Mobilanwendung abschließen (die meisten Digital Wallets) oder einen längeren Vorgang zur Bewertung von Finanzierungsangeboten durchlaufen (Zahlungsmethoden wie „Jetzt kaufen, später bezahlen“). In den folgenden Abschnitten wird der Zahlungsablauf für unterstützte Zahlungsmethoden mit intelligenten Lesegeräten dargestellt: #### Affirm Erfahren Sie mit diesen [Affirm-Schulungsressourcen](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources) mehr darüber, wie Sie das beste Kundenerlebnis schaffen und den Bekanntheitsgrad der BNPL-Optionen in einem Geschäft fördern. ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## Tests In einer *Sandbox* können Sie den QR-Code mithilfe eines üblichen Scan-Anmeldeformulars für QR-Codes auf Ihrem Mobiltelefon scannen. Der QR-Code enthält eine URL, die Sie zu einer von Stripe gehosteten Testzahlungsseite weiterleitet, auf der Sie die Testzahlung entweder autorisieren oder ablehnen können. ### Affirm-Sandbox Wenn Ihr Konto mit Affirm verbunden ist, gelangen Sie über die QR-Code URL zu einer von Affirm gehosteten Sandbox-Seite, auf der Sie den Prozess der Zahlung abschließen können. Wenn Sie zur Affirm-Sandbox weitergeleitet werden, erhalten Sie möglicherweise eine Aufforderung, die letzten vier Ziffern Ihrer Sozialversicherungsnummer einzugeben. Affirm empfiehlt, zu Testzwecken entweder `0000` oder `5678` zu verwenden. Wenn Ihr Konto nicht mit Affirm verbunden ist, werden Sie zu der von Stripe gehosteten Test-Zahlungsseite weitergeleitet. # Android > This is a Android for when terminal-sdk-platform is android. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=android. ## Erstellen Sie ein PaymentIntent Um kartenlose Zahlungsmethoden über die QR-Code-Schnittstelle zu akzeptieren, [erstellen Sie eine PaymentIntent](https://docs.stripe.com/api/payment_intents.md) und fügen Sie Ihre bevorzugten Zahlungsmethodenarten in den Parameter `payment_method_types` ein. - Kombinieren Sie `card_present` mit anderen kartenlosen Zahlungsmethoden, um Ihren Kundinnen und Ihren Kunden im Bezahlvorgang alle Zahlungsmethoden anzuzeigen. Wir empfehlen, diese Option zu aktivieren, wenn Sie in einer Umgebung mit überwiegend [Offline-Anwendungen](https://docs.stripe.com/terminal/features/operate-offline/overview.md) arbeiten, da im Offline-Modus nur Karten unterstützt werden. - Wenn Sie keine Karten akzeptieren möchten, unterstützen Sie nur Zahlungsmethoden ohne Karte. - Wenn Sie wissen, zu welcher Zahlungsmethode Sie Ihre Kundinnen und Kunden zum Bezahlvorgang weiterleiten möchten, wählen Sie eine einzelne Zahlungsmethode aus. ### Erfassungstyp Nicht alle Zahlungsmethoden unterstützen [manuelles Erfassen](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment). Die folgende Tabelle zeigt, welche Zahlungsmethoden manuelles Erfassen unterstützen: | Zahlungsmethode | Manuelle Erfassung | | --------------- | ------------------- | | `card_present` | ✓ Unterstützt | | `affirm` | ✓ Unterstützt | | `wechat_pay` | ❌ Nicht unterstützt | | `paynow` | ❌ Nicht unterstützt | Um möglichst viele Zahlungsmethoden zu unterstützen, erstellen Sie Ihren PaymentIntent, wobei `capture_method` auf `automatic` eingestellt ist. Um manuelles Erfassen für Kartenzahlungen und Affirm zu unterstützen und gleichzeitig Zahlungsmethoden zu akzeptieren, die eine automatische Erfassung erfordern, legen Sie `capture_method` im verschachtelten Attribut `payment_method_options.card_present` auf `manual` fest. #### Kotlin ```kotlin val paymentMethodTypes = listOf(PaymentMethodType.CARD_PRESENT,PaymentMethodType.WECHAT_PAY) val params = PaymentIntentParameters.Builder( paymentMethodTypes = paymentMethodTypes ) .setAmount(1000) .setCurrency("usd") .setCaptureMethod(CaptureMethod.Automatic) .setPaymentMethodOptionsParameters( PaymentMethodOptionsParameters.Builder() .setCardPresentParameters( CardPresentParameters.Builder() .setCaptureMethod(CardPresentCaptureMethod.Manual) .build() ) .build() ) .build() Terminal.getInstance().createPaymentIntent( params, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` ## Zahlung abwickeln Im Gegensatz zu Kartenzahlungen erfolgt die Verarbeitung von QR-Code-Zahlungen asynchron. Bei der Bestätigung eines PaymentIntent mit einer QR-Code-Zahlungsmethode generiert Stripe einen für diese Zahlung eindeutigen QR-Code. Nach Bestätigung zeigt das Lesegerät den QR-Code an, den der Kunde oder die Kundin mit seinem bzw. ihren Mobilgerät scannen kann. Sobald der Kunde oder die Kundin die Zahlung auf seinem bzw. ihrem Gerät abgeschlossen hat, aktualisiert sich das Lesegerät und zeigt die abgeschlossene Zahlung an. > Die Zeit, die das Lesegerät benötigt, um das Ergebnis der Zahlung anzuzeigen, kann je nach verwendeter Zahlungsmethode unterschiedlich sein. Das Lesegerät wird in der Regel nach wenigen Sekunden aktualisiert. #### Einziehen, prüfen und bestätigen ### Eine PaymentMethod erfassen - [collectPaymentMethod (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/collect-payment-method.html) Um Zahlungen einzuziehen, übergeben Sie das von Ihnen erstellte PaymentIntent-Objekt an das SDK. Ihre App muss mit einem Lesegerät verbunden sein, um eine Zahlungsmethode einzuziehen. Wenn Sie mit der Erfassung einer Zahlungsmethode beginnen, fordert das Lesegerät den Kunden oder die Kundin auf, seine bzw. ihre Karte anzutippen, einzulegen oder „weitere Zahlungsmethoden“ zu verwenden, darunter auch QR-Code-Zahlungsmethoden. Das Lesegerät übernimmt automatisch die Anzeige der Auswahl der Zahlungsmethode und des QR-Codes. #### Kotlin ```kotlin val cancelable = Terminal.getInstance().collectPaymentMethod( paymentIntent, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` Diese Methode erfasst die Daten der Zahlungsmethode mithilfe des verbundenen Lesegeräts und ordnet die Daten dem lokalen PaymentIntent zu. Zu diesem Zeitpunkt können Sie die ausgewählte Art der Zahlungsmethode bestimmen. ### PaymentIntent bestätigen - [confirmPaymentIntent (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/confirm-payment-intent.html) Nachdem Sie eine Zahlungsmethode erfolgreich erfasst haben, können Sie mit der Bestätigung der PaymentIntent fortfahren. Die Bestätigung des PaymentIntent mit dem SDK ist synchron, der Aufruf von `confirmPaymentIntent` wird blockiert, bis die Zahlung abgeschlossen ist. Bei QR-Code-Zahlungen wechselt diese Methode den Bildschirm des Lesegeräts zu einer Nutzeroberfläche, auf der der QR-Code angezeigt wird, den der Kunde bzw. die Kundin scannen kann. Das Lesegerät übernimmt die Anzeige des QR-Codes automatisch. Der Kunde oder die Kundin, der bzw. die die Zahlung auf seinem bzw. ihrem Gerät abschließt, aktualisiert die Zahlung und ermöglicht es der Methode, zurückzukehren. Sollte der Kunde oder die Kundin die Zahlung stornieren, gibt das SDK einen Fehler zurück. Einige Zahlungsmethoden (z. B. Affirm) erfordern eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url), wenn Sie eine PaymentIntent bestätigen, um Ihre Kundin oder Ihren Kunden nach der Authentifizierung oder Stornierung ihrer/seiner Zahlung in der App oder auf der Website der Zahlungsmethode dorthin weiterzuleiten. Sie können bei der Bestätigung des PaymentIntents Ihre eigene [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) angeben. Wenn Sie keine angeben, wird dem Kunden oder der Kundin eine [generische Startseite](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) angezeigt, die von Stripe gehostet wird. #### Kotlin ```kotlin val confirmConfig = ConfirmPaymentIntentConfiguration.Builder().setReturnUrl("https://stripe.com/").build() val cancelable = Terminal.getInstance().confirmPaymentIntent( paymentIntent, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } }, confirmConfig ) ``` ### Geben Sie das Lesegerät frei, um eine weitere Zahlung anzunehmen Es kann mehrere Minuten dauern, bis ein Kunde/eine Kundin die Zahlung auf seinem/ihrem Gerät abschließt. Anstatt zu warten, bis das Lesegerät das Ergebnis der abgeschlossenen Zahlung anzeigt, können Sie das Lesegerät freigeben, um eine Zahlung für einen anderen Kunden/eine andere Kundin vorzunehmen. - [Stornierbar (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-cancelable/index.html) Nachdem die Kundin/der Kunde den QR-Code gescannt und zu ihrem/seinem Gerät gewechselt hat, um die Zahlung abzuschließen, verwenden Sie das vom Android SDK zurückgegebene `Cancelable`-Objekt, um die Aktion abzubrechen und das Lesegerät zurückzusetzen. Nachdem Sie die Aktion des Lesegeräts zum Bestätigen der Zahlung abgebrochen haben, verbleibt die Zahlung im Status `requires_action`, sodass die Kundin/der Kunde die Zahlung abschließen kann. Verwenden Sie die Webhooks `payment_intent.succeeded` und `payment_intent.payment_failed`, um das Ergebnis der abgeschlossenen Zahlung abzugleichen. Erfahren Sie, wie Sie [einen PaymentIntent mit Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). ## Kundenerlebnis Nachdem Sie die [Abwicklung](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) des PaymentIntent [bestätigen](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) Je nach Zahlungsmethode kann der Kunde oder die Kundin die Zahlung schnell in seiner bzw. ihrer Mobilanwendung abschließen (die meisten Digital Wallets) oder einen längeren Vorgang zur Bewertung von Finanzierungsangeboten durchlaufen (Zahlungsmethoden wie „Jetzt kaufen, später bezahlen“). In den folgenden Abschnitten wird der Zahlungsablauf für unterstützte Zahlungsmethoden mit intelligenten Lesegeräten dargestellt: #### Affirm Erfahren Sie mit diesen [Affirm-Schulungsressourcen](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources) mehr darüber, wie Sie das beste Kundenerlebnis schaffen und den Bekanntheitsgrad der BNPL-Optionen in einem Geschäft fördern. ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## Tests In einer *Sandbox* können Sie den QR-Code mithilfe eines üblichen Scan-Anmeldeformulars für QR-Codes auf Ihrem Mobiltelefon scannen. Der QR-Code enthält eine URL, die Sie zu einer von Stripe gehosteten Testzahlungsseite weiterleitet, auf der Sie die Testzahlung entweder autorisieren oder ablehnen können. ### Affirm-Sandbox Wenn Ihr Konto mit Affirm verbunden ist, gelangen Sie über die QR-Code URL zu einer von Affirm gehosteten Sandbox-Seite, auf der Sie den Prozess der Zahlung abschließen können. Wenn Sie zur Affirm-Sandbox weitergeleitet werden, erhalten Sie möglicherweise eine Aufforderung, die letzten vier Ziffern Ihrer Sozialversicherungsnummer einzugeben. Affirm empfiehlt, zu Testzwecken entweder `0000` oder `5678` zu verwenden. Wenn Ihr Konto nicht mit Affirm verbunden ist, werden Sie zu der von Stripe gehosteten Test-Zahlungsseite weitergeleitet. # React Native > This is a React Native for when terminal-sdk-platform is react-native. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=react-native. ## Erstellen Sie ein PaymentIntent Um kartenlose Zahlungsmethoden über die QR-Code-Schnittstelle zu akzeptieren, [erstellen Sie eine PaymentIntent](https://docs.stripe.com/api/payment_intents.md) und fügen Sie Ihre bevorzugten Zahlungsmethodenarten in den Parameter `payment_method_types` ein. - Kombinieren Sie `card_present` mit anderen kartenlosen Zahlungsmethoden, um Ihren Kundinnen und Ihren Kunden im Bezahlvorgang alle Zahlungsmethoden anzuzeigen. Wir empfehlen, diese Option zu aktivieren, wenn Sie in einer Umgebung mit überwiegend [Offline-Anwendungen](https://docs.stripe.com/terminal/features/operate-offline/overview.md) arbeiten, da im Offline-Modus nur Karten unterstützt werden. - Wenn Sie keine Karten akzeptieren möchten, unterstützen Sie nur Zahlungsmethoden ohne Karte. - Wenn Sie wissen, zu welcher Zahlungsmethode Sie Ihre Kundinnen und Kunden zum Bezahlvorgang weiterleiten möchten, wählen Sie eine einzelne Zahlungsmethode aus. ### Erfassungstyp Nicht alle Zahlungsmethoden unterstützen [manuelles Erfassen](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment). Die folgende Tabelle zeigt, welche Zahlungsmethoden manuelles Erfassen unterstützen: | Zahlungsmethode | Manuelle Erfassung | | --------------- | ------------------- | | `card_present` | ✓ Unterstützt | | `affirm` | ✓ Unterstützt | | `wechat_pay` | ❌ Nicht unterstützt | | `paynow` | ❌ Nicht unterstützt | Um möglichst viele Zahlungsmethoden zu unterstützen, erstellen Sie Ihren PaymentIntent, wobei `capture_method` auf `automatic` eingestellt ist. Um manuelles Erfassen für Kartenzahlungen und Affirm zu unterstützen und gleichzeitig Zahlungsmethoden zu akzeptieren, die eine automatische Erfassung erfordern, legen Sie `capture_method` im verschachtelten Attribut `payment_method_options.card_present` auf `manual` fest. ```js const {error, paymentIntent} = await createPaymentIntent({ amount: 1000, currency: "usd", paymentMethodTypes: ["card_present", "wechat_pay"], captureMethod: "automatic", paymentMethodOptions: { captureMethod: "manual" } }); ``` ## Zahlung abwickeln Im Gegensatz zu Kartenzahlungen erfolgt die Verarbeitung von QR-Code-Zahlungen asynchron. Bei der Bestätigung eines PaymentIntent mit einer QR-Code-Zahlungsmethode generiert Stripe einen für diese Zahlung eindeutigen QR-Code. Nach Bestätigung zeigt das Lesegerät den QR-Code an, den der Kunde oder die Kundin mit seinem bzw. ihren Mobilgerät scannen kann. Sobald der Kunde oder die Kundin die Zahlung auf seinem bzw. ihrem Gerät abgeschlossen hat, aktualisiert sich das Lesegerät und zeigt die abgeschlossene Zahlung an. > Die Zeit, die das Lesegerät benötigt, um das Ergebnis der Zahlung anzuzeigen, kann je nach verwendeter Zahlungsmethode unterschiedlich sein. Das Lesegerät wird in der Regel nach wenigen Sekunden aktualisiert. #### Einziehen, prüfen und bestätigen ### Eine PaymentMethod erfassen - [collectPaymentMethod (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#collectpaymentmethod) Um Zahlungen einzuziehen, übergeben Sie das von Ihnen erstellte PaymentIntent-Objekt an das SDK. Ihre App muss mit einem Lesegerät verbunden sein, um eine Zahlungsmethode einzuziehen. Wenn Sie mit der Erfassung einer Zahlungsmethode beginnen, fordert das Lesegerät den Kunden oder die Kundin auf, seine bzw. ihre Karte anzutippen, einzulegen oder „weitere Zahlungsmethoden“ zu verwenden, darunter auch QR-Code-Zahlungsmethoden. Das Lesegerät übernimmt automatisch die Anzeige der Auswahl der Zahlungsmethode und des QR-Codes. ```js const { paymentIntent, error } = await collectPaymentMethod({ paymentIntent: paymentIntent }); if (error) { // Placeholder for handling exception } // Placeholder for processing PaymentIntent ``` Diese Methode erfasst die Daten der Zahlungsmethode mithilfe des verbundenen Lesegeräts und ordnet die Daten dem lokalen PaymentIntent zu. Zu diesem Zeitpunkt können Sie die ausgewählte Art der Zahlungsmethode bestimmen. ### PaymentIntent bestätigen - [confirmPaymentIntent (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#confirmpaymentintent) Nachdem Sie eine Zahlungsmethode erfolgreich erfasst haben, können Sie mit der Bestätigung der PaymentIntent fortfahren. Die Bestätigung des PaymentIntent mit dem SDK ist synchron, der Aufruf von `confirmPaymentIntent` wird blockiert, bis die Zahlung abgeschlossen ist. Bei QR-Code-Zahlungen wechselt diese Methode den Bildschirm des Lesegeräts zu einer Nutzeroberfläche, auf der der QR-Code angezeigt wird, den der Kunde bzw. die Kundin scannen kann. Das Lesegerät übernimmt die Anzeige des QR-Codes automatisch. Der Kunde oder die Kundin, der bzw. die die Zahlung auf seinem bzw. ihrem Gerät abschließt, aktualisiert die Zahlung und ermöglicht es der Methode, zurückzukehren. Sollte der Kunde oder die Kundin die Zahlung stornieren, gibt das SDK einen Fehler zurück. Einige Zahlungsmethoden (z. B. Affirm) erfordern eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url), wenn Sie eine PaymentIntent bestätigen, um Ihre Kundin oder Ihren Kunden nach der Authentifizierung oder Stornierung ihrer/seiner Zahlung in der App oder auf der Website der Zahlungsmethode dorthin weiterzuleiten. Sie können bei der Bestätigung des PaymentIntents Ihre eigene [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) angeben. Wenn Sie keine angeben, wird dem Kunden oder der Kundin eine [generische Startseite](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) angezeigt, die von Stripe gehostet wird. ```js const { paymentIntent, error } = await confirmPaymentIntent(paymentIntent); if (error) { // Placeholder for handling exception return; } // Placeholder for notifying your backend to capture paymentIntent.id ``` ### Geben Sie das Lesegerät frei, um eine weitere Zahlung anzunehmen Es kann mehrere Minuten dauern, bis ein Kunde/eine Kundin die Zahlung auf seinem/ihrem Gerät abschließt. Anstatt zu warten, bis das Lesegerät das Ergebnis der abgeschlossenen Zahlung anzeigt, können Sie das Lesegerät freigeben, um eine Zahlung für einen anderen Kunden/eine andere Kundin vorzunehmen. - [cancelConfirmPaymentIntent (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#cancelconfirmpaymentintent) Nachdem die Kundin/der Kunde den QR-Code gescannt und zu ihrem/seinem Gerät gewechselt hat, um die Zahlung abzuschließen, rufen Sie [cancelConfirmPaymentIntent](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#cancelconfirmpaymentintent) auf, um das Lesegerät zurückzusetzen. Nachdem Sie die Aktion des Lesegeräts zum Bestätigen der Zahlung abgebrochen haben, verbleibt die Zahlung im Status `requires_action`, sodass die Kundin/der Kunde die Zahlung abschließen kann. Verwenden Sie die Webhooks `payment_intent.succeeded` und `payment_intent.payment_failed`, um das Ergebnis der abgeschlossenen Zahlung abzugleichen. Erfahren Sie, wie Sie [einen PaymentIntent mit Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). ## Kundenerlebnis Nachdem Sie die [Abwicklung](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) des PaymentIntent [bestätigen](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment) Je nach Zahlungsmethode kann der Kunde oder die Kundin die Zahlung schnell in seiner bzw. ihrer Mobilanwendung abschließen (die meisten Digital Wallets) oder einen längeren Vorgang zur Bewertung von Finanzierungsangeboten durchlaufen (Zahlungsmethoden wie „Jetzt kaufen, später bezahlen“). In den folgenden Abschnitten wird der Zahlungsablauf für unterstützte Zahlungsmethoden mit intelligenten Lesegeräten dargestellt: #### Affirm Erfahren Sie mit diesen [Affirm-Schulungsressourcen](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources) mehr darüber, wie Sie das beste Kundenerlebnis schaffen und den Bekanntheitsgrad der BNPL-Optionen in einem Geschäft fördern. ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## Tests In einer *Sandbox* können Sie den QR-Code mithilfe eines üblichen Scan-Anmeldeformulars für QR-Codes auf Ihrem Mobiltelefon scannen. Der QR-Code enthält eine URL, die Sie zu einer von Stripe gehosteten Testzahlungsseite weiterleitet, auf der Sie die Testzahlung entweder autorisieren oder ablehnen können. ### Affirm-Sandbox Wenn Ihr Konto mit Affirm verbunden ist, gelangen Sie über die QR-Code URL zu einer von Affirm gehosteten Sandbox-Seite, auf der Sie den Prozess der Zahlung abschließen können. Wenn Sie zur Affirm-Sandbox weitergeleitet werden, erhalten Sie möglicherweise eine Aufforderung, die letzten vier Ziffern Ihrer Sozialversicherungsnummer einzugeben. Affirm empfiehlt, zu Testzwecken entweder `0000` oder `5678` zu verwenden. Wenn Ihr Konto nicht mit Affirm verbunden ist, werden Sie zu der von Stripe gehosteten Test-Zahlungsseite weitergeleitet.