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
ÜbersichtZahlung annehmenAktualisieren Sie Ihre Integration
Online-Zahlungen
ÜbersichtIhren Use case finden
Payment Links verwenden
Vorgefertigte Checkout-Seite verwenden
Erstellen Sie eine benutzerdefinierte Integration mit Elements
In-App-Integration erstellen
Verwenden Sie Managed PaymentsWiederkehrende Zahlungen
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
      Migrationsleitfaden SDK v4
      SDK v3-Migrationsleitfaden
    Bereitstellungscheckliste
    Produktdatenblätter für Lesegeräte von Stripe Terminal
Zahlungsmethoden
Zahlungsmethoden hinzufügen
Zahlungsmethoden verwalten
Schnellerer Bezahlvorgang mit Link
Zahlungsvorgänge
Analytik
Salden und Abwicklungsdauer
Compliance und Sicherheit
Währungen
Abgelehnte Zahlungen
Anfechtungen
Betrugsprävention
Betrugsprävention von Radar
Auszahlungen
ZahlungsbelegeRückerstattungen und Stornierungen
Erweiterte Integrationen
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Multiprozessor-Orchestrierung
Mehr als Zahlungen
Unternehmensgründung
Krypto
Agentenbasierter Handel
Financial Connections
Climate
Identitäten verifizieren
Vereinigte Staaten
Deutsch
StartseiteZahlungenTerminal

Terminal SDK-Migrationsleitfaden

Erfahren Sie, wie Sie zur Version 5.0.0 des Stripe-Terminal-SDK migrieren.

Die iOS und Android SDKs für Stripe Terminal wurden mit einer Reihe wichtiger Änderungen an APIs und Verhalten aktualisiert, von denen einige erfordern, dass Sie Ihre Integration mit dem Stripe Terminal SDK aktualisieren. Um die Konsistenz zwischen unseren SDKs zu verbessern und Ihre Anwendungslogik und -integration zu vereinfachen, nehmen wir im Rahmen wichtiger Versionsaktualisierungen nderungen vor vor, die sich auf die Funktionsweise oder das Verhalten Ihrer Integration auswirken können. In diesem Leitfaden werden die neuesten Änderungen erläutert, um Sie bei der Aktualisierung Ihrer Integration zu unterstützen.

Hinweis

Erstellen Sie gerade eine neue Stripe Terminal-Integration? Auf unserer Seite zum Entwerfen einer Integration erfahren Sie, wie Sie beginnen können.

Migration zu Version 5.0.0

Hier erfahren Sie, was Sie über die SDKs für 5.0.0 Stripe Terminal iOS und Android wissen müssen:

  • Vereinfachte Integration von Zahlungen
    • Zahlungsabwicklung, Setup Intents und Rückerstattungen mit einem einzigen Methodenaufruf, bei die Schritte der Erfassung und der Bestätigung kombiniert werden.
  • Unterstützt moderne asynchrone Swift-Varianten und Kotlin Coroutines zur Vereinfachung komplexer asynchroner Abläufe
    • Swift Concurrency (async/await) für iOS und Kotlin Coroutines für Android.
  • Kundenstornierung standardmäßig aktiviert
    • Auf unterstützten Lesegeräten können Kundinnen und Kunden jetzt standardmäßig Transaktionen während der Zahlung, Einrichtung, Rückerstattung und der Datenerfassung stornieren.
  • Verbesserte Beobachtung der automatischen Wiederverbindung des mobilen Lesegeräts und des Tap-to-Pay-Lesegeräts
    • Verbesserte automatische Behandlung der Wiederverbindung von Lesegeräten mit mehr Verbindungsstatus für mobile Lesegeräte (Bluetooth und USB) und Tap-to-Pay-Lesegeräte.
  • Karten für Tap to Pay auf Android unterstützen Öffentliche Vorschau
    • Discover-Kartenzahlungen mit Tap to Pay auf Android annehmen.
  • Aktualisiert auf die unterstützten Mindestversionen der Plattformen von iOS 14.0 auf iOS 15.0

