Weiter zum Inhalt
Konto erstellen oder anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellenAnmelden
Jetzt starten
Zahlungen
Umsatz
Plattformen und Marktplätze
Geldmanagement
Entwicklerressourcen
APIs und SDKsHilfe
Übersicht
Informationen zu Stripe Payments
Aktualisieren Sie Ihre Integration
Zahlungsanalysefunktionen
Online-Zahlungen
ÜbersichtIhren Use case findenVerwenden Sie Managed Payments
Payment Links verwenden
Vorgefertigte Checkout-Seite verwenden
Erstellen Sie eine benutzerdefinierte Integration mit Elements
In-App-Integration erstellen
Präsenzzahlungen
Terminal
    Übersicht
    Persönliche Zahlungen akzeptieren
    Globale Verfügbarkeit
    Integrationsdesign
    Wählen Sie Ihr Lesegerät aus
    Konzipieren einer Integration
    Quickstart
    Beispielanwendungen
    Tests
    Terminal einrichten
    Integration einrichten
    Mehrparteien-Zahlungen mit Connect
    Mit einem Lesegerät verbinden
    Zahlung annehmen
    Kartenzahlungen einziehen
    Weitere Zahlungsmethoden
    Offline-Zahlungen annehmen
    Versand-/Telefonbezahlung
    Regionale Aspekte
    Während des Bezahlvorgangs
    Trinkgelder einziehen
    Zahlungsdetails erfassen und für die zukünftige Verwendung speichern
    Flexible Autorisierungen
    Nach dem Bezahlen
    Transaktionen zurückerstatten
    Belege zur Verfügung stellen
    Checkout anpassen
    Anzeige des Warenkorbs
    Eingaben auf dem Bildschirm erfassen
    Ausgelesene Daten erfassen
    Erfassen von Daten durch Tippen für NFC-Geräte
    Apps auf Geräten
    Lesegeräte verwalten
    Lesegeräte anfordern, zurückgeben, ersetzen
    Lesegerät registrieren
    Standorte und Zonen verwalten
    Lesegeräte konfigurieren
    Lesegeräte überwachen
    Quellen
    API-Referenzen
    Mobile Lesegeräte
    Intelligente Lesegeräte
    Tap-to-Pay-Lesegeräte
    SDK-Migrationsleitfaden
    Bereitstellungscheckliste
    Produktdatenblätter für Lesegeräte von Stripe Terminal
Zahlungsmethoden
Zahlungsmethoden hinzufügen
Zahlungsmethoden verwalten
Schnellerer Bezahlvorgang mit Link
Zahlungsszenarien
Umgang mit mehreren Währungen
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Mehr als Zahlungen
Unternehmensgründung
Krypto
Agentenbasierter Handel
Financial Connections
Climate
Betrug verstehen
Betrugsprävention von Radar
Zahlungsanfechtungen verwalten
Identitäten verifizieren
Vereinigte Staaten
Deutsch
StartseiteZahlungenTerminal

Kartenzahlungen einziehen

Bereiten Sie Ihre Anwendung und Ihr Backend auf das Einziehen von Kartenzahlungen mit Stripe Terminal vor.

Mehr erfahren

Sie kennen die Payment Intents API noch nicht? Hier finden Sie einige nützliche Informationen:

  • Die Payment Intents API
  • Das PaymentIntent-Objekt
  • Weitere Zahlungsszenarien

Zum Einziehen von Zahlungen mit Stripe Terminal müssen Sie einen Zahlungsablauf in Ihrer Anwendung programmieren. Verwenden Sie das Stripe Terminal SDK, um einen PaymentIntent zu erstellen und zu aktualisieren. Bei einem PaymentIntent handelt es sich um ein Objekt, das eine einzelne Zahlungssitzung darstellt.

