# Cas d’usage pour les tests Apprenez à tester votre intégration. *Les environnements de test* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) sont ceux de Stripe. Ils vous permettent de tester votre intégration sans effectuer de paiements ni de débits réels. Les environnements de test simulent la création d’objets réels sans impacter les transactions effectives ni déplacer de fonds réels. Vous pouvez accéder à vos environnements de test via le sélecteur de compte ou depuis la page [Environnements de test du Dashboard](https://dashboard.stripe.com/sandboxes). Nous vous recommandons d’utiliser nos [cas d’usage de test d’assurance qualité (QA)](https://docs.stripe.com/testing-use-cases.md#testing-use-cases) et d’importer notre [collection Postman](https://docs.stripe.com/testing-use-cases.md#postman-collection) pour vous accompagner dans le processus de test. ## Environnements de test Dans un environnement de test, vous pouvez débiter des cartes bancaires de test et créer des produits et des prix de test. Les environnements de test vous permettent de simuler des transactions afin de vérifier que votre intégration fonctionne correctement. Cela permet d’identifier les bugs ou erreurs dans votre implémentation Stripe avant de passer en production avec des paiements réels. Après avoir créé un compte Stripe, vous êtes placé dans un environnement de test. Vous pouvez trouver un ensemble de [clés API de test](https://docs.stripe.com/keys.md#obtain-api-keys) sur la page d’accueil du Dashboard Stripe ou sur la page des clés API. Vous pouvez utiliser ces clés API pour créer et récupérer des données simulées en effectuant des requêtes vers l’API Stripe. Pour commencer à accepter des paiements réels, vous devez [configurer votre compte Stripe](https://docs.stripe.com/get-started/account/set-up.md), quitter votre environnement de test via le sélecteur de compte et utiliser les clés API live dans votre intégration. Stockez les clés secrètes en mode production dans un coffre de secrets ou des variables d’environnement. Ne stockez pas les clés dans le code source ni dans des fichiers de configuration versionnés. Pour plus d’informations, consultez les [bonnes pratiques de gestion des clés API secrètes](https://docs.stripe.com/keys-best-practices.md). > #### Impact sur le mode production lors de l’utilisation de l’environnement de test en mode test > > Si vous modifiez des paramètres dans le Dashboard tout en étant dans les *environnements de test en mode test* (Every Stripe account includes the test mode sandbox. It shares some settings with live mode, has characteristics that differ from other sandboxes you create, but you can't delete it), ces modifications peuvent également s’appliquer au mode production. De nombreuses pages du Dashboard affichent une notification et désactivent les paramètres du mode production dans ces environnements. Dans ce cas, les paramètres encore activés peuvent être utilisés sans risque. Si aucune notification n’est affichée, considérez que toute modification effectuée dans l’environnement de test en mode test affecte les paramètres du mode production (sauf si une bannière de données de test est visible). ### Comparer les environnements de test Votre compte Stripe inclut un environnement de test en mode test ainsi que la possibilité de créer des environnements de test supplémentaires. Bien que le mode test soit un environnement de test, il diffère des environnements de test classiques que vous pouvez créer. Comprendre ces différences peut vous aider à élaborer votre stratégie de test. | | Environnement de test en mode test | Environnements de test classiques | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Nombre d’environnements de test | Utilisez un seul environnement de test. | Utilisez jusqu’à cinq environnements de test. L’environnement de test en mode test n’est pas pris en compte dans cette limite de cinq. | | Contrôle d’accès | Accordez à tous les utilisateurs les mêmes rôles et accès qu’en mode production. | Contrôlez l’accès de manière plus stricte. Lorsque le niveau d’accès à l’environnement de test est défini sur privé, seuls les administrateurs y ont automatiquement accès. Vous pouvez inviter des utilisateurs uniquement dans les environnements de test, sans leur accorder d’accès au mode production. Lorsque le niveau d’accès est défini pour tous les membres de l’équipe, tous les utilisateurs disposant de rôles bénéficient des mêmes rôles et des mêmes accès. | | Paramètres | Paramètres partagés entre le mode production et l’environnement de test en mode test. Vous ne pouvez pas tester de nombreux paramètres de manière indépendante. | Isolez complètement les paramètres pour chaque sandbox. Copiez les paramètres du mode production au moment de la création et effectuez des tests indépendamment de votre intégration en production. | | Prise en charge des API | Compatible avec V1 et [partiellement avec V2](https://docs.stripe.com/api-v2-overview.md#limitations). | Compatible avec V1 et V2. | | Suppression | Impossible à supprimer. | Peut être supprimé. | | Applications | Les installations nécessitent que l’application prenne en charge un environnement de test en mode test. | Les installations nécessitent que l’application prenne en charge des environnements de test. | | Limites des produits | Vous ne pouvez pas tester la tarification *IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) en environnement de test en mode test. | Vous ne pouvez pas tester la tarification *IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) dans un sandbox. | | Limites d’appels | Maintenez des [limites d’appels](https://docs.stripe.com/rate-limits.md) cohérentes. | Maintenez des [limites d’appels](https://docs.stripe.com/rate-limits.md) cohérentes. | | Numéros de carte de test | Utilisez les mêmes [numéros de carte de test](https://docs.stripe.com/testing-use-cases.md#test-card-numbers). | Utilisez les mêmes [numéros de carte de test](https://docs.stripe.com/testing-use-cases.md#test-card-numbers). | ## Environnements de test et mode production Toutes les requêtes API Stripe sont effectuées soit dans un environnement de test, soit en *mode production* (Use this mode when you’re ready to launch your app. Card networks or payment providers process payments). Les objets API d’un mode ne sont pas accessibles dans l’autre. Par exemple, un [objet produit](https://docs.stripe.com/api/products/object.md) de test ne peut pas être utilisé pour un paiement en mode production. | Type | Quand l’utiliser | Objets | Comment l’utiliser | Considérations | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Environnements de test | Utilisez un environnement de test et les clés API test associées au fur et à mesure que vous développez votre intégration. Dans un bac à sable, les réseaux de cartes et les prestataires de services de paiement ne traitent pas les paiements. | Les appels à l’API renvoient des objets fictifs. Vous pouvez par exemple récupérer et utiliser des objets `account`, `payment`, `customer`, `charge`, `refund`, `transfer`, `balance` et `subscription` de test. | Utilisez des [cartes et des comptes de test](https://docs.stripe.com/testing.md#cards). Vous ne pouvez pas accepter de moyens de paiement réels ni utiliser de vrais comptes. | [Identity](https://docs.stripe.com/identity.md) n’effectue aucun contrôle de vérification. Les objets [Account](https://docs.stripe.com/api/accounts/object.md) de Connect ne renvoient pas de champs sensibles. | | Mode production | Utilisez le mode production et les clés API de production correspondantes au moment de lancer votre intégration et de commencer à accepter des fonds. En mode production, les paiements sont réellement traités par les réseaux de cartes et fournisseurs de services de paiement. | Les appels à l’API renvoient des objets réels. Vous pouvez par exemple récupérer et utiliser des objets `account`, `payment`, `customer`, `charge`, `refund`, `transfer`, `balance` et `subscription` réels. | Acceptez des cartes bancaires réelles et utilisez de vrais comptes client. Vous pouvez accepter des paiements, autorisations de paiement et captures réels à partir de cartes bancaires et de comptes. | Les litiges ont un flux plus nuancé et un [processus de test](https://docs.stripe.com/testing.md#disputes) plus simple. En outre, certains [moyens de paiement](https://docs.stripe.com/payments/payment-methods.md) ont un flux plus nuancé et nécessitent plus d’étapes. | Le fait d’être dans un environnement de test dans le Dashboard n’affecte pas le code de votre intégration. Le comportement de votre code dépend des clés API de test et de production. ## Créer un environnement de test supplémentaire Pour créer et configurer un environnement de test supplémentaire dans le Dashboard : #### Créer l’environnement de test 1. Accédez à la page [Environnements de test du Dashboard](https://dashboard.stripe.com/sandboxes). 1. Cliquez sur **Créer** en haut à droite. #### Gérer l’accès Les nouveaux environnements de test sont privés par défaut et ne donnent pas automatiquement accès aux autres membres de l’équipe. Vous pouvez accorder l’accès à tous les membres de l’équipe : 1. Accédez à la page [Environnements de test du Dashboard](https://dashboard.stripe.com/sandboxes). 1. Cliquez sur le menu déroulant (⋯) de l’environnement de test. 1. Sélectionnez **Modifier l’accès**. Vous pouvez gérer l’accès au niveau des entrepreneurs individuels de l’une des manières suivantes : - Accorder l’accès à un [environnement de test spécifique](https://docs.stripe.com/sandboxes/dashboard/manage-access.md#grant-users-access-to-a-specific-sandbox). - Accorder un [accès réservé aux tests](https://docs.stripe.com/sandboxes/dashboard/manage-access.md#grant-users-access-for-testing-only). - Accorder l’accès à [tous les environnements de test](https://docs.stripe.com/sandboxes/dashboard/manage-access.md#grant-users-access-to-all-sandboxes-in-an-account). #### Obtenir les identifiants de votre environnement de test Utilisez ces identifiants pour connecter votre intégration à l’environnement de test. Enregistrez-les dans un emplacement accessible à votre équipe pour les tests. 1. Copiez les clés API de test de l’environnement de test. 1. Copiez l’ID du compte de l’environnement de test. #### Mettre à jour l’environnement de test Vous pouvez mettre à jour toutes les références qui dépendent des données de test que vous avez créées précédemment. 1. Configurez toutes les ressources dont vous avez besoin pour les tests, comme les produits, les clients, les abonnements et les moyens de paiement. 1. Mettez à jour toute partie de vos processus de test qui dépend d’ID d’objets de test spécifiques. Cela change lorsque vous créez de nouveaux objets dans un environnement de test. #### (Facultatif) Configurer des simulations Configurez des simulations pour tester votre intégration Billing. Les simulations vous permettent d’avancer le temps dans l’environnement de test afin que des ressources comme les abonnements changent d’état et déclenchent des événements webhook. ## Numéros de carte de test Stripe fournit plusieurs [numéros de cartes bancaires de test](https://docs.stripe.com/testing.md#cards) qui vous permettent de simuler différents scénarios de paiement. Vous pouvez les utiliser pour créer des paiements fictifs en environnement de test, sans traiter de paiements réels ni de débits. Lorsque vous utilisez des numéros de carte de test, vous pouvez saisir n’importe quelle date d’expiration future et n’importe quel code CVC à trois chiffres pour simuler un paiement réussi. Si vous souhaitez simuler un paiement qui a échoué, vous pouvez utiliser les numéros de carte de test et les codes CVC spécifiques fournis par Stripe. Les numéros de cartes bancaires de test sont uniquement valides en environnement de test. Ne les utilisez pas pour des paiements réels. ## Supprimer les données de test Pour supprimer toutes vos données de test de votre compte Stripe, procédez comme suit : 1. [Connectez-vous au Dashboard](https://dashboard.stripe.com) en utilisant votre compte Stripe existant. 1. Dans votre environnement de test, cliquez sur **Développeurs** > **Aperçu**. 1. Sous **Données de test**, cliquez sur **Examiner les données de test**. La boîte de dialogue vous présente une liste de tous vos objets de données de test existants. 1. Cliquez sur **Supprimer les données de test** pour lancer le processus de suppression. La suppression de vos données de test est irréversible. Les environnements de test sont temporairement indisponibles pendant le processus de suppression. > Vous devez supprimer manuellement les [Meters](https://docs.stripe.com/api/billing/meter.md), car l’objet n’est pas pris en charge par le processus automatisé de suppression des données de test. ## E-mail de test Par défaut, Stripe n’envoie pas d’e-mails aux clients en environnement de test. Par exemple, un paiement ou une facture en environnement de test n’envoie pas d’e-mail de reçu au client. Les factures finalisées via l’API en environnement de test n’envoient pas non plus d’e-mail de reçu au client. Si vous souhaitez que Stripe envoie des e-mails aux clients dans un environnement de test, vous pouvez procéder comme suit dans le Dashboard : 1. Créer et envoyer manuellement une facture à un client spécifique. 1. Envoyer manuellement un reçu pour une facture payée. Pour vérifier les e-mails pour les factures et les reçus, définissez l’adresse e-mail de votre [équipe](https://dashboard.stripe.com/settings/team) sur l’objet `Customer` ou l’attribut `receipt_email` sur le PaymentIntent. ## Cas d’usage pour les tests Le tableau suivant contient des cas d’usage de test d’assurance qualité (AQ) : | **Cas d’usage** | **Action** | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Réussite du paiement (capture immédiate) | - Aucune erreur. - Le paiement apparaît avec l’état **Réussi** dans le Dashboard, sous [Payments](https://dashboard.stripe.com/payments). - Stripe capture le paiement. | | Réussite de l’autorisation d’un PaymentIntent ([capture de fonds pour plus tard](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)) | ```json { ... "capture_method": "manual", ... "status": "requires_capture", ... } ``` | | Réussite de la capture d’un PaymentIntent (capture immédiate ou [capture de fonds pour plus tard](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)) | ```json { ... "status": "succeeded", ... } ``` | | Échec du paiement | Le paiement apparaît avec l’état **Échec** dans le Dashboard, sous [Payments](https://dashboard.stripe.com/payments). ```json { "error": { "charge": "ch_orWziM4j7CiRL8J4", "code": "card_declined", "decline_code": "<>", "doc_url": "https://docs.stripe.com/error-codes#card-declined", "message": "Your card was declined.", "type": "card_error" } } ``` | | Blocage par Radar | Quelle que soit la version de Radar que vous utilisez, il peut bloquer un paiement en raison d’un [risque élevé](https://docs.stripe.com/radar/risk-evaluation.md#high-risk) ou d’une [règle](https://docs.stripe.com/radar/rules.md). La réponse est la même que celle renvoyée lorsqu’un paiement échoue. | | Paiement contesté | - Le paiement apparaît avec l’état **Contesté** dans le Dashboard, sous [Payments](https://dashboard.stripe.com/payments). - Stripe débite le montant du paiement majoré des frais de litige du solde, crée un objet `Dispute` ainsi que son événement `charge.dispute.created` associé. ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "needs_response" } } ``` | | Demande d’information sur un paiement ouverte | Les demandes d’information sont similaires aux litiges, mais présentent trois différences majeures : aucun fonds n’est retiré, à moins que nous ne transformions une demande d’information en litige ; elles restent remboursables jusqu’à ce qu’elles fassent l’objet d’un litige ; et elles possèdent un ensemble d’états différent. Dans ce cas, Stripe déclenche un événement `charge.dispute.created`. ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "is_charge_refundable": true, ... "status": "warning_needs_response" } } ``` | | Litige gagné | - Lorsqu’un client remporte un litige, les fonds du paiement initial sont restitués sur le compte, moins les frais de litige. - Stripe met à jour l’objet `Dispute` existant et déclenche un événement `charge.dispute.closed`. ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "won" } } ``` | | Litige perdu | Lorsqu’un client perd un litige, Stripe met à jour l’objet `Dispute` existant et déclenche un événement `charge.dispute.closed`. ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "lost" } } ``` | | Demande d’information gagnée | Lorsque vous remportez une demande d’information, votre solde reste le même, car aucun fonds n’a été retiré lors de l’ouverture initiale de la demande d’information. Stripe met à jour l’objet `Dispute` existant et déclenche un événement `charge.dispute.closed`. ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "warning_closed" } } ``` | | Demande d’information perdue | - Lorsque vous perdez une demande d’information, elle se transforme en litige. - Lorsqu’elle se transforme en litige, son état change avec un événement `charge.dispute.updated`, et les fonds sont retirés lors d’un événement `charge.dispute.funds_withdrawn` : ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "needs_response" } } ``` | | Paiement remboursé | Le paiement apparaît avec l’état **Remboursé** dans le Dashboard, sous [Payments](https://dashboard.stripe.com/payments). ```json { "id": "re_orWziM4j7CiRL8J4", "object": "refund", "amount": "<>", "charge": "ch_orWziM4j7CiRL8J4", ... "payment_intent": "pi_orWziM4j7CiRL8J4", // if you're using PaymentIntents ... "status": "succeeded" } ``` | | Paiement partiellement remboursé | - Le paiement apparaît avec l’état **Remboursé** dans le Dashboard, sous [Payments](https://dashboard.stripe.com/payments). - Le montant du remboursement est différent du montant du paiement, et vous pouvez toujours contester les paiements partiellement remboursés. ```json { "id": "re_orWziM4j7CiRL8J4", "object": "refund", "amount": "<>", "charge": "ch_orWziM4j7CiRL8J4", ... "payment_intent": "pi_orWziM4j7CiRL8J4", // if you're using PaymentIntents ... "status": "succeeded" } ``` | | Le solde du compte devient négatif | Assurez-vous de tester un solde négatif sur Stripe et de vérifier que vos comptes bancaires peuvent accepter nos débits. | | Virement réussi | Si vous activez les webhooks pour un [virement réussi](https://docs.stripe.com/api/events/types.md#event_types-payout.paid) (recommandé), testez votre gestion de l’événement. | | Échec de virement | Si vous activez les webhooks pour un [virement qui a échoué](https://docs.stripe.com/api/events/types.md#event_types-payout.failed) (recommandé), testez votre gestion de l’événement. | ## La collection Postman de Stripe Postman est un outil de développement d’API largement utilisé. Pour vous aider à intégrer Stripe, nous mettons à disposition une [collection Postman dédiée aux paiements](https://www.getpostman.com/collections/080102f58f29afa081d7), contenant les outils nécessaires pour tester la partie serveur de votre intégration. ### Importer la collection Pour commencer, vous devez accéder à l’application Postman. Vous pouvez utiliser la version pour navigateur ou pour ordinateur de bureau. Après avoir lancé l’application, importez la collection. Pour lancer ce processus sur le Web, appuyez sur le bouton **Importer** dans le coin supérieur gauche, puis sélectionnez l’option **Link**. Insérez le lien [Recouvrement des paiements](https://www.getpostman.com/collections/080102f58f29afa081d7) . Si vous utilisez l’application de bureau Postman, cliquez sur **Fichier** > **Importer**. Une fois l’importation terminée, le recouvrement apparaît sous **Recouvrements**. ### Utiliser la collection Pour utiliser la collection, accédez à la collection que vous venez d’importer, puis cliquez sur **Variables**. Copiez votre clé secrète d’environnement de test Stripe depuis le Dashboard Stripe, puis collez-la dans le champ **Valeur initiale** de la ligne **secret\_key**. Une fois cette étape terminée, vous pouvez commencer à effectuer des requêtes. Des scripts remplissent d’autres variables pendant l’exécution de la collection. Par exemple, lors de la création d’un [Customer](https://docs.stripe.com/api/customers/create.md), d’un [Price](https://docs.stripe.com/api/prices/create.md), d’un [Charge](https://docs.stripe.com/api/charges/object.md) ou d’un [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md), le système enregistre cet ID par le biais d’un script dans la collection, le rendant accessible pour les requêtes ultérieures, comme l’émission d’un remboursement. ## See also - [Tester votre intégration](https://docs.stripe.com/testing.md) - [Sandboxes](https://docs.stripe.com/sandboxes.md)