Wenn Ihre Anwendung derzeit eine Terminal-Android-SDK-Version vor 5.0.0 verwendet, müssen Sie mehrere Änderungen für ein Upgrade vornehmen. Eine detaillierte Liste der Änderungen von Version 4.x auf 5.0.0 finden Sie im SDK-Änderungsprotokoll.

Vereinfachte Integration von Zahlungen

Aktualisierung auf einheitliche Zahlungsabwicklung

Das v5 SDK führt optimierte Methoden ein, die die Schritte der Erfassung und Bestätigung in einem einzigen Vorgang kombinieren. Während die bestehenden Methoden collectPaymentMethod und confirmPaymentIntent weiterhin funktionieren, empfehlen wir die Verwendung der neuen einheitlichen Methoden für einfachere Integrationen.

Zahlungen mit processPaymentIntent abwickeln

Ersetzen Sie die zweistufige Erfassung und Bestätigung durch einen einzigen Aufruf der Methode processPaymentIntent.

_Vorher _

Kotlin
Java
No results
// Step 1: Collect payment method Terminal.getInstance().collectPaymentMethod( paymentIntent, collectConfig, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Step 2: Confirm the payment Terminal.getInstance().confirmPaymentIntent(paymentIntent, object : PaymentIntentCallback { override fun onSuccess(confirmedPaymentIntent: PaymentIntent) { // Payment successful } override fun onFailure(e: TerminalException) { // Payment confirmation failed } }) } override fun onFailure(e: TerminalException) { // Payment method collection failed } } )

_Nachher _

Kotlin
Java
No results
// Process and confirm the payment in one step Terminal.getInstance().processPaymentIntent( paymentIntent, collectConfig, confirmConfig, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Payment successful } override fun onFailure(e: TerminalException) { // Payment failed } } )

Abwicklung von Rückerstattungen mit processRefund

Die Methoden collectRefundPaymentMethod und confirmRefund sind jetzt veraltet. Verwenden Sie stattdessen processRefund.

_Vorher _

Kotlin
Java
No results
// Step 1: Collect refund payment method val refundParams = RefundParameters.ByChargeId( id = "ch_123", amount = 1000L, currency = "cad" ).build() Terminal.getInstance().collectRefundPaymentMethod( refundParams, object : Callback { override fun onSuccess() { // Step 2: Confirm the refund Terminal.getInstance().confirmRefund(object : RefundCallback { override fun onSuccess(refund: Refund) { // Refund successful } override fun onFailure(e: TerminalException) { // Refund confirmation failed } }) } override fun onFailure(e: TerminalException) { // Refund collection failed } } )

_Nachher _

Kotlin
Java
No results
val refundParams = RefundParameters.ByChargeId( id = "ch_123", amount = 1000, currency = "cad" ).build() // Process the refund in one step Terminal.getInstance().processRefund( refundParams, object : RefundCallback { override fun onSuccess(refund: Refund) { // Refund successful } override fun onFailure(e: TerminalException) { // Refund failed } } )

SetupIntents mit processSetupIntent verarbeiten

Zweistufige Lösung zum Erfassen und Bestätigen durch einen einzigen Aufruf der Methode processSetupIntent ersetzen.

_Vorher _

Kotlin
Java
No results
// Step 1: Collect setup intent payment method Terminal.getInstance().collectSetupIntentPaymentMethod( intent = setupIntent, allowRedisplay = AllowRedisplay.ALWAYS, callback = object : SetupIntentCallback { override fun onSuccess(setupIntent: SetupIntent) { // Step 2: Confirm the setup intent Terminal.getInstance().confirmSetupIntent(setupIntent, object : SetupIntentCallback { override fun onSuccess(confirmedSetupIntent: SetupIntent) { // Setup intent successful } override fun onFailure(e: TerminalException) { // Setup intent confirmation failed } }) } override fun onFailure(e: TerminalException) { // Setup intent collection failed } } )

_Nachher _

