# Test Stripe Terminal Erfahren Sie, wie Sie Ihre Terminal-Integration testen können. > Ein Großteil des Verfahrens zum Testen von Stripe Terminal entspricht dem Verfahren für das Testen von Online-Zahlungen per Stripe. Außerdem können Sie Stripe Terminal im Testmodus nicht mit mobilen Wallets (z. B. Apple Pay oder Google Pay) verwenden. Weitere Informationen finden Sie im [allgemeinen Stripe-Testleitfaden](https://docs.stripe.com/testing.md). Der beste Weg für eine erfolgreiche Terminal-Bereitstellung besteht darin, jeden Teil Ihrer Integration zu testen. Wir stellen Test-Tools für jede Phase zur Verfügung: 1. Testen Sie Ihre Integration mit dem Lesegerät-Simulator, bevor Sie ein Lesegerät bestellen. 2. Testen Sie die komplette Integration Ihrer Hardware mit einer physischen Testkarte. ## Simuliertes Lesegerät - [discoverReaders (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#discover-readers) - [DiscoveryConfiguration (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPDiscoveryConfiguration.html) - [DiscoveryConfiguration (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-discovery-configuration/index.html) - [Lesegeräte erkennen](https://docs.stripe.com/api/terminal/readers/list.md) Stripe Terminal SDKs und die servergestützte Integration verfügen über ein integriertes simuliertes Kartenlesegerät, sodass Sie Ihre App entwickeln und testen können, ohne eine Verbindung zu physischer Hardware herstellen zu müssen. Mit dem simulierten Lesegerät können Sie alle Terminal-Abläufe in Ihrer App nachbilden, unabhängig davon, ob Ihre Integration abgeschlossen ist oder sich noch im Aufbau befindet. Das simulierte Lesegerät bietet keine Nutzeroberfläche. Nachdem Sie in Ihrer App eine Verbindung damit hergestellt haben, können Sie sehen, dass es funktioniert, wenn Aufrufe des Stripe SDK oder der API erfolgreich sind. Simulierte Lesegeräte für SDKs simulieren bei Bedarf automatisch die Kartenpräsentation. Aktualisieren Sie für die serverseitige Integration Ihre Integration auf [Kartenwährung simulieren](https://docs.stripe.com/terminal/references/testing.md#simulated-card-presentment). ## Simulierte Testkarten - [SimulatorConfiguration (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPSimulatorConfiguration.html) - [SimulatorConfiguration (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-simulator-configuration/index.html) Das simulierte Lesegerät kann so konfiguriert werden, dass es eine simulierte Testkarte verwendet, mit der verschiedene Abläufe innerhalb Ihrer Point-of-Sale-Anwendung getestet werden können. Bevor Sie eine Zahlungsmethode erfassen, konfigurieren Sie das simulierte Lesegerät so, dass es eine der folgenden Testkartennummern oder Testzahlungsmethoden verwendet, um bestimmte Antworten zu generieren. Die während des Erfassungsschritts festgelegte Konfiguration (z. B. die Testkartennummer) bleibt 30 Minuten lang gespeichert. Das bedeutet, dass ein nachfolgender Bestätigungsschritt dieselbe Konfiguration verwendet, auch wenn Sie diese nicht erneut explizit übergeben. Jede beim Bestätigungsaufruf übergebene Konfiguration hat Vorrang vor den zwischengespeicherten Werten aus dem Erfassungsschritt. ### Standard-Testkarten | Testkartennummer | Testzahlungsmethode | Marke | | ------------------- | ----------------------------------- | ---------------------------------- | | 4242424242424242 | `visa` | Visa | | 4000056655665556 | `visa_debit` | Visa (Debit) | | 5555555555554444 | `mastercard` | Mastercard | | 5200828282828210 | `mastercard_debit` | Mastercard (Debit) | | 5105105105105100 | `mastercard_prepaid` | Mastercard (Prepaid) | | 378282246310005 | `amex` | American Express | | 371449635398431 | `amex2` | American Express | | 6011111111111117 | `discover` | Discover | | 6011000990139424 | `discover2` | Discover | | 3056930009020004 | `diners` | Diners Club | | 36227206271667 | `diners_14digits` | Diners Club (14-stellige Karte) | | 3566002020360505 | `jcb` | JCB | | 6200000000000005 | `unionpay` | UnionPay | | 4506445006931933 | `interac` | Interac | | 6280000360000978 | `eftpos_au_debit` | eftpos Australia | | 4000050360000001 | `eftpos_au_visa_debit` | EFTPOS Australien/Visa | | 5555050360000080 | `eftpos_au_mastercard_debit` | EFTPOS Australien/Mastercard | | 4000002500001001 | `cartes_bancaires_visa_debit` | Cartes Bancaires (CB) / Visa | | 5555552500001001 | `cartes_bancaires_mastercard_debit` | Cartes Bancaires (CB) / Mastercard | | 4711009900000316877 | `girocard_debit` | Girocard | ### Testkarten für bestimmte Erfolgsfälle | Testkartennummer | Testzahlungsmethode | Ergebnis | | ---------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 4001007020000002 | `offline_pin_cvm` | Simuliert eine Aufforderung an Karteninhaber/innen, eine *Offline-PIN* (Offline PIN is a card verification method for EMV chip cards. These cards store the PIN securely on the chip itself, so PIN verification can occur without a network connection) einzugeben. Für die resultierende Zahlung ist die [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) auf `offline_pin` festgelegt. | | 4000008260000075 | `offline_pin_sca_retry` | Kundenauthentifizierung](/strong-customer-authentication) ausgelösten Wiederholungsvorgang, bei dem die anfängliche kontaktlose Zahlung einer Karteninhaberin/eines Karteninhabers fehlschlägt und das Lesegerät diese/diesen dann auffordert, die Karte einzuführen und die zugehörige *offline PIN.* (Offline PIN is a card verification method for EMV chip cards. These cards store the PIN securely on the chip itself, so PIN verification can occur without a network connection) einzugeben. Für die resultierende Abbuchung ist [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) auf `offline_pin` gesetzt. | | 4001000360000005 | `online_pin_cvm` | Simuliert eine Aufforderung an Karteninhaber/innen, eine *Online-PIN* (Online PIN is a card verification method for EMV chip cards. These cards require the terminal to contact the issuer over a network connection to verify the PIN) einzugeben. Für die resultierende Zahlung ist die [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) auf `online_pin` festgelegt. | | 4000002760000008 | `online_pin_sca_retry` | Simuliert einen durch die [starke Kundenauthentifizierung](https://docs.stripe.com/strong-customer-authentication.md) ausgelösten Wiederholungsvorgang, bei dem die anfängliche kontaktlose Zahlung einer Karteninhaberin/eines Karteninhabers fehlschlägt und das Lesegerät diese/diesen dann auffordert, die zugehörige *Online-PIN einzugeben.* (Online PIN is a card verification method for EMV chip cards. These cards require the terminal to contact the issuer over a network connection to verify the PIN) Für die endgültige Zahlung ist [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) auf `online_pin` gesetzt. | ### Testkarten für bestimmte Fehlerfälle > Die Verwendung dieser Karten für das [direkte Speichern ohne Belastung](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md) und [SetupIntents](https://docs.stripe.com/api/setup_intents.md) gibt eine [setup_intent_authentication_failure](https://docs.stripe.com/error-codes.md#setup-intent-authentication-failure)-Antwort zurück. | Testkartennummer | Testzahlungsmethode | Ergebnis | | ---------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4000000000000002 | `charge_declined` | Die Abbuchung wird mit dem Code `card_declined` abgelehnt. | | 4000000000009995 | `charge_declined_insufficient_funds` | Die Abbuchung wird mit dem Code `card_declined` abgelehnt. Das [decline_code](https://docs.stripe.com/declines/codes.md)-Attribut ist `insufficient_funds`. | | 4000000000009987 | `charge_declined_lost_card` | Die Abbuchung wird mit dem Code `card_declined` abgelehnt. Das [decline_code](https://docs.stripe.com/declines/codes.md)-Attribut ist `lost_card`. | | 4000000000009979 | `charge_declined_stolen_card` | Die Abbuchung wird mit dem Code `card_declined` abgelehnt. Das [decline_code](https://docs.stripe.com/declines/codes.md)-Attribut ist `stolen_card`. | | 4000000000000069 | `charge_declined_expired_card` | Die Abbuchung wird mit dem Code `expired_card` abgelehnt. | | 4000000000000119 | `charge_declined_processing_error` | Die Abbuchung wird mit dem Code `processing_error` abgelehnt. | | 4000000000005126 | `refund_fail` | Zahlung erfolgreich, aber [Rückerstattung einer erfassten Zahlung schlägt](https://docs.stripe.com/refunds.md#failed-refunds) asynchron fehl mit einem `failure_reason` `expired_or_canceled_card`. Da Rückerstattungen asynchron fehlschlagen, erscheint die Rückerstattung zunächst erfolgreich und gibt den Status `Fehlgeschlagen` erst bei nachfolgenden Abrufen zurück. Wir benachrichtigen Sie auch mithilfe des `refundment.failed`-[Webhook](https://docs.stripe.com/api/events/types.md#event_types-refund.failed)-Ereignisses über fehlgeschlagene Rückerstattungen. | ## Simulierte Kartenpräsentation Nutzen Sie bei Verwenden der servergestützten Integration den Endpoint [present_payment_method](https://docs.stripe.com/api/terminal/readers/present_payment_method.md), um zu simulieren, dass Karteninhaber/innen ihre Karte auf das Lesegerät auflegen oder in dieses einführen. ```curl curl -X POST https://api.stripe.com/v1/test_helpers/terminal/readers/tmr_xxx/present_payment_method \ -u "<>:" ``` ```json { "id": "tmr_xxx", "object": "terminal.reader", "action": { "failure_code": null, "failure_message": null, "process_payment_intent": { "payment_intent": "pi_xxx" }, "status": "succeeded", "type": "process_payment_intent" }, … } ``` Wenn Sie keine Parameter angeben, wird für die simulierte Zahlung standardmäßig eine gültige [Testkarte](https://docs.stripe.com/terminal/references/testing.md#standard-test-cards) verwendet, die auf der Art der Zahlungsmethode des PaymentIntent basiert. Nachfolgend finden Sie die Standard-Testkarten für die Arten von Terminal-Zahlungsmethoden: | Art der Zahlungsmethode | Testkartennummer | Testzahlungsmethode | | ------------------------------------ | ---------------- | ------------------- | | `card_present` | 4242424242424242 | `visa` | | `card_present` und `interac_present` | 4242424242424242 | `visa` | | `interac_present` | 4506445006931933 | `interac` | Mit den [Standard-Testkarten](https://docs.stripe.com/terminal/references/testing.md#standard-test-cards) können Sie zur Simulation von Fehlerszenarien auch [Testbeträge](https://docs.stripe.com/terminal/references/testing.md#physical-test-cards) verwenden. ## Testen Sie das Lesegerät-Update Verwenden Sie Szenarien für Updates der Lesegerät-Software, um zu testen, wie Ihre Integration Updates verarbeitet. Dies funktioniert mit simulierten und physischen mobilen Lesegeräten in einer Sandbox. #### iOS - [TestReaderUpdate (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTestReaderUpdate.html) - [TestReaderUpdateType (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Enums/SCPTestReaderUpdateType.html) - [BluetoothConnectionConfiguration (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPBluetoothConnectionConfiguration.html) - [UsbConnectionConfiguration (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPUsbConnectionConfiguration.html) - [TapToPayConnectionConfiguration (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTapToPayConnectionConfiguration.html) Legen Sie die Eigenschaft `testReaderUpdate` für [BluetoothConnectionConfiguration](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPBluetoothConnectionConfiguration.html), [UsbConnectionConfiguration](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPUsbConnectionConfiguration.html) oder [TapToPayConnectionConfiguration](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTapToPayConnectionConfiguration.html) fest, um während der Verbindung das Szenario eines Lesegerät-Updates auszulösen. Dies funktioniert mit simulierten und physischen mobilen Lesegeräten sowie mit simulierten Tap to Pay-Lesegeräten in einer Sandbox. Erstellen Sie ein [TestReaderUpdate](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTestReaderUpdate.html) mit einer der Werksmethoden. Sie können optional [UpdateComponent](https://stripe.dev/stripe-terminal-ios/docs/Enums/SCPUpdateComponent.html)-Werte wie `.firmware`, `.config`, `.keys` oder `.incremental` angeben. | TestReaderUpdate | Ergebnis | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `.available(components)` | Ein optionales Update ist verfügbar. Teilen Sie dem Nutzer/der Nutzerin mit, dass ein Update verfügbar ist, und heben Sie das `requiredAt`-Datum hervor. | | `.required(components)` | Ein erforderliches Update wird während der Verbindung ausgeführt. Ihr `MobileReaderDelegate` empfängt den Rückruf `didStartInstallingUpdate`. | | `.requiredOffline(components)` | Es ist ein erforderliches Update vorhanden. Wenn Sie [offline](https://docs.stripe.com/terminal/features/operate-offline/collect-card-payments.md?terminal-card-present-integration=terminal&terminal-sdk-platform=ios&reader-type=simulated#connect-while-offline) verbinden, schlägt die Verbindung fehl, da die Version des Lesegeräts nicht zulässig ist. Sobald Sie online sind, wird das Lesegerät aktualisiert und verbindet sich normal. | | `.lowBattery()` | Es ist ein erforderliches Update vorhanden, aber der Akku des Lesegeräts ist zu schwach, um das Update zu starten. Die Verbindung schlägt fehl. | | `.lowBatterySucceedConnect()` | Es ist ein erforderliches Update vorhanden, aber der Akku des Lesegeräts ist zu schwach, um das Update zu starten. Das Update schlägt fehl, aber die Verbindung ist erfolgreich, da das Lesegerät eine aktuelle Software-Version ausführt. | | `.random()` | Wählt zufällig eines der vorherigen Szenarien aus oder `nil`, um zu simulieren, dass kein Update verfügbar ist. | #### Swift ```swift // Create a TestReaderUpdate to simulate a required update during connection let testReaderUpdate = TestReaderUpdate.required([.firmware, .config]) let connectionConfig: BluetoothConnectionConfiguration do { connectionConfig = try BluetoothConnectionConfigurationBuilder(delegate: readerDelegate, locationId: ""{{LOCATION_ID}}"") .setTestReaderUpdate(testReaderUpdate) .build() } catch { // Handle the error building the connection configuration return } Terminal.shared.connectReader(selectedReader, connectionConfig: connectionConfig) { reader, error in if let reader = reader { print("Successfully connected to reader: \(reader)") } else if let error = error { print("connectReader failed: \(error)") } } ``` > `TapToPayConnectionConfiguration` unterstützt nur das Szenario `.required(components)`. Andere Typen geben einen Fehler zurück. #### Den SimulatorConfiguration-Ansatz verwenden (Deprecated) > Der Ansatz `simulatorConfiguration.availableReaderUpdate` ist ab SDK 5.5 veraltet. Verwenden Sie stattdessen die Verbindungskonfigurationseigenschaft `testReaderUpdate`. Legen Sie `Terminal.shared.simulatorConfiguration.availableReaderUpdate` auf eine der folgenden Konfigurationen fest. Durch den Aufruf von `connectReader` wird ein simuliertes Lesegerät-Update ausgelöst. Dies funktioniert nur mit dem simulierten Bluetooth-Lesegerät. | Konfiguration aktualisieren | Ergebnis | | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SimulateReaderUpdateNone` | Kein Update verfügbar. | | `SimulateReaderUpdateRequired` | Eine erforderliche Aktualisierung ist verfügbar und dauert 1 Minute. Ihr `BluetoothReaderDelegate` empfängt den Rückruf `didStartInstallingUpdate`. | | `SimulateReaderUpdateRequiredForOffline` | Ein erforderliches Update ist überfällig und dauert 1 Minute. Wenn Sie [offline](https://docs.stripe.com/terminal/features/operate-offline/collect-card-payments.md?terminal-card-present-integration=terminal&terminal-sdk-platform=ios&reader-type=simulated#connect-while-offline) arbeiten, kann das Lesegerät keine Verbindung herstellen. Ihr `BluetoothReaderDelegate` empfängt den Rückruf `didStartInstallingUpdate`. | | `SimulateReaderUpdateAvailable` | Ein optionales Update ist verfügbar. Teilen Sie dem Nutzer/der Nutzerin mit, dass ein Update verfügbar ist, und heben Sie das `requiredAt`-Datum hervor. | | `SimulateReaderUpdateLowBattery` | Ein erforderliches Update beginnt mit der Installation, schlägt jedoch fehl, weil der Akku des Lesegeräts schwach ist. Die Verbindung zum Lesegerät schlägt ebenfalls fehl. Dies simuliert, dass das Lesegerät eine ältere Software-Version ausführt. | | `SimulateReaderUpdateLowBatterySucceedConnect` | Ein erforderliches Update beginnt mit der Installation, schlägt jedoch fehl, weil der Akku des Lesegeräts schwach ist. Das Lesegerät verbindet sich dennoch. Dies simuliert, dass das Lesegerät eine aktuelle Software-Version ausführt, die noch zulässig ist. Das Update wird beim nächsten Verbindungsaufbau mit dem Lesegerät erneut versucht. | | `SimulateReaderUpdateRandom` | Wählt zufällig eines der vorherigen Szenarien aus. | #### Android - [TestReaderUpdate (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-test-reader-update/index.html) - [TestReaderUpdateType (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-test-reader-update/-test-reader-update-type/index.html) - [BluetoothConnectionConfiguration (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-connection-configuration/-bluetooth-connection-configuration/index.html) - [UsbConnectionConfiguration (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-connection-configuration/-usb-connection-configuration/index.html) Legen Sie den Parameter `testReaderUpdate` für [BluetoothConnectionConfiguration](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-connection-configuration/-bluetooth-connection-configuration/index.html) oder [UsbConnectionConfiguration](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-connection-configuration/-usb-connection-configuration/index.html) fest, bevor Sie `connectReader` aufrufen, um während der Verbindung ein Lesegerät-Update auszulösen. Dies funktioniert mit simulierten Lesegeräten und physischen mobilen Lesegeräten in einer Sandbox. Erstellen Sie ein [TestReaderUpdate](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-test-reader-update/index.html) mit einer der Werksmethoden. Sie können optional [UpdateComponent](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-reader-software-update/-update-component/index.html)-Werte wie `FIRMWARE`, `CONFIG`, `KEYS` oder `INCREMENTAL` angeben. | TestReaderUpdate | Ergebnis | | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `.available(components)` | Ein optionales Update ist verfügbar. Teilen Sie dem Nutzer/der Nutzerin mit, dass ein Update verfügbar ist, und heben Sie das `requiredAt`-Datum hervor. | | `.required(components)` | Ein erforderliches Update wird während der Verbindung ausgeführt. Ihr `MobileReaderListener` empfängt den Rückruf `onStartInstallingUpdate`. | | `.requiredOffline(components)` | Es ist ein erforderliches Update vorhanden. Wenn Sie [offline](https://docs.stripe.com/terminal/features/operate-offline/collect-card-payments.md?terminal-card-present-integration=terminal&terminal-sdk-platform=android&reader-type=simulated#connect-while-offline) verbinden, schlägt die Verbindung fehl, da die Version des Lesegeräts nicht zulässig ist. Sobald Sie online sind, wird das Lesegerät aktualisiert und verbindet sich normal. | | `.lowBattery()` | Es ist ein erforderliches Update vorhanden, aber der Akku des Lesegeräts ist zu schwach, um das Update zu starten. Die Verbindung schlägt fehl. | | `.lowBatterySucceedConnect()` | Es ist ein erforderliches Update vorhanden, aber der Akku des Lesegeräts ist zu schwach, um das Update zu starten. Das Update schlägt fehl, aber die Verbindung ist erfolgreich, da das Lesegerät eine aktuelle Software-Version ausführt. | | `.random()` | Wählt zufällig eines der vorherigen Szenarien aus oder `null`, um zu simulieren, dass kein Update verfügbar ist. | #### Kotlin ```kotlin // Create a TestReaderUpdate to simulate a required update during connection val testReaderUpdate = TestReaderUpdate.required( setOf( ReaderSoftwareUpdate.UpdateComponent.FIRMWARE, ReaderSoftwareUpdate.UpdateComponent.CONFIG ) ) val connectionConfig = BluetoothConnectionConfiguration( ""{{LOCATION_ID}}"", autoReconnectOnUnexpectedDisconnect = true, bluetoothReaderListener = readerListener, testReaderUpdate = testReaderUpdate ) Terminal.getInstance().connectReader( selectedReader, connectionConfig, object : ReaderCallback { override fun onSuccess(reader: Reader) { println("Successfully connected to reader: $reader") } override fun onFailure(e: TerminalException) { println("connectReader failed: ${e.errorMessage}") } } ) ``` #### Den SimulatorConfiguration-Ansatz verwenden (Deprecated) > Der Ansatz `SimulatorConfiguration.update` ist ab SDK 5.5 veraltet. Verwenden Sie stattdessen den Verbindungskonfigurationsparameter `testReaderUpdate`. Legen Sie `Terminal.getInstance().simulatorConfiguration` auf eine neue `SimulatorConfiguration`-Instanz fest, bei der das Feld `update` auf eine der folgenden Konfigurationen gesetzt ist. Durch den Aufruf von `connectReader` wird ein simuliertes Lesegerät-Update ausgelöst. Dies funktioniert nur mit dem simulierten Bluetooth-Lesegerät. | Konfiguration aktualisieren | Ergebnis | | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `NONE` | Kein Update verfügbar. | | `REQUIRED` | Eine erforderliche Aktualisierung ist verfügbar, sie dauert 1 Minute. Ihr `MobileReaderListener` empfängt den Rückruf `onStartInstallingUpdate`. | | `REQUIRED_FOR_OFFLINE` | Ein erforderliches Update ist überfällig und dauert 1 Minute. Wenn Sie [offline](https://docs.stripe.com/terminal/features/operate-offline/collect-card-payments.md?terminal-card-present-integration=terminal&terminal-sdk-platform=android&reader-type=simulated#connect-while-offline) arbeiten, kann das Lesegerät keine Verbindung herstellen. Ihr `MobileReaderListener` empfängt den Rückruf `onStartInstallingUpdate`. | | `UPDATE_AVAILABLE` | Ein optionales Update ist verfügbar. Teilen Sie dem Nutzer/der Nutzerin mit, dass ein Update verfügbar ist, und heben Sie das `requiredAt`-Datum hervor. | | `LOW_BATTERY` | Ein erforderliches Update beginnt mit der Installation, schlägt jedoch fehl, weil der Akku des Lesegeräts schwach ist. Die Verbindung zum Lesegerät schlägt ebenfalls fehl. Dies simuliert, dass das Lesegerät eine ältere Software-Version ausführt. | | `LOW_BATTERY_SUCCEED_CONNECT` | Ein erforderliches Update beginnt mit der Installation, schlägt jedoch fehl, weil der Akku des Lesegeräts schwach ist. Das Lesegerät verbindet sich dennoch. Dies simuliert, dass das Lesegerät eine aktuelle Software-Version ausführt, die noch zulässig ist. Das Update wird beim nächsten Verbindungsaufbau mit dem Lesegerät erneut versucht. | | `RANDOM` | Wählt zufällig eines der vorherigen Szenarien aus. | #### React Native Um während der Verbindung ein Szenario zur Aktualisierung des Lesegeräts auszulösen, legen Sie den Parameter `testReaderUpdate` auf `ConnectBluetoothReaderParams`, `ConnectBluetoothProximityReaderParams` oder `ConnectUsbReaderParams` fest, bevor Sie `connectReader` aufrufen. Dies funktioniert mit simulierten und physischen mobilen Lesegeräten in einer Sandbox. Geben Sie ein `TestReaderUpdate`-Objekt mit einem der folgenden Typen an. Bei Aktualisierungstypen, die dies unterstützen, können Sie im Feld `Komponenten` ein Array mit `UpdateComponent`-Werten angeben, wie z. B. `FIRMWARE`, `CONFIG`, `KEYS` oder `INCREMENTAL`. | TestReaderUpdate | Ergebnis | | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{ type: 'available', components }` | Ein optionales Update ist verfügbar. Teilen Sie dem Nutzer/der Nutzerin mit, dass ein Update verfügbar ist, und heben Sie das `requiredAt`-Datum hervor. | | `{ type: 'required', components }` | Eine erforderliche Aktualisierung wird während der Verbindung ausgeführt. Ihre `useStripeTerminal`-Instanz empfängt den Rückruf `onDidStartInstallingUpdate`. | | `{ type: 'requiredOffline', components }` | Eine erforderliche Aktualisierung ist vorhanden. Wenn Sie offline eine Verbindung herstellen, schlägt die Verbindung fehl, da die Version des Lesegeräts nicht zulässig ist. Wenn Sie online eine Verbindung herstellen, wird das Lesegerät aktualisiert und die Verbindung wird normal hergestellt. | | `{ type: 'lowBattery' }` | Es ist ein erforderliches Update vorhanden, aber der Akku des Lesegeräts ist zu schwach, um das Update zu starten. Die Verbindung schlägt fehl. | | `{ type: 'lowBatterySucceedConnect' }` | Es ist ein erforderliches Update vorhanden, aber der Akku des Lesegeräts ist zu schwach, um das Update zu starten. Das Update schlägt fehl, aber die Verbindung ist erfolgreich, da das Lesegerät eine aktuelle Software-Version ausführt. | | `{ type: 'random' }` | Wählt zufällig eines der vorhergehenden Szenarien aus oder simuliert, dass keine Aktualisierung verfügbar ist. | ```typescript import { useStripeTerminal, UpdateComponent, } from '@stripe/stripe-terminal-react-native'; const { connectReader } = useStripeTerminal(); const { reader, error } = await connectReader({ discoveryMethod: 'bluetoothScan', reader: selectedReader, locationId: '', testReaderUpdate: { type: 'required', components: [UpdateComponent.FIRMWARE, UpdateComponent.CONFIG], }, }); if (error) { console.log(`connectReader failed: ${error.message}`); return; } console.log('Successfully connected to reader:', reader); ``` > `testReaderUpdate` in `ConnectTapToPayParams` ist nur für iOS verfügbar und unterstützt die Typen `required` und `random`, es kann weggelassen werden, wenn keine Aktualisierung vorliegt. Die Festlegung unter Android führt zu einem Fehler. ## Physische Testkarten Testen Sie Zahlungen mit Ihrem Stripe-Datenterminal- Lesegerät mit einer physischen Testkarte. Sie können Lesegeräte und physische Testkarten über die Registerkarte Datenterminal im [Stripe Dashboard](https://dashboard.stripe.com/terminal/shop) kaufen. Wir unterstützen auch physische Testkarten von Anbietern, wie z.B. [B2](https://b2ps.com/product-category/b2-payment-testing-products/). Diese physische Testkarte unterstützt sowohl Zahlungen per Karteneingabe als auch kontaktlose Zahlungen. Sie funktioniert nur mit vorzertifizierten Lesegeräten von Stripe und auch nur mit der Stripe API in einer [Sandbox](https://docs.stripe.com/sandboxes.md). Wenn Sie Ihre physische Testkarte im Live-Modus verwenden, gibt die Stripe API einen Fehler zurück. Sofern es nicht anders angegeben ist, verwenden Sie bei entsprechender Aufforderung die PIN `1234` . Beim Erstellen von Zahlungen mit einer physischen Testkarte sollten Sie Beträge verwenden, die auf die folgenden Dezimalwerte enden, um bestimmte Antworten zu erzeugen: | Dezimal | Ergebnis | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **00** | Die Zahlung wird genehmigt. | | **01** | Die Zahlung wird mit dem Code `call_issuer` abgelehnt. | | **02** | Wenn Sie Lesegeräte mit einem Bildschirm verwenden, den die Karteninhaber/innen sehen, legen Sie die Testkarte ein (oder tippen Sie darauf, falls dies unterstützt wird). Wenn für die Karte eine PIN erforderlich ist, wird die Zahlung mit `offline_pin_required` abgelehnt und es wird eine PIN-Eingabe angefordert, wenn das Lesegerät die Eingabe per Chip unterstützt. Geben Sie `1234` ein, um die Testzahlung abzuschließen. | | **03** | Wenn Sie Lesegeräte mit einem Bildschirm verwenden, den die Karteninhaber/innen sehen, legen Sie die Testkarte ein (oder tippen Sie darauf, falls dies unterstützt wird). Wenn für die Karte eine PIN erforderlich ist, wird die Zahlung mit `online_or_offline_pin_required` abgelehnt und es wird eine PIN-Eingabe angefordert. Geben Sie eine beliebige 4-stellige PIN ein, um die Testzahlung abzuschließen. | | **05** | Die Zahlung wird mit dem Code `generic_decline` abgelehnt. | | **55** | Die Zahlung wird mit dem Code `incorrect_pin` abgelehnt. | | **65** | Die Zahlung wird mit dem Code `withdrawal_count_limit_exceeded` abgelehnt. | | **75** | Die Zahlung wird mit dem Code `pin_try_exceeded` abgelehnt. | Zum Beispiel ist eine Zahlung mit einer physischen Testkarte über den Betrag *25,00 USD* erfolgreich; Eine Zahlung in Höhe von *10,05 USD* wird abgelehnt. > Einige Währungen haben [keine Dezimalstellen](https://docs.stripe.com/currencies.md#zero-decimal). Für diese Währungen verwenden Sie die zwei Dezimalstellen in der obigen Tabelle als die beiden rechts stehenden Ziffern. > > Um beispielsweise eine Zahlung mit dem Code `generic_decline` abzulehnen, müssen Sie einen Betrag von JPY_105 JPYJPY_ verwenden. ### Interac-Testkarten (Nur Kanada) Um Ihre Interac-Integration zu testen, können Sie die simulierte `interac`-Testkarte oder eine *physische Interac-Testkarte* verwenden. Diese kann im [Terminal-Hardware-Shop](https://dashboard.stripe.com/terminal/shop) im Dashboard bestellt werden. Die physische Testkarte mit Stripe-Marke kann nicht als Interac-Karte verwendet werden. Die Interac-Testkarte funktioniert bei Zahlungen mit `interac_present` wie auch bei Rückerstattungen mit `interac_present`. Sie können die gleichen [Testbeträge](https://docs.stripe.com/terminal/references/testing.md#physical-test-cards) verwenden, die Sie auch beim Testen von Zahlungen mit `card_present` verwenden. Sofern es nicht anders angegeben ist, verwenden Sie bei entsprechender Aufforderung die PIN `1234`. Um eine abgelehnte Rückerstattung zu testen, erstellen Sie eine anteilige Rückerstattung mit einem Betrag, der mit einem der folgenden Dezimalwerte endet: `01`, `05`, `55`, `65` oder `75`. > Die Interac-Testkarte unterstützt keine kontaktlosen Zahlungen. ### eftpos-Testkarten (Nur Australien) Um Ihre eftpos-Integration zu testen, können Sie die simulierte `eftpos`-Testkarte oder eine *physische eftpos-Testkarte* verwenden. Diese kann im [Terminal-Hardware-Shop](https://dashboard.stripe.com/terminal/shop) im Dashboard bestellt werden. Die physische Testkarte mit Stripe-Marke kann nicht als `eftpos`-Karte verwendet werden. Sie können die gleichen [Testbeträge](https://docs.stripe.com/terminal/references/testing.md#physical-test-cards) verwenden, die Sie auch beim Testen von Zahlungen mit `card_present` verwenden. Sofern es nicht anders angegeben ist, verwenden Sie bei entsprechender Aufforderung die PIN `1234`. ## See also - [Bestellungen aufgeben](https://docs.stripe.com/terminal/fleet/order-and-return-readers.md) - [Integrations-Checkliste](https://docs.stripe.com/terminal/references/checklist.md) - [Weitere Zahlungsmethoden testen](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#testing)