Die fehlerresistente Terminal-Integration teilt den Zahlungsvorgang in mehrere Schritte auf, von denen jeder sicher erneut versucht werden kann:

  1. PaymentIntent erstellen.
  2. Abwickeln der Zahlung. Die Autorisierung der Karte der Kundin/des Kunden erfolgt, wenn das SDK die Zahlung abwickelt.
  3. (Optional) Zahlung erfassen

Erstellen Sie ein PaymentIntent
Clientseitig
Serverseitig

Der erste Schritt beim Einziehen von Zahlungen ist das Starten des Zahlungsablaufs. Wenn Kundinnen/Kunden den Bestellvorgang abschließen, muss Ihre Anwendung ein PaymentIntent-Objekt erstellen. Dies stellt eine neue Zahlungssitzung auf Stripe dar.

SDK-Referenz

  • createPaymentIntent (iOS)

Einen PaymentIntent können Sie auf dem Client oder auf dem Server erstellen.

Verwenden Sie Test-Beträge, um verschiedene Ergebnisse zu erzielen. Ein Betrag, der auf 00 endet, führt zu einer bestätigten Zahlung.

Häufiger Fehler

Erstellen Sie einen PaymentIntent nicht neu, wenn eine Karte abgelehnt wird. Verwenden Sie stattdessen denselben PaymentIntent wieder, um doppelte Abbuchungen zu vermeiden.

Clientseitig

Erstellen Sie einen PaymentIntent auf Ihrem Client:

Warnung

Wenn Ihre App mit dem Lesegerät Verifone P400 verbunden ist, können Sie keinen PaymentIntent über das iOS SDK erstellen. Sie müssen stattdessen den PaymentIntent auf dem Server erstellen und den PaymentIntent in Ihrer App mithilfe der Methode Terminal.retrievePaymentIntent im SDK abrufen.

