# Enregistrer les informations de paiement après le paiement Acceptez un paiement en personne et enregistrez les informations de paiement pour les utiliser plus tard, en l'absence du client. Vous pouvez utiliser Stripe Terminal pour enregistrer les informations de paiement d’un achat en magasin. Un paiement `card_present` réussi renvoie un PaymentMethod `card` réutilisable dans l’attribut `generated_card`. Il existe plusieurs cas d’usage : - Un client d’une salle de sport paie par TPE une première séance et un abonnement. La transaction crée une `generated_card` qui sera utilisée pour les futurs renouvellements automatiques de l’abonnement. - Un client d’une boutique de vêtements fournit son adresse e-mail au moment d’effectuer un achat à la caisse. La transaction crée un dossier client et enregistre la `generated_card` associée. Cela permet au client de se connecter ultérieurement au site Web de la boutique et de passer une commande en utilisant la même carte. > Le paiement initial en personne est une transaction avec présentation de la carte. Tous les frais ultérieurs facturés à l’aide de la `generated_card` sont des transactions sans présentation de la carte (CNP), et les fonctionnalités disponibles pour les transactions avec présentation de la carte (telles que *le transfert de responsabilité* (With some 3D Secure transactions, the liability for fraudulent chargebacks (stolen or counterfeit cards) shifts from you to the card issuer) et les [tarifs](https://stripe.com/terminal#pricing)) ne s’appliquent pas à ces frais ultérieurs. > Nous avons modifié le modèle de consentement du client pour cette fonctionnalité afin d’exiger le paramètre `allow_redisplay`. Vous devez mettre à jour votre intégration pour utiliser `allow_redisplay`. Cette mise à jour est devenue obligatoire le 31 mars 2025 pour les utilisateurs non-React Native, et le sera pour les utilisateurs React Native le 30 septembre 2025. Pour plus d’informations, consultez l’[entrée du journal des modifications](https://docs.stripe.com/changelog/acacia/2024-09-30/terminal-remove-customer-consent-require-allow-redisplay.md). # Piloté par le serveur > This is a Piloté par le serveur for when terminal-sdk-platform is server-driven. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=server-driven. ## Créer un objet Customer Pour configurer une carte bancaire en vue de paiements futurs, vous devez l’associer à un *client* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Lorsque votre client ouvre un compte chez vous, créez un objet Customer, qui permet de réutiliser des moyens de paiement et d’assurer le suivi de plusieurs paiements. > #### Utiliser l’API Accounts v2 pour représenter des clients > > Si votre intégration utilise des [Accounts configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les références `Customer` et événement dans les exemples de code par les références équivalentes de l’API Accounts v2. Pour plus d’informations, consultez la page [Représenter des clients avec des objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Lorsque la création aboutit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez l’examiner pour identifier l’`id` du client et stocker cette valeur dans votre base de données pour la récupérer ultérieurement. Vous pouvez trouver ces clients sur la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer un PaymentIntent - [Créer un PaymentIntent](https://docs.stripe.com/api/payment_intents/create.md) Lors de la création d’un PaymentIntent, demandez une `generated_card` en spécifiant une valeur pour [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Si vous comptez uniquement réutiliser le moyen de paiement lorsque le client est dans votre tunnel de paiement, utilisez `on_session`. Sinon, utilisez `off_session`. #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Les cartes Visa, Mastercard, American Express, Discover, comarquées eftpos, Interac et girocard sont prises en charge en tant que moyens de paiement `card_present` qui peuvent être enregistrés en tant que type `card`. ## Collecter et traiter un moyen de paiement > Cette fonctionnalité nécessite que vos requêtes API incluent `Stripe-Version: 2024-09-30.acacia`. Pour plus d’informations, consultez l’[entrée du journal des modifications](https://docs.stripe.com/changelog/acacia/2024-09-30/terminal-remove-customer-consent-require-allow-redisplay.md). - [process_payment_intent](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md) - [collect_payment_method](https://docs.stripe.com/api/terminal/readers/collect_payment_method.md) Lorsque le client est prêt à payer et a [consenti à ce que les informations de son moyen de paiement soient enregistrées](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance), transmettez [allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) défini sur `always` ou `limited` dans l’appel `process_payment_intent` ou `collect_payment_method`(Preview). La valeur indique le degré d’affichage d’un moyen de paiement dans le tunnel de paiement d’un client. ```curl curl https://api.stripe.com/v1/terminal/readers/{{READER_ID}}/process_payment_intent \ -u "<>:" \ -d payment_intent={{PAYMENT_INTENT_ID}} \ -d "process_config[allow_redisplay]=always" ``` ```curl curl https://api.stripe.com/v1/terminal/readers/{{READER_ID}}/collect_payment_method \ -u "<>:" \ -d payment_intent={{PAYMENT_INTENT_ID}} \ -d "collect_config[allow_redisplay]=always" ``` - [confirm_payment_intent](https://docs.stripe.com/api/terminal/readers/confirm_payment_intent.md) Si vous utilisez le flux `collect_payment_method`, qui permet d’accéder à des données utiles telles que la marque de la carte et le financement du PaymentMethod avant de le confirmer, vous devez également confirmer séparément le PaymentIntent. ```curl curl https://api.stripe.com/v1/terminal/readers/{{READER_ID}}/confirm_payment_intent \ -u "<>:" \ -d payment_intent={{PAYMENT_INTENT_ID}} ``` ## Accéder à la generated_card Un paiement réussi avec un moyen de paiement qui prend en charge une utilisation ultérieure renvoie un PaymentIntent à l’état `requires_capture` ou `succeeded`. Vous pouvez récupérer le moyen de paiement [generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) en développant la propriété [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) du PaymentIntent et en affichant [payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present). Si vous avez transmis l’ID du client dans l’appel de création du PaymentIntent, le PaymentMethod réutilisable est automatiquement associé à l’objet [Customer](https://docs.stripe.com/api/customers.md). Sinon, vous pouvez [l’associer manuellement](https://docs.stripe.com/api/payment_methods/attach.md) dans un appel distinct. Vérifiez toujours que le fichier [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) contient une valeur `generated_card`. Certains paiements, tels que les paiements par portefeuille électronique et les paiements par carte Interac, eftpos ou girocard d’une seule marque, peuvent ne pas créer de carte générée. Si c’est le cas, et que vous avez besoin d’un moyen de paiement réutilisable, deux options s’offrent à vous : - Invitez le client à enregistrer un autre moyen de paiement à l’aide du tunnel pour [enregistrer un moyen de paiement sans effectuer de paiement](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md). - Remboursez le paiement par TPE, indiquez que la transaction a échoué et demandez au client d’utiliser un autre moyen de paiement. ## Considérations relatives aux wallets mobiles Les portefeuilles mobiles enregistrés sont réservés aux paiements [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) tels que les abonnements futurs ou les autres paiements que vous initiez au nom de votre client. Lorsque vous enregistrez un moyen de paiement par portefeuille électronique, la `generated_card` présente `allow_redisplay=limited`, pour indiquer ses considérations d’utilisation spécifiques. Lorsque vous tentez de débiter un wallet mobile, veillez à transmettre `off_session=true` lors de la confirmation du PaymentIntent. Si le client est présent dans votre tunnel de paiement, vous devrez plutôt utiliser les intégrations [Apple Pay](https://docs.stripe.com/apple-pay.md) et [Google Pay](https://docs.stripe.com/google-pay.md) pour redemander la présentation du moyen de paiement. ## Conformité Vous êtes responsable du respect de toutes les lois, réglementations et règles des réseaux applicables lorsque vous enregistrez les informations de paiement d’un client. Par exemple, le Comité européen de la protection des données a publié des recommandations sur l’enregistrement des informations de paiement. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le moyen de paiement d’un client pour une utilisation ultérieure, par exemple en lui présentant le moyen de paiement dans le tunnel de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application, ou encore en passant une commande MOTO ou en magasin. Intégrez à votre tunnel de paiement des conditions précisant la manière dont vous allez enregistrer les informations de moyen de paiement et offrant aux clients la possibilité de donner leur accord. Si vous envisagez de prélever le client alors qu’il ne paie pas activement, veillez à ce que vos conditions incluent au minimum les éléments suivants : - Le consentement du client vous autorisant à déclencher un paiement ou une série de paiements en son nom pour les transactions spécifiées - Le calendrier et la fréquence prévus des paiements (par exemple, si les paiements concernent des versements échelonnés ou d’abonnement planifiés, ou des recharges non planifiées). - La façon dont vous déterminez le montant du paiement. - Votre politique d’annulation, si vous configurez le moyen de paiement dans le cadre d’un abonnement Veillez à conserver une trace écrite de l’acceptation de ces conditions par votre client. Lors de l’enregistrement d’un moyen de paiement, celui-ci ne peut être utilisé que pour l’usage spécifié dans vos conditions. Pour prélever un client lorsqu’il n’est pas activement en train de payer et enregistrer son moyen de paiement pour un usage futur, vous devez recueillir son consentement explicite. Une option consiste à proposer une case à cocher « Enregistrer mon moyen de paiement pour une utilisation ultérieure ». # JavaScript > This is a JavaScript for when terminal-sdk-platform is js. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=js. ## Créer un objet Customer Pour configurer une carte bancaire en vue de paiements futurs, vous devez l’associer à un *client* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Lorsque votre client ouvre un compte chez vous, créez un objet Customer, qui permet de réutiliser des moyens de paiement et d’assurer le suivi de plusieurs paiements. > #### Utiliser l’API Accounts v2 pour représenter des clients > > Si votre intégration utilise des [Accounts configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les références `Customer` et événement dans les exemples de code par les références équivalentes de l’API Accounts v2. Pour plus d’informations, consultez la page [Représenter des clients avec des objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Lorsque la création aboutit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez l’examiner pour identifier l’`id` du client et stocker cette valeur dans votre base de données pour la récupérer ultérieurement. Vous pouvez trouver ces clients sur la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer un PaymentIntent - [Créer un PaymentIntent](https://docs.stripe.com/api/payment_intents/create.md) Lors de la création d’un PaymentIntent, demandez une `generated_card` en spécifiant une valeur pour [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Si vous comptez uniquement réutiliser le moyen de paiement lorsque le client est dans votre tunnel de paiement, utilisez `on_session`. Sinon, utilisez `off_session`. #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Les cartes Visa, Mastercard, American Express, Discover, comarquées eftpos, Interac et girocard sont prises en charge en tant que moyens de paiement `card_present` qui peuvent être enregistrés en tant que type `card`. ## Collecter et traiter un moyen de paiement - [collectPaymentMethod (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#collect-payment-method) Lorsque le client est prêt à payer et a [consenti à ce que les informations de son moyen de paiement soient enregistrées](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance), transmettez [allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) défini sur `always` ou `limited` dans l’appel `collectPaymentMethod`. La valeur indique le degré d’affichage d’un moyen de paiement dans le tunnel de paiement d’un client. ```javascript async () => { // clientSecret is the client_secret from the PaymentIntent you created in Step 2. const result = await terminal.collectPaymentMethod(clientSecret, { config_override: { allow_redisplay: "always" } }); if (result.error) { // Placeholder for handling result.error } else { // Placeholder for confirming result.paymentIntent } } ``` ## Accéder à la generated_card Un paiement réussi avec un moyen de paiement qui prend en charge une utilisation ultérieure renvoie un PaymentIntent à l’état `requires_capture` ou `succeeded`. Vous pouvez récupérer le moyen de paiement [generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) en développant la propriété [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) du PaymentIntent et en affichant [payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present). Si vous avez transmis l’ID du client dans l’appel de création du PaymentIntent, le PaymentMethod réutilisable est automatiquement associé à l’objet [Customer](https://docs.stripe.com/api/customers.md). Sinon, vous pouvez [l’associer manuellement](https://docs.stripe.com/api/payment_methods/attach.md) dans un appel distinct. Vérifiez toujours que le fichier [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) contient une valeur `generated_card`. Certains paiements, tels que les paiements par portefeuille électronique et les paiements par carte Interac, eftpos ou girocard d’une seule marque, peuvent ne pas créer de carte générée. Si c’est le cas, et que vous avez besoin d’un moyen de paiement réutilisable, deux options s’offrent à vous : - Invitez le client à enregistrer un autre moyen de paiement à l’aide du tunnel pour [enregistrer un moyen de paiement sans effectuer de paiement](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md). - Remboursez le paiement par TPE, indiquez que la transaction a échoué et demandez au client d’utiliser un autre moyen de paiement. ## Considérations relatives aux wallets mobiles Les portefeuilles mobiles enregistrés sont réservés aux paiements [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) tels que les abonnements futurs ou les autres paiements que vous initiez au nom de votre client. Lorsque vous enregistrez un moyen de paiement par portefeuille électronique, la `generated_card` présente `allow_redisplay=limited`, pour indiquer ses considérations d’utilisation spécifiques. Lorsque vous tentez de débiter un wallet mobile, veillez à transmettre `off_session=true` lors de la confirmation du PaymentIntent. Si le client est présent dans votre tunnel de paiement, vous devrez plutôt utiliser les intégrations [Apple Pay](https://docs.stripe.com/apple-pay.md) et [Google Pay](https://docs.stripe.com/google-pay.md) pour redemander la présentation du moyen de paiement. ## Conformité Vous êtes responsable du respect de toutes les lois, réglementations et règles des réseaux applicables lorsque vous enregistrez les informations de paiement d’un client. Par exemple, le Comité européen de la protection des données a publié des recommandations sur l’enregistrement des informations de paiement. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le moyen de paiement d’un client pour une utilisation ultérieure, par exemple en lui présentant le moyen de paiement dans le tunnel de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application, ou encore en passant une commande MOTO ou en magasin. Intégrez à votre tunnel de paiement des conditions précisant la manière dont vous allez enregistrer les informations de moyen de paiement et offrant aux clients la possibilité de donner leur accord. Si vous envisagez de prélever le client alors qu’il ne paie pas activement, veillez à ce que vos conditions incluent au minimum les éléments suivants : - Le consentement du client vous autorisant à déclencher un paiement ou une série de paiements en son nom pour les transactions spécifiées - Le calendrier et la fréquence prévus des paiements (par exemple, si les paiements concernent des versements échelonnés ou d’abonnement planifiés, ou des recharges non planifiées). - La façon dont vous déterminez le montant du paiement. - Votre politique d’annulation, si vous configurez le moyen de paiement dans le cadre d’un abonnement Veillez à conserver une trace écrite de l’acceptation de ces conditions par votre client. Lors de l’enregistrement d’un moyen de paiement, celui-ci ne peut être utilisé que pour l’usage spécifié dans vos conditions. Pour prélever un client lorsqu’il n’est pas activement en train de payer et enregistrer son moyen de paiement pour un usage futur, vous devez recueillir son consentement explicite. Une option consiste à proposer une case à cocher « Enregistrer mon moyen de paiement pour une utilisation ultérieure ». # iOS > This is a iOS for when terminal-sdk-platform is ios. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=ios. ## Créer un objet Customer Pour configurer une carte bancaire en vue de paiements futurs, vous devez l’associer à un *client* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Lorsque votre client ouvre un compte chez vous, créez un objet Customer, qui permet de réutiliser des moyens de paiement et d’assurer le suivi de plusieurs paiements. > #### Utiliser l’API Accounts v2 pour représenter des clients > > Si votre intégration utilise des [Accounts configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les références `Customer` et événement dans les exemples de code par les références équivalentes de l’API Accounts v2. Pour plus d’informations, consultez la page [Représenter des clients avec des objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Lorsque la création aboutit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez l’examiner pour identifier l’`id` du client et stocker cette valeur dans votre base de données pour la récupérer ultérieurement. Vous pouvez trouver ces clients sur la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer un PaymentIntent - [Créer un PaymentIntent](https://docs.stripe.com/api/payment_intents/create.md) Lors de la création d’un PaymentIntent, demandez une `generated_card` en spécifiant une valeur pour [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Si vous comptez uniquement réutiliser le moyen de paiement lorsque le client est dans votre tunnel de paiement, utilisez `on_session`. Sinon, utilisez `off_session`. #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Les cartes Visa, Mastercard, American Express, Discover, comarquées eftpos, Interac et girocard sont prises en charge en tant que moyens de paiement `card_present` qui peuvent être enregistrés en tant que type `card`. ## Collecter et traiter un moyen de paiement > Cette fonctionnalité nécessite le SDK iOS v4.3.0 ou une version ultérieure. - [collectPaymentMethod (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)collectPaymentMethod:delegate:completion:) Lorsque le client est prêt à payer et a [consenti à ce que les informations de son moyen de paiement soient enregistrées](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance), transmettez [allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) défini sur `always` ou `limited` dans l’appel `collectPaymentMethod`. La valeur indique le degré d’affichage d’un moyen de paiement dans le tunnel de paiement d’un client. #### Swift ```swift import UIKit import StripeTerminal class PaymentViewController: UIViewController, ReaderDisplayDelegate { // Label for displaying messages from the card reader let readerMessageLabel = UILabel(frame: .zero) var collectCancelable: Cancelable? = nil // ... // Action for a "Subscribe" button func subscribeAction() throws { let params = try PaymentIntentParametersBuilder().setCustomer(""{{CUSTOMER_ID}}"").build() Terminal.shared.createPaymentIntent(params) { createResult, createError in if let error = createError { print("createPaymentIntent failed: \(error)") } else if let paymentIntent = createResult { print("createPaymentIntent succeeded") let config = try CollectConfigBuilder().setAllowRedisplay(AllowRedisplay.always).build() self.collectCancelable = Terminal.shared.collectPaymentMethod(paymentIntent, config) { collectResult, collectError in if let error = collectError { print("collectPaymentMethod failed: \(error)") } else if let collectPaymentMethodPaymentIntent = collectResult { print("collectPaymentMethod succeeded") // ... Confirm the PaymentIntent Terminal.shared.confirmPaymentIntent(collectPaymentMethodPaymentIntent) { confirmResult, confirmError in if let error = confirmError { print("confirmPaymentIntent failed: \(error)") } else if let confirmedPaymentIntent = confirmResult { print("confirmPaymentIntent succeeded") } } } } } } } ``` ## Accéder à la generated_card Un paiement réussi avec un moyen de paiement qui prend en charge une utilisation ultérieure renvoie un PaymentIntent à l’état `requires_capture` ou `succeeded`. Vous pouvez récupérer le moyen de paiement [generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) en développant la propriété [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) du PaymentIntent et en affichant [payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present). Si vous avez transmis l’ID du client dans l’appel de création du PaymentIntent, le PaymentMethod réutilisable est automatiquement associé à l’objet [Customer](https://docs.stripe.com/api/customers.md). Sinon, vous pouvez [l’associer manuellement](https://docs.stripe.com/api/payment_methods/attach.md) dans un appel distinct. Vérifiez toujours que le fichier [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) contient une valeur `generated_card`. Certains paiements, tels que les paiements par portefeuille électronique et les paiements par carte Interac, eftpos ou girocard d’une seule marque, peuvent ne pas créer de carte générée. Si c’est le cas, et que vous avez besoin d’un moyen de paiement réutilisable, deux options s’offrent à vous : - Invitez le client à enregistrer un autre moyen de paiement à l’aide du tunnel pour [enregistrer un moyen de paiement sans effectuer de paiement](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md). - Remboursez le paiement par TPE, indiquez que la transaction a échoué et demandez au client d’utiliser un autre moyen de paiement. ## Considérations relatives aux wallets mobiles Les portefeuilles mobiles enregistrés sont réservés aux paiements [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) tels que les abonnements futurs ou les autres paiements que vous initiez au nom de votre client. Lorsque vous enregistrez un moyen de paiement par portefeuille électronique, la `generated_card` présente `allow_redisplay=limited`, pour indiquer ses considérations d’utilisation spécifiques. Lorsque vous tentez de débiter un wallet mobile, veillez à transmettre `off_session=true` lors de la confirmation du PaymentIntent. Si le client est présent dans votre tunnel de paiement, vous devrez plutôt utiliser les intégrations [Apple Pay](https://docs.stripe.com/apple-pay.md) et [Google Pay](https://docs.stripe.com/google-pay.md) pour redemander la présentation du moyen de paiement. ## Conformité Vous êtes responsable du respect de toutes les lois, réglementations et règles des réseaux applicables lorsque vous enregistrez les informations de paiement d’un client. Par exemple, le Comité européen de la protection des données a publié des recommandations sur l’enregistrement des informations de paiement. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le moyen de paiement d’un client pour une utilisation ultérieure, par exemple en lui présentant le moyen de paiement dans le tunnel de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application, ou encore en passant une commande MOTO ou en magasin. Intégrez à votre tunnel de paiement des conditions précisant la manière dont vous allez enregistrer les informations de moyen de paiement et offrant aux clients la possibilité de donner leur accord. Si vous envisagez de prélever le client alors qu’il ne paie pas activement, veillez à ce que vos conditions incluent au minimum les éléments suivants : - Le consentement du client vous autorisant à déclencher un paiement ou une série de paiements en son nom pour les transactions spécifiées - Le calendrier et la fréquence prévus des paiements (par exemple, si les paiements concernent des versements échelonnés ou d’abonnement planifiés, ou des recharges non planifiées). - La façon dont vous déterminez le montant du paiement. - Votre politique d’annulation, si vous configurez le moyen de paiement dans le cadre d’un abonnement Veillez à conserver une trace écrite de l’acceptation de ces conditions par votre client. Lors de l’enregistrement d’un moyen de paiement, celui-ci ne peut être utilisé que pour l’usage spécifié dans vos conditions. Pour prélever un client lorsqu’il n’est pas activement en train de payer et enregistrer son moyen de paiement pour un usage futur, vous devez recueillir son consentement explicite. Une option consiste à proposer une case à cocher « Enregistrer mon moyen de paiement pour une utilisation ultérieure ». # Android > This is a Android for when terminal-sdk-platform is android. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=android. ## Créer un objet Customer Pour configurer une carte bancaire en vue de paiements futurs, vous devez l’associer à un *client* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Lorsque votre client ouvre un compte chez vous, créez un objet Customer, qui permet de réutiliser des moyens de paiement et d’assurer le suivi de plusieurs paiements. > #### Utiliser l’API Accounts v2 pour représenter des clients > > Si votre intégration utilise des [Accounts configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les références `Customer` et événement dans les exemples de code par les références équivalentes de l’API Accounts v2. Pour plus d’informations, consultez la page [Représenter des clients avec des objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Lorsque la création aboutit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez l’examiner pour identifier l’`id` du client et stocker cette valeur dans votre base de données pour la récupérer ultérieurement. Vous pouvez trouver ces clients sur la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer un PaymentIntent - [Créer un PaymentIntent](https://docs.stripe.com/api/payment_intents/create.md) Lors de la création d’un PaymentIntent, demandez une `generated_card` en spécifiant une valeur pour [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Si vous comptez uniquement réutiliser le moyen de paiement lorsque le client est dans votre tunnel de paiement, utilisez `on_session`. Sinon, utilisez `off_session`. #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Les cartes Visa, Mastercard, American Express, Discover, comarquées eftpos, Interac et girocard sont prises en charge en tant que moyens de paiement `card_present` qui peuvent être enregistrés en tant que type `card`. ## Collecter et traiter un moyen de paiement > Cette fonctionnalité nécessite le SDK Android v4.0.0 ou une version ultérieure. - [collectPaymentMethod (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/collect-payment-method.html) Lorsque le client est prêt à payer et a [consenti à ce que les informations de son moyen de paiement soient enregistrées](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance), transmettez [allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) défini sur `always` ou `limited` dans l’appel `collectPaymentMethod`. La valeur indique le degré d’affichage d’un moyen de paiement dans le tunnel de paiement d’un client. #### Kotlin ```kotlin val config = CollectPaymentIntentConfiguration.Builder() .setAllowRedisplay(AllowRedisplay.ALWAYS) .build() val cancelable = Terminal.getInstance().collectPaymentMethod( paymentIntent, config, callback = object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` ## Accéder à la generated_card Un paiement réussi avec un moyen de paiement qui prend en charge une utilisation ultérieure renvoie un PaymentIntent à l’état `requires_capture` ou `succeeded`. Vous pouvez récupérer le moyen de paiement [generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) en développant la propriété [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) du PaymentIntent et en affichant [payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present). Si vous avez transmis l’ID du client dans l’appel de création du PaymentIntent, le PaymentMethod réutilisable est automatiquement associé à l’objet [Customer](https://docs.stripe.com/api/customers.md). Sinon, vous pouvez [l’associer manuellement](https://docs.stripe.com/api/payment_methods/attach.md) dans un appel distinct. Vérifiez toujours que le fichier [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) contient une valeur `generated_card`. Certains paiements, tels que les paiements par portefeuille électronique et les paiements par carte Interac, eftpos ou girocard d’une seule marque, peuvent ne pas créer de carte générée. Si c’est le cas, et que vous avez besoin d’un moyen de paiement réutilisable, deux options s’offrent à vous : - Invitez le client à enregistrer un autre moyen de paiement à l’aide du tunnel pour [enregistrer un moyen de paiement sans effectuer de paiement](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md). - Remboursez le paiement par TPE, indiquez que la transaction a échoué et demandez au client d’utiliser un autre moyen de paiement. ## Considérations relatives aux wallets mobiles Les portefeuilles mobiles enregistrés sont réservés aux paiements [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) tels que les abonnements futurs ou les autres paiements que vous initiez au nom de votre client. Lorsque vous enregistrez un moyen de paiement par portefeuille électronique, la `generated_card` présente `allow_redisplay=limited`, pour indiquer ses considérations d’utilisation spécifiques. Lorsque vous tentez de débiter un wallet mobile, veillez à transmettre `off_session=true` lors de la confirmation du PaymentIntent. Si le client est présent dans votre tunnel de paiement, vous devrez plutôt utiliser les intégrations [Apple Pay](https://docs.stripe.com/apple-pay.md) et [Google Pay](https://docs.stripe.com/google-pay.md) pour redemander la présentation du moyen de paiement. ## Conformité Vous êtes responsable du respect de toutes les lois, réglementations et règles des réseaux applicables lorsque vous enregistrez les informations de paiement d’un client. Par exemple, le Comité européen de la protection des données a publié des recommandations sur l’enregistrement des informations de paiement. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le moyen de paiement d’un client pour une utilisation ultérieure, par exemple en lui présentant le moyen de paiement dans le tunnel de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application, ou encore en passant une commande MOTO ou en magasin. Intégrez à votre tunnel de paiement des conditions précisant la manière dont vous allez enregistrer les informations de moyen de paiement et offrant aux clients la possibilité de donner leur accord. Si vous envisagez de prélever le client alors qu’il ne paie pas activement, veillez à ce que vos conditions incluent au minimum les éléments suivants : - Le consentement du client vous autorisant à déclencher un paiement ou une série de paiements en son nom pour les transactions spécifiées - Le calendrier et la fréquence prévus des paiements (par exemple, si les paiements concernent des versements échelonnés ou d’abonnement planifiés, ou des recharges non planifiées). - La façon dont vous déterminez le montant du paiement. - Votre politique d’annulation, si vous configurez le moyen de paiement dans le cadre d’un abonnement Veillez à conserver une trace écrite de l’acceptation de ces conditions par votre client. Lors de l’enregistrement d’un moyen de paiement, celui-ci ne peut être utilisé que pour l’usage spécifié dans vos conditions. Pour prélever un client lorsqu’il n’est pas activement en train de payer et enregistrer son moyen de paiement pour un usage futur, vous devez recueillir son consentement explicite. Une option consiste à proposer une case à cocher « Enregistrer mon moyen de paiement pour une utilisation ultérieure ». # React Native > This is a React Native for when terminal-sdk-platform is react-native. View the full page at https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment?terminal-sdk-platform=react-native. ## Créer un objet Customer Pour configurer une carte bancaire en vue de paiements futurs, vous devez l’associer à un *client* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Lorsque votre client ouvre un compte chez vous, créez un objet Customer, qui permet de réutiliser des moyens de paiement et d’assurer le suivi de plusieurs paiements. > #### Utiliser l’API Accounts v2 pour représenter des clients > > Si votre intégration utilise des [Accounts configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les références `Customer` et événement dans les exemples de code par les références équivalentes de l’API Accounts v2. Pour plus d’informations, consultez la page [Représenter des clients avec des objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Lorsque la création aboutit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez l’examiner pour identifier l’`id` du client et stocker cette valeur dans votre base de données pour la récupérer ultérieurement. Vous pouvez trouver ces clients sur la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer un PaymentIntent - [Créer un PaymentIntent](https://docs.stripe.com/api/payment_intents/create.md) Lors de la création d’un PaymentIntent, demandez une `generated_card` en spécifiant une valeur pour [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Si vous comptez uniquement réutiliser le moyen de paiement lorsque le client est dans votre tunnel de paiement, utilisez `on_session`. Sinon, utilisez `off_session`. #### curl ```bash curl https://api.stripe.com/v1/payment_intents \ -u <>: \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1000 \ -d "currency"="usd" \ -d "payment_method_types[]"="card_present" ``` > Les cartes Visa, Mastercard, American Express, Discover, comarquées eftpos, Interac et girocard sont prises en charge en tant que moyens de paiement `card_present` qui peuvent être enregistrés en tant que type `card`. ## Collecter et traiter un moyen de paiement - [collectPaymentMethod (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#collectpaymentmethod) Lorsque le client est prêt à payer et a [consenti à ce que les informations de son moyen de paiement soient enregistrées](https://docs.stripe.com/terminal/features/saving-payment-details/save-after-payment.md#compliance), transmettez [allow_redisplay](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay) défini sur `always` ou `limited` dans l’appel `collectPaymentMethod`. La valeur indique le degré d’affichage d’un moyen de paiement dans le tunnel de paiement d’un client. ```js const { paymentIntent, error } = await collectPaymentMethod({ paymentIntent: paymentIntent.id, allowRedisplay: "always", }); if (error) { // Placeholder for handling exception return; } // Placeholder for confirming paymentIntent ``` ## Accéder à la generated_card Un paiement réussi avec un moyen de paiement qui prend en charge une utilisation ultérieure renvoie un PaymentIntent à l’état `requires_capture` ou `succeeded`. Vous pouvez récupérer le moyen de paiement [generated_card](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present-generated_card) en développant la propriété [latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) du PaymentIntent et en affichant [payment_method_details.card_present](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card_present). Si vous avez transmis l’ID du client dans l’appel de création du PaymentIntent, le PaymentMethod réutilisable est automatiquement associé à l’objet [Customer](https://docs.stripe.com/api/customers.md). Sinon, vous pouvez [l’associer manuellement](https://docs.stripe.com/api/payment_methods/attach.md) dans un appel distinct. Vérifiez toujours que le fichier [PaymentIntent.latest_charge](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-latest_charge) contient une valeur `generated_card`. Certains paiements, tels que les paiements par portefeuille électronique et les paiements par carte Interac, eftpos ou girocard d’une seule marque, peuvent ne pas créer de carte générée. Si c’est le cas, et que vous avez besoin d’un moyen de paiement réutilisable, deux options s’offrent à vous : - Invitez le client à enregistrer un autre moyen de paiement à l’aide du tunnel pour [enregistrer un moyen de paiement sans effectuer de paiement](https://docs.stripe.com/terminal/features/saving-payment-details/save-directly.md). - Remboursez le paiement par TPE, indiquez que la transaction a échoué et demandez au client d’utiliser un autre moyen de paiement. ## Considérations relatives aux wallets mobiles Les portefeuilles mobiles enregistrés sont réservés aux paiements [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) tels que les abonnements futurs ou les autres paiements que vous initiez au nom de votre client. Lorsque vous enregistrez un moyen de paiement par portefeuille électronique, la `generated_card` présente `allow_redisplay=limited`, pour indiquer ses considérations d’utilisation spécifiques. Lorsque vous tentez de débiter un wallet mobile, veillez à transmettre `off_session=true` lors de la confirmation du PaymentIntent. Si le client est présent dans votre tunnel de paiement, vous devrez plutôt utiliser les intégrations [Apple Pay](https://docs.stripe.com/apple-pay.md) et [Google Pay](https://docs.stripe.com/google-pay.md) pour redemander la présentation du moyen de paiement. ## Conformité Vous êtes responsable du respect de toutes les lois, réglementations et règles des réseaux applicables lorsque vous enregistrez les informations de paiement d’un client. Par exemple, le Comité européen de la protection des données a publié des recommandations sur l’enregistrement des informations de paiement. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le moyen de paiement d’un client pour une utilisation ultérieure, par exemple en lui présentant le moyen de paiement dans le tunnel de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application, ou encore en passant une commande MOTO ou en magasin. Intégrez à votre tunnel de paiement des conditions précisant la manière dont vous allez enregistrer les informations de moyen de paiement et offrant aux clients la possibilité de donner leur accord. Si vous envisagez de prélever le client alors qu’il ne paie pas activement, veillez à ce que vos conditions incluent au minimum les éléments suivants : - Le consentement du client vous autorisant à déclencher un paiement ou une série de paiements en son nom pour les transactions spécifiées - Le calendrier et la fréquence prévus des paiements (par exemple, si les paiements concernent des versements échelonnés ou d’abonnement planifiés, ou des recharges non planifiées). - La façon dont vous déterminez le montant du paiement. - Votre politique d’annulation, si vous configurez le moyen de paiement dans le cadre d’un abonnement Veillez à conserver une trace écrite de l’acceptation de ces conditions par votre client. Lors de l’enregistrement d’un moyen de paiement, celui-ci ne peut être utilisé que pour l’usage spécifié dans vos conditions. Pour prélever un client lorsqu’il n’est pas activement en train de payer et enregistrer son moyen de paiement pour un usage futur, vous devez recueillir son consentement explicite. Une option consiste à proposer une case à cocher « Enregistrer mon moyen de paiement pour une utilisation ultérieure ».