# Tester Stripe Terminal Apprenez comment bien tester votre intégration Terminal. > Le processus de test de Stripe Terminal est en grande partie similaire à celui du test des paiements Stripe en ligne. De plus, vous ne pouvez pas utiliser Stripe Terminal avec des portefeuilles mobiles (par exemple, Apple Pay ou Google Pay) en modetest. Pour en savoir plus, consultez le [guide de test général de Stripe](https://docs.stripe.com/testing.md). Le meilleur moyen de réussir votre déploiement de Terminal est de tester chaque composante de votre intégration. Nous fournissons des outils de test pour chaque étape : 1. Avant de commander un lecteur, testez votre intégration avec le simulateur de lecteur. 1. Testez l’intégralité de votre intégration matérielle à l’aide d’une carte bancaire de test physique. ## Lecteur de simulation - [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) - [Détection des lecteurs](https://docs.stripe.com/api/terminal/readers/list.md) Les SDK et l’intégration pilotée par serveur de Stripe Terminal sont livrés avec un lecteur de carte simulé intégré, ce qui vous permet de développer et de tester votre application sans avoir à vous connecter à du matériel physique. Que votre intégration soit terminée ou que vous soyez en train de la développer, utilisez le lecteur simulé pour émuler tous les flux Terminal dans votre application. Le lecteur virtuel ne fournit pas d’interface utilisateur. Après vous y être connecté(e) dans votre application, vous pouvez la voir fonctionner lorsque les appels au SDK ou à l’API Stripe aboutissent. Les lecteurs simulés pour SDK simulent automatiquement la présentation des cartes si nécessaire. Concernant l’intégration pilotée par serveur, mettez à jour votre intégration pour [simuler la présentation d’une carte](https://docs.stripe.com/terminal/references/testing.md#simulated-card-presentment). ## Cartes bancaires de test pour simulation - [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) Il est possible de configurer le lecteur de simulation afin d’utiliser une carte bancaire de test pour simulation, ce qui vous permet de tester différents flux dans votre application de point de vente. Avant de collecter un moyen de paiement, configurez le lecteur de simulation afin d’utiliser l’un des numéros de carte bancaire de test ou des moyens de paiement de test suivants afin d’obtenir des réponses précises. La configuration définie lors de l’étape de collecte (comme le numéro de carte bancaire test) est maintenue pendant 30 minutes. Cela signifie qu’une étape de confirmation ultérieure utilise la même configuration, même si vous ne la transmettez pas de nouveau explicitement. Toute configuration transmise lors de l’appel de confirmation est prioritaire sur les valeurs mises en cache de l’étape de collecte. ### Cartes bancaires de test standard | Numéro de carte bancaire de test | Moyen de paiement de test | Marque | | -------------------------------- | ----------------------------------- | -------------------------------------- | | 4242424242424242 | `visa` | Visa | | 4000056655665556 | `visa_debit` | Visa (débit) | | 5555555555554444 | `mastercard` | Mastercard | | 5200828282828210 | `mastercard_debit` | Mastercard (débit) | | 5105105105105100 | `mastercard_prepaid` | Mastercard (prépayée) | | 378282246310005 | `amex` | American Express | | 371449635398431 | `amex2` | American Express | | 6011111111111117 | `discover` | Discover | | 6011000990139424 | `discover2` | Discover | | 3056930009020004 | `diners` | Diners Club | | 36227206271667 | `diners_14digits` | Diners Club (carte à 14 chiffres) | | 3566002020360505 | `jcb` | JCB | | 6200000000000005 | `unionpay` | UnionPay | | 4506445006931933 | `interac` | Interac | | 6280000360000978 | `eftpos_au_debit` | eftpos Australie | | 4000050360000001 | `eftpos_au_visa_debit` | eftpos Australia/Visa | | 5555050360000080 | `eftpos_au_mastercard_debit` | eftpos Australia/Mastercard | | 4000002500001001 | `cartes_bancaires_visa_debit` | Cartes Bancaires (CB) / Visa | | 5555552500001001 | `cartes_bancaires_mastercard_debit` | Cartes Bancaires (CB) / Mastercard | | 4711009900000316877 | `girocard_debit` | Girocard | ### Cartes bancaires de test réservées à des cas de réussite particuliers | Numéro de carte bancaire de test | Moyen de paiement de test | Résultat | | -------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4001007020000002 | `offline_pin_cvm` | Simule la demande émise au titulaire de la carte et sa saisie d’un *code PIN hors ligne* (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). La [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) du paiement qui en résulte est définie sur `offline_pin`. | | 4000008260000075 | `offline_pin_sca_retry` | Simule un flux de relance déclenché par la [SCA](https://docs.stripe.com/strong-customer-authentication.md) dans lequel le paiement sans contact initial d’un titulaire de carte échoue : le lecteur invite alors l’utilisateur à insérer sa carte et à saisir son *code PIN hors ligne* (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). La [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) du paiement qui en résulte est défini sur `offline_pin`. | | 4001000360000005 | `online_pin_cvm` | Simule la demande et la saisie par un titulaire de carte d’un *code PIN en ligne* (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). La [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) du paiement qui en résulte est définie sur `online_pin`. | | 4000002760000008 | `online_pin_sca_retry` | Simule un flux de relance déclenché par la [SCA](https://docs.stripe.com/strong-customer-authentication.md) dans lequel le paiement sans contact initial d’un titulaire de carte échoue et le lecteur invite ensuite l’utilisateur à saisir son *code PIN en ligne* (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). La [cardholder_verification_method](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-receipt-cardholder_verification_method) du paiement final est définie sur `online_pin`. | ### Cartes bancaires de test réservées à des cas d’erreur particuliers > L’utilisation de ces cartes pour [enregistrer directement sans débiter](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md) et pour les [SetupIntents](https://docs.stripe.com/api/setup_intents.md) renvoie une réponse [setup_intent_authentication_failure](https://docs.stripe.com/error-codes.md#setup-intent-authentication-failure). | Numéro de carte bancaire de test | Moyen de paiement de test | Résultat | | -------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4000000000000002 | `charge_declined` | Le paiement est refusé avec le code `card_declined`. | | 4000000000009995 | `charge_declined_insufficient_funds` | Le paiement est refusé avec le code `card_declined`. L’attribut [decline_code](https://docs.stripe.com/declines/codes.md) est `insufficient_funds`. | | 4000000000009987 | `charge_declined_lost_card` | Le paiement est refusé avec le code `card_declined`. L’attribut [decline_code](https://docs.stripe.com/declines/codes.md) est `lost_card`. | | 4000000000009979 | `charge_declined_stolen_card` | Le paiement est refusé avec le code `card_declined`. L’attribut [decline_code](https://docs.stripe.com/declines/codes.md) est `stolen_card`. | | 4000000000000069 | `charge_declined_expired_card` | Le paiement est refusé avec le code `expired_card`. | | 4000000000000119 | `charge_declined_processing_error` | Le paiement est refusé avec le code `processing_error`. | | 4000000000005126 | `refund_fail` | Le paiement réussit, mais [le remboursement d’un paiement capturé échoue](https://docs.stripe.com/refunds.md#failed-refunds) de façon asynchrone, avec un `failure_reason` défini sur `expired_or_canceled_card`. Comme les remboursements échouent de manière asynchrone, le remboursement semble d’abord réussi et ne renvoie l’état `failed` que lors des récupérations suivantes. Nous vous informons également des échecs de remboursement via l’événement `refund.failed` du [webhook](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). | ## Simulation de présentation de carte Lorsque vous utilisez l’intégration pilotée par serveur, utilisez l’endpoint [present_payment_method](https://docs.stripe.com/api/terminal/readers/present_payment_method.md) pour simuler la présentation ou l’insertion d’une carte dans le lecteur. ```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" }, … } ``` Si vous ne spécifiez pas les paramètres, le paiement simulé sera par défaut considéré comme effectué par une [carte de test](https://docs.stripe.com/terminal/references/testing.md#standard-test-cards) valide, en fonction du type de moyen de paiement du PaymentIntent. Les cartes de test par défaut pour les types de moyens de paiement Terminal sont : | Type de moyen de paiement | Numéro de carte bancaire de test | Moyen de paiement de test | | ----------------------------------- | -------------------------------- | ------------------------- | | `card_present` | 4242424242424242 | `visa` | | `card_present` et `interac_present` | 4242424242424242 | `visa` | | `interac_present` | 4506445006931933 | `interac` | Avec les [cartes de test standard](https://docs.stripe.com/terminal/references/testing.md#standard-test-cards), vous pouvez également utiliser des [montants de test](https://docs.stripe.com/terminal/references/testing.md#physical-test-cards) pour simuler scénarios d’échec. ## Mise à jour du lecteur de simulation Pendant la connexion à un lecteur de simulation Bluetooth, vous pouvez configurer une mise à jour du lecteur. #### iOS Définissez `Terminal.shared.simulatorConfiguration.availableReaderUpdate` sur l’une des configurations suivantes. L’appel de `connectReader` déclenche une mise à jour du lecteur de simulation. | Modifier la configuration | Résultat | | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SimulateReaderUpdateNone` | Pas de mise à jour, pas besoin de communiquer quoi que ce soit à votre utilisateur. | | `SimulateReaderUpdateRequired` | Une mise à jour requise est disponible et prend 1 minute. Votre `BluetoothReaderDelegate` reçoit le rappel `didStartInstallingUpdate`. | | `SimulateReaderUpdateRequiredForOffline` | Une mise à jour requise est en retard et vous prendra 1 minute. Si vous fonctionnez [hors ligne](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), la connexion au lecteur n’est pas disponible. Votre `BluetoothReaderDelegate` recevra le rappel `didStartInstallingUpdate`. | | `SimulateReaderUpdateAvailable` | Une mise à jour facultative est disponible. Indiquez à l’utilisateur qu’une mise à jour est disponible et mettez en avant la date`requiredAt`. | | `SimulateReaderUpdateLowBattery` | L’installation d’une mise à jour requise démarre, puis échoue en raison du faible niveau de la batterie du lecteur. La connexion au lecteur échoue également. Cette situation simule le fait que le lecteur utilise une ancienne version du logiciel. | | `SimulateReaderUpdateLowBatterySucceedConnect` | L’installation d’une mise à jour requise démarre, puis échoue en raison du faible niveau de la batterie du lecteur. La connexion au lecteur réussit. Cette situation simule le fait que le lecteur utilise une version récente du logiciel qui est encore acceptable. L’installation de la mise à jour est relancée lors de la reconnexion au lecteur. | | `SimulateReaderUpdateRandom` | Une sélection aléatoire des scénarios ci-dessus. | #### Android Définissez `Terminal.getInstance().simulatorConfiguration` sur une nouvelle instance de `SimulatorConfiguration` avec le champ `update` défini sur l’une des configurations suivantes. L’appel de `connectReader` déclenche une mise à jour du lecteur de simulation. | Configuration de la mise à jour | Résultat | | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `NONE` | Pas de mise à jour, pas besoin de communiquer quoi que ce soit à votre utilisateur. | | `REQUIRED` | Une mise à jour requise est disponible et prendra 1 minute. Votre `MobileReaderListener` reçoit le rappel `onStartInstallingUpdate`. | | `REQUIRED_FOR_OFFLINE` | Une mise à jour requise est en retard et prend 1 minute. Si le lecteur fonctionne [hors ligne](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), la connexion est indisponible. Votre `MobileReaderListener` reçoit le rappel `onStartInstallingUpdate`. | | `UPDATE_AVAILABLE` | Une mise à jour facultative est disponible. Indiquez à l’utilisateur qu’une mise à jour est disponible et mettez en avant la date`requiredAt`. | | `LOW_BATTERY` | L’installation d’une mise à jour requise démarre, puis échoue en raison du faible niveau de la batterie du lecteur. La connexion au lecteur échoue également. Cette situation simule le fait que le lecteur utilise une ancienne version du logiciel. | | `LOW_BATTERY_SUCCEED_CONNECT` | L’installation d’une mise à jour requise démarre, puis échoue en raison du faible niveau de la batterie du lecteur. La connexion au lecteur réussit. Cette situation simule le fait que le lecteur utilise une version récente du logiciel qui est encore acceptable. L’installation de la mise à jour est relancée lors de la reconnexion au lecteur. | | `RANDOM` | Une sélection aléatoire des scénarios ci-dessus. | #### React Native Invoquez `simulateReaderUpdate()`, qui est renvoyé d’une instance initialisée de `useStripeTerminal` avec le champ `update` défini sur l’une des configurations suivantes. L’appel de `connectReader` déclenche une mise à jour du lecteur simulé. | Configuration de la mise à jour | Résultat | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `none` | Pas de mise à jour. Pas besoin de communiquer quoi que ce soit à votre utilisateur. | | `required` | Une mise à jour requise est disponible et prend 1 minute. Votre instance `useStripeTerminal` reçoit le rappel `onDidStartInstallingUpdate`. | | `requiredForOffline` | Une mise à jour requise est en retard et prend 1 minute. Si le lecteur fonctionne hors ligne, il n’est pas possible de s’y connecter. Votre instance `useStripeTerminal` reçoit le rappel `onDidStartInstallingUpdate`. | | `available` | Une mise à jour facultative est disponible. Indiquez à l’utilisateur qu’une mise à jour est disponible et mettez en avant la date`requiredAt`. | | `lowBattery` | Une mise à jour obligatoire commence à s’installer mais échoue car la batterie du lecteur est trop faible. La connexion au lecteur échoue également. Cela simule un lecteur exécutant une version plus ancienne du logiciel. | | `lowBatterySucceedConnect` | Une mise à jour obligatoire commence à s’installer mais échoue parce que le lecteur n’a plus assez de batterie. La connexion au lecteur réussit. Cela simule un lecteur exécutant une version récente du logiciel, toujours prise en charge. L’installation de la mise à jour est relancée lors de la prochaine connexion au lecteur. | | `random` | Une sélection aléatoire des scénarios ci-dessus. | ## Cartes bancaires de test physiques Testez les paiements avec votre lecteur Stripe Terminal à l’aide d’une carte de test physique. Vous pouvez acheter des lecteurs et des cartes de test physiques dans l’onglet Terminal du [Dashboard Stripe](https://dashboard.stripe.com/terminal/shop). Nous prenons également en charge les cartes de test physiques de fournisseurs tels que [B2](https://b2ps.com/product-category/b2-payment-testing-products/). Cette carte de test physique prend en charge à la fois la lecture par puce et le paiement sans contact. Elle fonctionne uniquement avec les lecteurs pré-certifiés de Stripe et uniquement avec l’API Stripe dans un [environnement de test](https://docs.stripe.com/sandboxes.md). Si vous essayez d’utiliser votre carte de test physique en mode actif, l’API Stripe renverra une erreur. Sauf indication contraire, utilisez le code PIN `1234` lorsqu’il est demandé. Lors de la création de paiements avec une carte de test physique, utilisez des montants se terminant par les valeurs décimales suivantes pour générer des réponses spécifiques : | Décimale | Résultat | | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **00** | Le paiement est approuvé. | | **01** | Le paiement est refusé avec le code `call_issuer`. | | **02** | Lorsque vous utilisez des lecteurs dotés d’un écran client, insérez (ou présentez, le cas échéant) la carte de test. Si la carte nécessite un code PIN, le paiement est refusé avec `offline_pin_required` et demande la saisie du code PIN si le lecteur prend en charge la saisie de la puce. Saisissez `1234` pour exécuter le paiement test. | | **03** | Lorsque vous utilisez des lecteurs dotés d’un écran client, insérez (ou présentez, le cas échéant) la carte de test. Si la carte nécessite la saisie du code PIN, le paiement est refusé avec `online_or_offline_pin_required` et demande la saisie du code PIN. Saisissez un code PIN à 4 chiffres afin d’effectuer le paiement. | | **05** | Le paiement est refusé avec le code `generic_decline`. | | **55** | Le paiement est refusé avec le code `incorrect_pin`. | | **65** | Le paiement est refusé avec le code `withdrawal_count_limit_exceeded`. | | **75** | Le paiement est refusé avec le code `pin_try_exceeded`. | Par exemple, un paiement d’un montant de *25,00 USD* traité à l’aide d’une carte bancaire de test physique aboutit ; un paiement d’un montant de *10,05 USD* est refusé. > Certaines devises ont [zéro décimale](https://docs.stripe.com/currencies.md#zero-decimal). Pour ces devises, utilisez les deux chiffres décimaux du tableau ci-dessus comme les deux chiffres les plus à droite. > > Par exemple, pour que votre paiement soit refusé avec le code `generic_decline`, vous avez besoin d’un montant de *105 JPY*. ### Cartes bancaires de test Interac (Canada uniquement) pour tester votre intégration Interac, vous pouvez utiliser la carte de test simulée `interac` ou une *carte de test physique interac*. Vous pouvez la commander depuis la [boutique de matériel terminal](https://dashboard.stripe.com/terminal/shop) dans le Dashboard. vous ne pouvez pas utiliser la carte de test physique marquée Stripe comme carte Interac. La carte bancaire de test Interac fonctionne avec les paiements `interac_present` et les remboursements `interac_present`. Vous pouvez utiliser les mêmes [montants test](https://docs.stripe.com/terminal/references/testing.md#physical-test-cards) que ceux que vous utilisez pour tester des paiements `card_present`. Sauf indication contraire, utilisez le code PIN `1234` au moment de l’invite. Afin de tester un remboursement refusé, créez un remboursement partiel avec un montant se terminant par l’un des nombres suivants : `01`, `05`, `55`, `65`, ou `75`. > La carte bancaire de test Interac ne prend pas en charge le paiement sans contact. ### Cartes bancaires de test eftpos (Australia only) pour tester votre intégration eftpos, vous pouvez utiliser la carte de test `eftpos` simulée ou une *carte physique eftpos*. Vous pouvez la commander depuis la [boutique de matériel Terminal](https://dashboard.stripe.com/terminal/shop) dans le Dashboard. Vous ne pouvez pas utiliser la carte de test physique de la marque Stripe comme carte `eftpos`. Vous pouvez utiliser les mêmes [montants de test](https://docs.stripe.com/terminal/references/testing.md#physical-test-cards) que ceux que vous utilisez pour tester les paiements `card_present`. Sauf indication contraire, utilisez le code `1234` au moment de saisir le code PIN. ## See also - [Passer des commandes](https://docs.stripe.com/terminal/fleet/order-and-return-readers.md) - [Liste de vérification de l’intégration](https://docs.stripe.com/terminal/references/checklist.md)