PaymentViewController.swift
Swift
Objective-C
No results
import UIKit import StripeTerminal class PaymentViewController: UIViewController { // ... // 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") // ... } } } // ... }

Serverseitig

Wenn die zum Starten einer Zahlung erforderlichen Informationen in Ihrer App nicht jederzeit verfügbar sind, können Sie den PaymentIntent auch auf Ihrem Server erstellen.

Das folgende Beispiel zeigt, wie Sie einen PaymentIntent auf Ihrem Server erstellen:

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" \ -d "capture_method"="manual"

Für Terminal-Zahlungen muss der Parameter payment_method_types card_present enthalten.

Sie können den Zahlungsablauf wie folgt steuern:

  • Um den Zahlungsablauf für card_present-Zahlungen vollständig zu steuern, setzen Sie capture_method auf manual. So können Sie vor der endgültigen Finalisierung der Zahlung einen Abgleichschritt hinzufügen.
  • Um Zahlungen in einem Schritt zu autorisieren und zu erfassen, setzen Sie capture_method auf automatic.

Um in Australien Zahlungen zu akzeptieren, müssen Sie capture_method auf automatic oder manual_preferred setzen. Weitere Informationen finden Sie in unserer Dokumentation zu Australien. Um Interac-Zahlungen in Kanada zu akzeptieren, müssen Sie auch interac_present in payment_method_types aufnehmen. Weitere Informationen finden Sie in unserer Dokumentation zu Kanada.

Der PaymentIntent enthält ein Client-Geheimnis, einen Schlüssel, der für jeden PaymentIntent eindeutig ist. Um das Client-Geheimnis zu verwenden, müssen Sie es vom PaymentIntent auf Ihrem Server beziehen und an den Client übergeben.

Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
post '/create_payment_intent' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

SDK-Referenz

  • retrievePaymentIntent (iOS)

Um einen PaymentIntent abzurufen, rufen Sie mithilfe des Client-Geheimnisses retrievePaymentIntent auf.

Nachdem Sie den PaymentIntent abgerufen haben, verwenden Sie ihn, um processPaymentIntent aufzurufen.

PaymentViewController.swift
Swift
Objective-C
No results
func checkoutButtonAction() { // ... Fetch the client secret from your backend Terminal.shared.retrievePaymentIntent(clientSecret: clientSecret) { retrieveResult, retrieveError in if let error = retrieveError { print("retrievePaymentIntent failed: \(error)") } else if let paymentIntent = retrieveResult { print("retrievePaymentIntent succeeded: \(paymentIntent)") // ... } } }

Zahlung abwickeln
Clientseitig

Sie können eine Zahlung sofort mit der von einer Kundin/einem Kunden vorgelegten Karte abwickeln oder stattdessen die Kartenangaben überprüfen, bevor Sie mit dem Prozess der Zahlung fortfahren. Für die meisten Use Cases empfehlen wir eine sofortige Verarbeitung, da es sich um eine einfachere Integration mit weniger API-Aufrufen handelt. Wenn Sie jedoch Ihre eigene Geschäftslogik hinzufügen möchten, bevor die Karte autorisiert wird, können Sie den Vorgang zur Erfassung und Bestätigung in zwei Schritten verwenden.

Nach Erstellen eines PaymentIntent besteht der nächste Schritt darin, die Zahlung zu verarbeiten. Das Lesegerät fordert den Kunden/die Kundin auf, seine/ihre Karte aufzulegen oder einzuschieben und autorisiert die Zahlung dann.

SDK-Referenz

  • processPaymentIntent (iOS)

Während der Abwicklung einer Zahlung kann es einige Sekunden dauern, bis die Karteninhaberin oder der Karteninhaber ihre bzw. seine Karte aus der Wallet erhält oder während der Zahlung eine Frage an den Betreiber stellt.

PaymentViewController.swift
Swift
Objective-C
No results
// 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.processCancelable = Terminal.shared.processPaymentIntent(paymentIntent, collectConfig: nil, confirmConfig: nil) { processResult, processError in if let error = processError { print("processPaymentIntent failed: \(error)") } else if let processedPaymentIntent = processResult { print("processPaymentIntent succeeded") // Notify your backend to capture the PaymentIntent if let stripeId = processedPaymentIntent.stripeId { APIClient.shared.capturePaymentIntent(stripeId) { captureError in if let error = captureError { print("capturePaymentIntent failed: \(error)") } else { print("capturePaymentIntent succeeded") } } } else { print("Payment processed offline"); } } } } } }

Erfassung abbrechen

Programmgesteuerte Stornierung

SDK-Referenz

  • Cancelable (iOS)

Sie können die Verarbeitung eines PaymentIntents mithilfe des vom iOS-SDK zurückgegebenen Cancelable-Objekts abbrechen.

Kundenseitig initiierte Stornierung

SDK-Referenz

  • setCustomerCancellation (iOS)
  • CustomerCancellation (iOS)

Intelligente Lesegeräte zeigen Kundinnen und Kunden standardmäßig eine Schaltfläche zum Abbrechen an. Sie können dies deaktivieren, indem Sie customerCancellation auf .disableIfAvailable festlegen.

Durch Tippen auf die Schaltfläche „Abbrechen“ wird die aktive Transaktion abgebrochen.

PaymentViewController.swift
Swift
Objective-C
No results
let collectConfig = try CollectPaymentIntentConfigurationBuilder() .setCustomerCancellation(.disableIfAvailable) // turn OFF the cancel button, ON by default .build() Terminal.shared.collectPaymentMethod(paymentIntent: paymentIntent, collectConfig: collectConfig) { intentWithPaymentMethod, attachError in }

Ereignisse verarbeiten

SDK-Referenz

  • ReaderDisplayDelegate (iOS)

Wenn Sie eine Zahlungsmethode mit einem Lesegerät wie dem Stripe M2 ohne integriertes Display erfassen, muss Ihre App in der Lage sein, den Nutzerinnen und Nutzern Ereignisse aus der Erfassung der Zahlungsmethode anzuzeigen. Diese Ereignisse helfen Nutzerinnen und Nutzern, Zahlungen erfolgreich einzuziehen (beispielsweise beim erneuten Versuch einer Karte, bei der Verwendung einer anderen Lesemethode).

Wenn eine Transaktion startet, übergibt das SDK einen ReaderInputOptions-Wert an den Bildschirm-Handler des Lesegeräts Ihrer App, wobei die akzeptierten Eingabetypen (beispielsweise Swipe, Insert, oder Tap) angezeigt werden. Fordern Sie die Nutzerinnen und Nutzer über die Nutzeroberfläche des Bezahlvorgangs Ihrer App auf, die Karte unter Verwendung einer dieser Optionen vorzulegen.

Während der Transaktion kann das SDK unter Umständen Ihre App auffordern, Ihren Nutzerinnen und Nutzern zusätzliche Anweisungen anzuzeigen (beispielsweise Retry Card). Dazu wird ein Wert ReaderDisplayMessage an den Handler der Anzeige Ihres Lesegeräts übergeben. Stellen Sie sicher, dass die Nutzeroberfläche Ihres Bezahlvorgangs Ihren Nutzerinnen und Nutzern diese Meldungen anzeigt.

ReaderViewController.swift
Swift
Objective C
No results
// MARK: MobileReaderDelegate - only needed for Bluetooth 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) }

Ziehen Sie Zahlungen mit Tap to Pay auf dem iPhone ein

Wenn Ihre Anwendung bereit ist, eine Zahlung einzuziehen, übernimmt das Stripe-iOS-SDK die Anzeige, um den Einzugsvorgang abzuwickeln. Nach dem Aufruf der Zahlungsmethode zur Abwicklung läuft Ihre Anwendung weiter, aber das iPhone zeigt dem/der Karteninhaber/in eine Vollbildaufforderung an, die ihn/sie anweist, seine/ihre Karte oder NFC-basierte mobile Wallet vorzulegen. Wenn beim Lesen der Karte ein Fehler auftritt, wird eine Aufforderung zum erneuten Versuch angezeigt. Eine erfolgreiche Präsentation gibt eine Erfolgsanzeige zurück und dann kehrt die Kontrolle zu Ihrer Anwendung zurück.

Tap to Pay auf dem iPhone

Zahlungseinzug

  • Bei einer manuellen Erfassung von Zahlungen führt ein erfolgreicher Aufruf von processPaymentIntent zu einem PaymentIntent mit dem Status requires_capture.
  • Bei einer automatischen Erfassung von Zahlungen wechselt der PaymentIntent zum Status succeeded.

Warnung

Sie müssen einen PaymentIntent innerhalb von 2 Tagen manuell erfassen. Andernfalls läuft die Autorisierung ab und die Gelder werden für den Kunden/die Kundin freigegeben.

Umgang mit Fehlern

SDK-Referenz

  • ConfirmPaymentIntentError (iOS)

Wenn eine Zahlung fehlschlägt, gibt das SDK einen Fehler zurück, der den aktualisierten PaymentIntent beinhaltet, wenn sie von Stripe abgelehnt wurde. Ihre Anwendung muss den PaymentIntent prüfen, um zu entscheiden, wie der Fehler gehandhabt wird.

PaymentIntent-StatusBedeutungLösung
requires_payment_methodZahlungsmethode abgelehntVersuchen Sie, eine andere Zahlungsmethode zu erfassen, indem Sie processPaymentIntent mit demselben PaymentIntent erneut aufrufen.
requires_confirmationVorübergehendes VerbindungsproblemRufen Sie processPaymentIntent mit demselben PaymentIntent erneut auf, um die Anfrage zu wiederholen.
PaymentIntent ist nilAnfrage an Stripe ist abgelaufen, unbekannter Status des PaymentIntentVerarbeiten Sie den ursprünglichen PaymentIntent erneut. Erstellen Sie keinen neuen PaymentIntent, da dies zu mehreren Autorisierungen für den/die Karteninhaber/in führen könnte.

Wenn Anfragen mehrmals hintereinander ablaufen, liegt möglicherweise ein Verbindungsproblem vor. Stellen Sie sicher, dass Ihre App mit dem Internet verbunden ist.

Doppelte Zahlungen vermeiden

Das PaymentIntent-Objekt ermöglicht Geldbewegungen bei Stripe – verwenden Sie einen einzigen PaymentIntent, um eine Transaktion darzustellen.

Verwenden Sie denselben PaymentIntent, nachdem eine Karte abgelehnt wurde (z. B. wenn sie nicht ausreichend gedeckt ist), damit Ihre Kundin/Ihr Kunde es mit einer anderen Karte erneut versuchen kann.

Wenn Sie den PaymentIntent bearbeiten, müssen Sie processPaymentIntent aufrufen, um die Zahlungsinformationen auf dem Lesegerät zu aktualisieren.

Ein PaymentIntent muss sich im Status requires_payment_method befinden, bevor Stripe ihn verarbeiten kann. Ein autorisierter, erfasster oder stornierter PaymentIntent kann nicht von einem Lesegerät verarbeitet werden.

Zahlung erfassen
Serverseitig

Wenn Sie bei der Erstellung des PaymentIntent in Schritt 1 capture_method als manual definiert haben, gibt das SDK einen autorisierten, aber nicht erfassten PaymentIntent an Ihre Anwendung zurück. Erfahren Sie mehr über den Unterschied zwischen Autorisierung und Erfassung.

Wenn Ihre App einen bestätigten PaymentIntent von Ihrem SDK empfängt, stellen Sie sicher, dass Ihr Backend angewiesen wird, die Zahlung zu erfassen. Erstellen Sie einen Endpoint in Ihrem Backend, der eine PaymentIntent-ID akzeptiert und eine Anfrage zum Erfassen des PaymentIntent an die Stripe-API übermittelt:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Eine erfolgreiche capture führt zu einem PaymentIntent mit dem Status succeeded.

Hinweis

Um sicherzustellen, dass die erfasste Plattformgebühr für verbundene Konten korrekt ist, überprüfen Sie jeden PaymentIntent und ändern Sie die Plattformgebühr bei Bedarf, bevor Sie die Zahlung manuell erfassen.

Zahlungen abgleichen

Um die Zahlungsaktivität Ihres Unternehmens zu überwachen, können Sie am Tagesende PaymentIntents mit Ihrem internen Bestellsystem auf Ihrem Server abgleichen.

Ein PaymentIntent, der den Status requires_capture beibehält, kann eines der folgenden zwei Szenarien darstellen:

Überflüssige Autorisierung auf der Kartenabrechnung Ihrer Kundin/Ihres Kunden

  • Ursache: Der/die Nutzer/in hat den Bezahlvorgang Ihrer App während einer Transaktion verlassen.
  • Lösung: Wenn der nicht erfasste PaymentIntent keiner abgeschlossenen Bestellung auf Ihrem Server zugeordnet ist, können Sie ihn abbrechen. Sie können einen stornierten PaymentIntent nicht zur Durchführung von Zahlungen verwenden.

Unvollständiger Einzug von Geldern von einer Kundin/einem Kunden

  • Ursache: Die Anfrage Ihrer App, die Ihr Backend zur Erfassung der Zahlung anweist, ist fehlgeschlagen.
  • Lösung: Wenn der nicht erfasste PaymentIntent einer abgeschlossenen Bestellung auf Ihrem Server zugeordnet ist und keine andere Zahlung (zum Beispiel eine Barzahlung) für die Bestellung angenommen wurde, können Sie ihn erfassen.

Trinkgelder einziehen US only

In den USA können anspruchsberechtigte Nutzer/innen beim Erfassen von Zahlungen Trinkgelder einziehen.

War diese Seite hilfreich?
JaNein
  • Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
  • Schauen Sie sich unser Änderungsprotokoll an.
  • Fragen? Sales-Team kontaktieren.
  • LLM? Lesen Sie llms.txt.
  • Unterstützt von Markdoc