# 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. > #### Prise en charge de l’API Accounts v2 > > Le SDK Terminal ne prend pas en charge les *Accounts configurés par le client* (Account configurations represent role-based functionality that you can enable for accounts, such as merchant, customer, or recipient). Il prend uniquement en charge les objets `Customer`. Vous pouvez utiliser Terminal avec l’API Accounts v2 si tout votre code client se trouve côté serveur et n’utilise pas le SDK. 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. # iOS ## Créer un objet Customer Pour configurer un moyen de paiement pour des paiements futurs, vous devez l’associer à un objet représentant votre client. Lorsque votre client crée un compte ou effectue sa première transaction avec votre entreprise, créez soit un objet [Account](https://docs.stripe.com/api/v2/core/accounts/create.md) configuré pour le client avec l’API Accounts v2, soit un objet [Customer](https://docs.stripe.com/api/customers/create.md) avec l’API Customers. #### Accounts v2 ```curl curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer <>" \ -H "Stripe-Version: 2026-06-24.preview" \ --json '{ "contact_email": "jenny.rosen@example.com", "display_name": "Jenny Rosen", "configuration": { "customer": {} }, "include": [ "configuration.customer" ] }' ``` Lorsque la création aboutit, l’objet [Account](https://docs.stripe.com/api/v2/core/accounts/object.md#v2_account_object-configuration-customer) configuré par le client est renvoyé. Examinez l’objet pour identifier l’`id` du client et stocker cette valeur dans votre base de données pour la récupérer ultérieurement. #### Customers v1 ```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é. Examinez l’objet 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) Effectuez une requête pour une `generated_card` lors de la création d’un `PaymentIntent` 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 souhaitez réutiliser le moyen de paiement uniquement lorsque le client est présent dans le tunnel de paiement, utilisez `on_session`. Sinon, utilisez `off_session`. #### Accounts v2 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d setup_future_usage=off_session \ -d amount=1000 \ -d currency=usd \ -d "payment_method_types[]=card_present" ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d setup_future_usage=off_session \ -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. > #### Prise en charge du SDK Terminal pour les clients > > Si vous créez et gérez des `PaymentIntents` côté client via le SDK Terminal, vous devez utiliser des objets `Customer`. Le SDK Terminal ne prend pas en charge l’API Accounts v2. - [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 compatible avec une utilisation future renvoie un `PaymentIntent` dans 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 consultant [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’identifiant du client lors de la création du `PaymentIntent`, le `PaymentMethod` réutilisable est automatiquement associé au client. Sinon, vous pouvez [l’associer manuellement](https://docs.stripe.com/api/payment_methods/attach.md) dans un appel séparé. 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 Vous pouvez uniquement utiliser les wallets mobiles enregistrés pour les paiements [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) que vous initiez au nom de votre client, comme les paiements d’abonnement récurrents. Lorsque vous enregistrez un moyen de paiement par wallet, la `generated_card` possède `allow_redisplay=limited`, pour indiquer les considérations d’utilisation spécifiques. Lorsque vous tentez d’effectuer un paiement avec un wallet mobile, veillez à définir `off_session` sur true lors de la confirmation du `PaymentIntent`. Si le client est présent dans votre tunnel de paiement, vous devez plutôt utiliser l’intégration de wallet mobile appropriée pour l’inviter à renseigner son 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 ».