Kotlin
Java
No results
// Configure with allowRedisplay val config = CollectSetupIntentConfiguration.Builder() .build() // Process the setup intent in one step Terminal.getInstance().processSetupIntent( intent = setupIntent, allowRedisplay = AllowRedisplay.ALWAYS, collectConfig = config, callback = object : SetupIntentCallback { override fun onSuccess(setupIntent: SetupIntent) { // Setup intent successful } override fun onFailure(e: TerminalException) { // Setup intent failed } } )

Support für Kotlin Coroutines

Für Kotlin-Entwickler stellt ein neues optionales Modul stripeterminal-ktx suspend-Funktions-Wrapper für asynchrone Terminal-APIs bereit.

Hinweis

Fügen Sie diese Abhängigkeit hinzu: Implementierung("com.tripe:stripeterminal-ktx:5.0.0")

_Vorher _

Terminal.getInstance().discoverReaders(config, object : DiscoveryListener { override fun onUpdateDiscoveredReaders(readers: List<Reader>) { val selectedReader = readers[0] Terminal.getInstance().connectReader(selectedReader, connectionConfig, object : ReaderCallback { override fun onSuccess(reader: Reader) { // Handle successful connection } override fun onFailure(e: TerminalException) { // Handle connection failure } }) } })

_Nachher _

// Add dependency: implementation("com.stripe:stripeterminal-ktx:5.0.0") coroutineScope { try { val readers = Terminal.getInstance().discoverReaders(discoveryConfig) .filter { it.isNotEmpty() } .first() val selectedReader = readers.first() val reader = Terminal.getInstance().connectReader(selectedReader, connectConfig) // Handle successful connection } catch(e: TerminalException) { // Handle failures on discovery or connect } }

Plattform und Initialisierung

Terminal Initialisierung aktualisieren

Die Methode Terminal.initTerminal wurde in Terminal.init umbenannt. Sie erfordert jetzt einen annullierbaren OfflineListener-Parameter.

_Vorher _

Kotlin
Java
No results
Terminal.initTerminal(applicationContext, LogLevel.VERBOSE, tokenProvider, terminalListener)

_Nachher _

Kotlin
Java
No results
Terminal.init(applicationContext, LogLevel.VERBOSE, tokenProvider, terminalListener, offlineListener)

Erkennung und Verbindung des Lesegeräts

Umgang mit Änderungen des Wiederverbindungsstatus

Ein neuer RECONNECTING-Wert wurde zur ConnectionStatus-Enumeration hinzugefügt. Während der ersten Verbindung ist Terminal.getInstance().getConnectedReader() jetzt null, bis der Verbindungsversuch erfolgreich ist.

_Vorher _

Kotlin
Java
No results
override fun onConnectionStatusChange(status: ConnectionStatus) { when (status) { ConnectionStatus.NOT_CONNECTED -> { // Handle not connected } ConnectionStatus.CONNECTED -> { // Handle connected } } }

_Nachher _

Kotlin
Java
No results
override fun onConnectionStatusChange(status: ConnectionStatus) { when (status) { ConnectionStatus.NOT_CONNECTED -> { // Handle not connected } ConnectionStatus.CONNECTED -> { // Handle connected } ConnectionStatus.RECONNECTING -> { // Handle reconnection in progress } } }

Optimierte Verbindung mit easyConnect

Für die Integration intelligenter Lesegeräte, Tap to Pay und Apps auf Geräten können Sie jetzt Terminal.easyConnect verwenden, das Erkennung und Verbindung in einem einzigen Methodenaufruf vereint.

_Vorher _

Kotlin
Java
No results
// Step 1: Discover the reader Terminal.getInstance().discoverReaders(config, object : DiscoveryListener { override fun onUpdateDiscoveredReaders(readers: List<Reader>) { val selectedReader = readers[0] // Step 2: Connect to the reader Terminal.getInstance().connectReader(selectedReader, connectionConfig, readerCallback) } })

_Nachher _

Kotlin
Java
No results
// Discover and connect in one step by providing discovery filter val easyConnectConfig = InternetEasyConnectConfiguration( discoveryConfiguration = DiscoveryConfiguration.InternetDiscoveryConfiguration( location = "YOUR-LOCATION-ID", // optional discoveryFilter = DiscoveryFilter.BySerial("YOUR-READER-SERIAL-NUMBER"), ), connectionConfiguration = ConnectionConfiguration.InternetConnectionConfiguration( internetReaderListener = internetReaderListener, ) ) Terminal.getInstance().easyConnect( easyConnectConfig, object : ReaderCallback { override fun onSuccess(reader: Reader) { // Handle successful connection } override fun onFailure(e: TerminalException) { // Handle failure } } )

Erkennungsfilterung für Internet-Lesegeräte

Die Erkennung von Internet-Lesegeräten unterstützt jetzt die Filterung nach Lesegerät-ID oder Seriennummer. Legen Sie die Eigenschaft discoveryFilter in InternetDiscoveryConfiguration fest, um ein bestimmtes Lesegerät zu erkennen.

_Vorher _

Kotlin
Java
No results
val config = InternetDiscoveryConfiguration(location = "tml_1234567890")

_Nachher _

Kotlin
Java
No results
val config = InternetDiscoveryConfiguration( location = "tml_1234567890", // optional discoveryFilter = DiscoveryFilter.BySerial("READER-SERIAL-NUMBER"), // or DiscoveryFilter.ByReaderId("tmr_YOUR-READER-STRIPE-ID) to filter by reader id )

Annahme von Zahlungen und Datenerfassung

Kundenstornierung ist jetzt standardmäßig aktiviert

Bei Android-basierten Lesegeräten ist die Möglichkeit für Kundinnen und Kunden, Transaktionen zu stornieren, jetzt standardmäßig aktiviert. Sie können diese Funktion deaktivieren, indem Sie customerCancellation auf DISABLE_IF_AVAILABLE festlegen.

_Vorher _

Kotlin
Java
No results
val config = CollectConfiguration.Builder() .setEnableCustomerCancellation(false) .build()

_Nachher _

Kotlin
Java
No results
val config = CollectPaymentIntentConfiguration.Builder() .setCustomerCancellation(CustomerCancellation.DISABLE_IF_AVAILABLE) .build()

Aktualisierungen der Interac-Rückerstattungsparameter

Wenn Sie RefundParameter für eine Interac-Rückerstattung mit einer PaymentIntent ID erstellen, müssen Sie jetzt auch das clientSecret des PaymentIntents übergeben. Alternativ können Sie auch die ID der Zahlung weiter verwenden, für die kein clientSecret erforderlich ist.

_Vorher _

Kotlin
Java
No results
val refundParams = RefundParameters.Builder( RefundParameters.Id.PaymentIntent("pi_123"), 1000, "cad" ).build()

_Nachher _

Kotlin
Java
No results
val refundParams = RefundParameters.ByPaymentIntentId( paymentIntentId = "pi_123", clientSecret = "pi_123_secret_abc", amount = 1000, currency = "cad" ).build()

Aktualisieren Sie Ihre Apps on Devices-Integration

Die Maven-Koordinaten für die Funktion „Apps on Devide“ wurden in com.stripe:stripeterminal-appsondevices:5.0.0 geändert. Aktualisieren Sie Ihre Build-Abhängigkeiten, um auf den neuen Artefaktnamen zu verweisen. Stripe aktualisiert das alte Artefakt handoffclient nicht mehr.

Wir haben alle Handoff-Klassennamen in AppsOnDevices umbenannt, um die Funktionalität der Funktion besser zu beschreiben.

_Vorher _

build.gradle.kts
Kotlin
Groovy
No results
dependencies { implementation("com.stripe:stripeterminal-handoffclient:4.0.0") }

_Nachher _

build.gradle.kts
Kotlin
Groovy
No results
dependencies { implementation("com.stripe:stripeterminal-appsondevices:5.0.0") }

Benennen Sie Handoff-Klassen in AppsOnDevices um

Wir haben alle Handoff-Klassennamen in AppsOnDevices umbenannt, und zwar in den Bereichen Discovery-Konfiguration, Verbindungskonfiguration, Listener und Token-Anbieter.

_Vorher _

Kotlin
Java
No results
val discoveryConfig = HandoffDiscoveryConfiguration() Terminal.getInstance().discoverReaders( discoveryConfig, object : DiscoveryListener { override fun onUpdateDiscoveredReaders(readers: List<Reader>) { val reader = readers.first() val connectionConfig = HandoffConnectionConfiguration( handoffReaderListener = object : HandoffReaderListener { override fun onDisconnect(reason: DisconnectReason) { // Handle disconnect } } ) Terminal.getInstance().connectReader(reader, connectionConfig, readerCallback) } } ) val tokenProvider = HandoffConnectionTokenProvider()

_Nachher _

Kotlin
Java
No results
val discoveryConfig = AppsOnDevicesDiscoveryConfiguration() Terminal.getInstance().discoverReaders( discoveryConfig, object : DiscoveryListener { override fun onUpdateDiscoveredReaders(readers: List<Reader>) { val reader = readers.first() val connectionConfig = AppsOnDevicesConnectionConfiguration( appsOnDevicesListener = object : AppsOnDevicesListener { override fun onDisconnect(reason: DisconnectReason) { // Handle disconnect } } ) Terminal.getInstance().connectReader(reader, connectionConfig, readerCallback) } } ) val tokenProvider = AppsOnDevicesConnectionTokenProvider()

Integration von Tap to Pay auf Android aktualisieren

Systemanforderungen

Tap to Pay auf Android 5.0.0 und höher erfordert, dass auf Ihrem Android-Gerät Android 13 oder höher ausgeführt wird.

Diese Version setzt auch voraus, dass der KeyStore Ihres Android-Geräts hardwaregestützte Schlüsselvereinbarungen unterstützt. Dies wird automatisch von supportsReadersOfType() für Sie überprüft, kann aber auch verifiziert werden, indem überprüft wird, ob die Version Funktion_HARDWARE_KEYSTORE Ihres Geräts 100 oder höher ist. Da diese Anforderung von den Hardware-Funktionen eines Geräts abhängt, wird sie möglicherweise von Geräten, die ursprünglich mit Android 12 oder niedriger veröffentlicht wurden, nicht erfüllt, selbst wenn sie aktualisiert wurden, um die Android 13-Laufzeitanforderung zu erfüllen. Diese neue Anforderung bedeutet, dass Geräte wie das Samsung Galaxy Tab Active4 Pro in den SDK-Versionen 5.0.0 und höher nicht mehr unterstützt werden.

In Produktionsumgebungen schlägt die Erkennung des Lesegeräts mit einem TAP_TO_PAY_INSECURE_ENVIRONMENT-Fehler fehl, wenn Entwickler-Optionen, USB- oder die WLAN-Fehlerbehebung oder andere Fehlerbehebungsoptionen auf dem Gerät aktiviert sind. Dies gilt nicht für die Nutzung des simulierten Tap-to-Pay-Lesegeräts.

TapZone-Konfigurations-Refactoring

Die Klasse TapToPayUxConfiguration.TapZone wurde neu refaktoriert. Die Felder indicator und position werden durch ein einzelnes TapZone-Objekt ersetzt.

_Vorher _

Kotlin
Java
No results
val config = TapToPayUxConfiguration.Builder() .setTapZone( indicator = TapZoneIndicator.ABOVE, position = TapZonePosition.Manual(0.5f, 0.2f) ) .build()

_Nachher _

Kotlin
Java
No results
// Position the tap zone above the reader UI val config = TapToPayUxConfiguration.Builder() .setTapZone(TapZone.Above(horizontalBias = 0.2f)) .build() // Or position it on the left side of the screen val config2 = TapToPayUxConfiguration.Builder() .setTapZone(TapZone.Left()) // Center vertically by default .build()
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