# Enregistrer les coordonnées bancaires lors du paiement Découvrez comment accepter un paiement et enregistrer le moyen de paiement de votre client pour les futurs achats. # Page hébergée > This is a Page hébergée for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=stripe-hosted. Utilisez [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) afin d’effectuer une intégration rapide avec peu de code, qui permet à vos clients d’enregistrer leurs informations de paiement pour leurs futurs achats. ## Configurer Stripe [Côté serveur] Tout d’abord, [inscrivez-vous](https://dashboard.stripe.com/register) pour créer un Compte Stripe. Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application : #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Créer un objet Customer [Côté serveur] 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 une session Checkout [Côté client] [Côté serveur] Ajoutez sur votre site Web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une [session Checkout](https://docs.stripe.com/api/checkout/sessions/create.md). Vous pouvez également créer une session Checkout pour un [client existant](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), ce qui vous permet d’insérer automatiquement les coordonnées des clients connus dans les champs Checkout et d’unifier leur historique d’achat. ```html Buy cool new product
``` Une session Checkout est la représentation programmatique de ce que votre client voit lorsqu’il est redirigé vers le formulaire de paiement. Vous pouvez la configurer à l’aide de différentes options, par exemple : - Les [postes](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) à facturer - Les devises à utiliser Vous devez renseigner la valeur `success_url` avec l’URL d’une page de votre site web vers laquelle Checkout redirige votre client une fois le paiement effectué. > Par défaut, les sessions Checkout expirent 24 heures après leur création. Après avoir créé une session Checkout, redirigez votre client vers l’[URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) renvoyée dans la réponse. #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') post '/create-checkout-session' dosession = client.v1.checkout.sessions.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', }) redirect session.url, 303 end ``` ### Moyens de paiement Par défaut, Stripe active les cartes bancaires et autres moyens de paiement courants. Vous avez la possibilité d’activer ou de désactiver des moyens de paiement directement depuis le [Dashboard Stripe](https://dashboard.stripe.com/settings/payment_methods). Dans Checkout, Stripe évalue la devise et les restrictions éventuelles, puis présente dynamiquement au client les moyens de paiement pris en charge. Pour visualiser l’affichage des moyens de paiement pour les clients, saisissez un ID de transaction ou définissez le montant et la devise d’une commande dans le Dashboard. Vous pouvez activer Apple Pay et Google Pay dans vos [paramètres des moyens de paiement](https://dashboard.stripe.com/settings/payment_methods). Par défaut, Apple Pay est activé et Google Pay est désactivé. Cependant, dans certains cas, Stripe les filtre même lorsqu’ils sont activés. Nous filtrons Google Pay si vous [activez les taxes automatiques](https://docs.stripe.com/tax/checkout.md) sans collecter d’adresse de livraison. Aucune modification de l’intégration n’est requise pour activer Apple Pay ou Google Pay dans les pages hébergées par Stripe de Checkout. Stripe gère ces paiements de la même manière que les autres paiements par carte bancaire. ### Confirmer votre endpoint Confirmez que votre point d’accès est accessible en démarrant votre serveur Web (par exemple, `localhost:4242`) et en exécutant la commande suivante : ```bash curl -X POST -is "http://localhost:4242/create-checkout-session" -d "" ``` Une réponse semblable à celle ci-dessous devrait s’afficher dans votre terminal : ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### Vérifier votre intégration Vous devriez maintenant disposer d’un bouton de paiement fonctionnel qui redirige votre client vers Stripe Checkout. 1. Cliquez sur le bouton de paiement. 1. Vous êtes redirigé(e) vers le formulaire de paiement Stripe Checkout. Si votre intégration ne fonctionne pas : 1. Ouvrez l’onglet Réseau dans les outils de développement de votre navigateur. 1. Cliquez sur le bouton de paiement et assurez-vous qu’une requête XHR est bien envoyée à votre endpoint côté serveur (`POST /create-checkout-session`). 1. Vérifiez que la requête renvoie bien un état 200. 1. Utilisez `console.log(session)` dans l’écouteur du clic sur le bouton pour vous assurer qu’il renvoie les données appropriées. Pour en savoir plus sur la configuration et le test de votre intégration Checkout hébergée, consultez la rubrique [Accepter un paiement](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form). ## Enregistrer le moyen de paiement [Côté serveur] Après avoir configuré votre intégration Checkout hébergée, choisissez une configuration afin d’enregistrer les moyens de paiement utilisés par vos clients. Par défaut, les moyens de paiement utilisés pour effectuer un paiement ponctuel avec Checkout ne sont pas disponibles pour une utilisation ultérieure. ### Enregistrer les moyens de paiement pour les débiter hors session Vous pouvez configurer Checkout de façon à enregistrer les moyens de paiement utilisés pour effectuer des paiements ponctuels en transmettant l’argument [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Cela peut notamment vous permettre de capturer un moyen de paiement pour prélever des frais futurs, comme des frais d’annulation ou de non-présentation. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` Si vous utilisez Checkout en mode `abonnement`, Stripe enregistre automatiquement le moyen de paiement pour le débiter lors des paiements suivants. Les moyens de paiement par carte bancaire enregistrés pour les clients utilisant les modes `setup_future_usage` ou `abonnement` n’apparaissent pas dans Checkout en cas de nouvel achat effectué par un client connu (plus d’informations à ce sujet plus bas). Nous vous recommandons d’utiliser du [texte personnalisé](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) pour rediriger vers les conditions pertinentes concernant l’utilisation des informations de paiement enregistrées. > Les lois internationales en matière de protection de la vie privée sont complexes et nuancées. Nous vous recommandons de contacter votre conseiller juridique et votre équipe chargée de la conformité avant de mettre en œuvre [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage), car cela pourrait impliquer votre cadre de conformité existant en matière de confidentialité. Reportez-vous aux [directives du Comité européen de la protection des données](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) pour en savoir plus sur l’enregistrement des données de paiement. ### Enregistrer les moyens de paiement pour les préremplir dans Checkout Par défaut, Checkout utilise [Link](https://docs.stripe.com/payments/link/checkout-link.md) pour offrir à vos clients la possibilité d’enregistrer et de réutiliser leurs informations de paiement en toute sécurité. Si vous préférez gérer vous-même les moyens de paiement, utilisez [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) lors de la création d’une Checkout Session. Vos clients pourront ainsi enregistrer leurs moyens de paiement pour leurs futurs achats dans Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` Lorsque vous transmettez ce paramètre en mode [payment](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) ou [subscription](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode), une case à cocher facultative s’affiche, ce qui permet aux clients d’enregistrer explicitement leur moyen de paiement pour leurs futurs achats. Lorsque les clients cochent cette case, Checkout enregistre le moyen de paiement avec [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay), et utilise ce paramètre pour déterminer si les informations de paiement peuvent être préremplies lors des futurs achats. L’utilisation de `saved_payment_method_options.payment_method_save` ne nécessite pas de transmettre `setup_future_usage` pour enregistrer le moyen de paiement. > #### Utiliser l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est disponible en version générale pour les utilisateurs Connect, et en version bêta publique pour les autres utilisateurs Stripe. Tous les utilisateurs Stripe peuvent activer Accounts v2 [dans leur Dashboard](https://dashboard.stripe.com/settings/connect/platform-setup). Cependant, lorsqu’ils effectuent des appels à l’API Accounts v2, les utilisateurs de la version bêta doivent [indiquer une version bêta](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning). > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account configurés par le client](https://docs.stripe.com/connect/use-accounts-as-customers.md), plutôt que d’utiliser des objets [Customer](https://docs.stripe.com/api/customers.md). L’utilisation de [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) nécessite un objet pour représenter votre client (un `Account` configuré par le client ou un `Customer`). Pour enregistrer un nouveau client, définissez [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) sur `always` dans la Checkout Session. Sinon, la session n’enregistre ni le client ni le moyen de paiement. Si `payment_method_save` n’est pas transmis ou si le client refuse d’enregistrer le moyen de paiement, Checkout enregistre toujours les moyens de paiement créés en mode '`subscription` ou à l’aide de `setup_future_usage`. La valeur `allow_redisplay` de ces moyens de paiement est définie sur `limited`, ce qui évite que les informations de paiement soient préremplies pour les futurs achats et vous permet de vous conformer aux règles des réseaux de cartes et aux réglementations en matière de protection des données. Découvrez comment [modifier le comportement par défaut activé par ces modes](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) et comment modifier ou remplacer le comportement `allow_redisplay`. > Vous pouvez utiliser Checkout pour enregistrer des cartes et d’autres moyens de paiement afin de les débiter hors session, mais Checkout ne remplit automatiquement que les données des cartes enregistrées. Découvrez comment [remplir automatiquement les données des cartes enregistrées](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Pour enregistrer un moyen de paiement sans paiement initial, [utilisez Checkout en mode configuration](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Autoriser les clients à supprimer des moyens de paiement enregistrés Pour permettre à vos clients de supprimer un moyen de paiement enregistré de sorte qu’il ne s’affiche plus pour les paiements ultérieurs, utilisez [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) lors de la création d’une session Checkout. #### Accounts v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` Le client ne peut pas supprimer un moyen de paiement associé à un abonnement actif s’il ne dispose pas d’un moyen de paiement par défaut enregistré pour les paiements de factures et d’abonnements. # Page intégrée > This is a Page intégrée for when payment-ui is embedded-form. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=embedded-form. Utilisez [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) afin d’intégrer à votre site Web un formulaire de paiement préconfiguré permettant à vos clients d’enregistrer leurs informations de paiement pour leurs futurs achats. ## Configurer Stripe [Côté serveur] Tout d’abord, [inscrivez-vous](https://dashboard.stripe.com/register) pour créer un Compte Stripe. Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application : #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Créer un objet Customer [Côté serveur] 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 une session Checkout [Côté serveur] Depuis votre serveur, créez une *Checkout Session* (A Checkout Session represents your customer's session as they pay for one-time purchases or subscriptions through Checkout. After a successful payment, the Checkout Session contains a reference to the Customer, and either the successful PaymentIntent or an active Subscription) et définissez l’[ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) sur `embedded_page`. Vous pouvez configurer la [Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md) avec des [postes](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) à inclure et des options telles qu’une [devise](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency). Vous pouvez également créer une session Checkout pour un [client existant](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), ce qui vous permet d’insérer automatiquement les coordonnées des clients connus dans les champs Checkout et d’unifier leur historique d’achat. Pour rediriger vos clients vers une page personnalisée hébergée sur votre site web, indiquez l’URL de cette page dans le paramètre [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url). Ajoutez la variable de modèle `{CHECKOUT_SESSION_ID}` dans l’URL pour récupérer l’état de la session sur la page de retour. Checkout remplace automatiquement la variable par l’ID de session Checkout avant la redirection. En savoir plus sur la [configuration de la page de retour](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page) et d’autres options pour [personnaliser le comportement de redirection](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form). Après avoir créé la session Checkout, utilisez le `client_secret` renvoyé dans la réponse pour [monter Checkout](https://docs.stripe.com/payments/checkout/save-during-payment.md#mount-checkout). #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') post '/create-checkout-session' do session = client.v1.checkout.sessions.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment',ui_mode: 'embedded_page', return_url: 'https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}' }) {clientSecret: session.client_secret}.to_json end ``` ## Monter Checkout [Côté client] [Côté serveur] #### HTML + JS Checkout est disponible dans [Stripe.js](https://docs.stripe.com/js.md). Intégrez le script Stripe.js à votre page en l’ajoutant à l’en-tête de votre fichier HTML. Ensuite, créez un nœud DOM vide (conteneur) à utiliser pour le montage. ```html
``` Initialisez Stripe.js avec votre clé API publique. Créez une fonction `fetchClientSecret` asynchrone qui demande à votre serveur de créer la session Checkout et de récupérer la clé secrète du client. Transmettez cette fonction dans la propriété `options` lorsque vous créez l’instance Checkout : ```javascript // Initialize Stripe.js const stripe = Stripe('<>'); initialize(); // Fetch Checkout Session and retrieve the client secret async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Initialize Checkout const checkout = await stripe.createEmbeddedCheckoutPage({ fetchClientSecret, }); // Mount Checkout checkout.mount('#checkout'); } ``` #### React Installez [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) et le chargeur Stripe.js à partir de npm : ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` Pour utiliser le composant Checkout intégré, créez un `EmbeddedCheckoutProvider`. Appelez `loadStripe` avec votre clé API publique et transmettez la valeur `Promise` au prestataire. Créez une fonction `fetchClientSecret` asynchrone qui demande à votre serveur de créer la session Checkout et de récupérer la clé secrète du client. Transmettez cette fonction dans la propriété `options` acceptée par le prestataire. ```jsx import * as React from 'react'; import {loadStripe} from '@stripe/stripe-js'; import { EmbeddedCheckoutProvider, EmbeddedCheckout } from '@stripe/react-stripe-js'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('pk_test_123'); const App = () => { const fetchClientSecret = React.useCallback(() => { // Create a Checkout Session return fetch("/create-checkout-session", { method: "POST", }) .then((res) => res.json()) .then((data) => data.clientSecret); }, []); const options = {fetchClientSecret}; return (
) } ``` Checkout s’affiche dans un iframe qui envoie de manière sécurisée les informations de paiement à Stripe via une connexion HTTPS. > Évitez de placer Checkout dans un autre iframe, car certains moyens de paiement nécessitent une redirection vers une autre page pour la confirmation du paiement. ## Enregistrer le moyen de paiement [Côté serveur] Après avoir configuré votre intégration Checkout intégrée, choisissez une configuration afin d’enregistrer les moyens de paiement utilisés par vos clients. Par défaut, les moyens de paiement utilisés pour effectuer un paiement ponctuel avec Checkout ne sont pas disponibles pour une utilisation ultérieure. ### Enregistrer les moyens de paiement pour les débiter hors session Vous pouvez configurer Checkout de façon à enregistrer les moyens de paiement utilisés pour effectuer des paiements ponctuels en transmettant l’argument [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Cela peut notamment vous permettre de capturer un moyen de paiement pour prélever des frais futurs, comme des frais d’annulation ou de non-présentation. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` Si vous utilisez Checkout en mode `abonnement`, Stripe enregistre automatiquement le moyen de paiement pour le débiter lors des paiements suivants. Les moyens de paiement par carte bancaire enregistrés pour les clients utilisant les modes `setup_future_usage` ou `abonnement` n’apparaissent pas dans Checkout en cas de nouvel achat effectué par un client connu (plus d’informations à ce sujet plus bas). Nous vous recommandons d’utiliser du [texte personnalisé](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) pour rediriger vers les conditions pertinentes concernant l’utilisation des informations de paiement enregistrées. > Les lois internationales en matière de protection de la vie privée sont complexes et nuancées. Nous vous recommandons de contacter votre conseiller juridique et votre équipe chargée de la conformité avant de mettre en œuvre [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage), car cela pourrait impliquer votre cadre de conformité existant en matière de confidentialité. Reportez-vous aux [directives du Comité européen de la protection des données](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) pour en savoir plus sur l’enregistrement des données de paiement. ### Enregistrer les moyens de paiement pour les préremplir dans Checkout Par défaut, Checkout utilise [Link](https://docs.stripe.com/payments/link/checkout-link.md) pour offrir à vos clients la possibilité d’enregistrer et de réutiliser leurs informations de paiement en toute sécurité. Si vous préférez gérer vous-même les moyens de paiement, utilisez [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) lors de la création d’une Checkout Session. Vos clients pourront ainsi enregistrer leurs moyens de paiement pour leurs futurs achats dans Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` Lorsque vous transmettez ce paramètre en mode [payment](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) ou [subscription](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode), une case à cocher facultative s’affiche, ce qui permet aux clients d’enregistrer explicitement leur moyen de paiement pour leurs futurs achats. Lorsque les clients cochent cette case, Checkout enregistre le moyen de paiement avec [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay), et utilise ce paramètre pour déterminer si les informations de paiement peuvent être préremplies lors des futurs achats. L’utilisation de `saved_payment_method_options.payment_method_save` ne nécessite pas de transmettre `setup_future_usage` pour enregistrer le moyen de paiement. > #### Utiliser l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est disponible en version générale pour les utilisateurs Connect, et en version bêta publique pour les autres utilisateurs Stripe. Tous les utilisateurs Stripe peuvent activer Accounts v2 [dans leur Dashboard](https://dashboard.stripe.com/settings/connect/platform-setup). Cependant, lorsqu’ils effectuent des appels à l’API Accounts v2, les utilisateurs de la version bêta doivent [indiquer une version bêta](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning). > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account configurés par le client](https://docs.stripe.com/connect/use-accounts-as-customers.md), plutôt que d’utiliser des objets [Customer](https://docs.stripe.com/api/customers.md). L’utilisation de [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) nécessite un objet pour représenter votre client (un `Account` configuré par le client ou un `Customer`). Pour enregistrer un nouveau client, définissez [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) sur `always` dans la Checkout Session. Sinon, la session n’enregistre ni le client ni le moyen de paiement. Si `payment_method_save` n’est pas transmis ou si le client refuse d’enregistrer le moyen de paiement, Checkout enregistre toujours les moyens de paiement créés en mode '`subscription` ou à l’aide de `setup_future_usage`. La valeur `allow_redisplay` de ces moyens de paiement est définie sur `limited`, ce qui évite que les informations de paiement soient préremplies pour les futurs achats et vous permet de vous conformer aux règles des réseaux de cartes et aux réglementations en matière de protection des données. Découvrez comment [modifier le comportement par défaut activé par ces modes](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) et comment modifier ou remplacer le comportement `allow_redisplay`. > Vous pouvez utiliser Checkout pour enregistrer des cartes et d’autres moyens de paiement afin de les débiter hors session, mais Checkout ne remplit automatiquement que les données des cartes enregistrées. Découvrez comment [remplir automatiquement les données des cartes enregistrées](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Pour enregistrer un moyen de paiement sans paiement initial, [utilisez Checkout en mode configuration](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Autoriser les clients à supprimer des moyens de paiement enregistrés Pour permettre à vos clients de supprimer un moyen de paiement enregistré de sorte qu’il ne s’affiche plus pour les paiements ultérieurs, utilisez [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) lors de la création d’une session Checkout. #### Accounts v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` Le client ne peut pas supprimer un moyen de paiement associé à un abonnement actif s’il ne dispose pas d’un moyen de paiement par défaut enregistré pour les paiements de factures et d’abonnements.