# Enregistrer les informations de paiement lors du paiement Découvrez comment accepter un paiement et enregistrer les informations de paiement de votre client pour de 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) pour obtenir une intégration rapide avec peu de codage qui permet à vos clients d’enregistrer leurs informations de paiement pour des achats futurs. ## 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 à partir de 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 client [Côté serveur] Pour configurer une carte 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. > #### Utilisez l’API Accounts v2 pour représenter les clients > > Si votre intégration utilise des comptes [configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les documentations `Customer` et événements dans les exemples de code par les documentations sur les API Accounts v2 correspondantes. Pour en savoir plus, consultez [Représenter les 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 réussit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez consulter 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 dans la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer une session Checkout [Côté client] [Côté serveur] Ajoutez à votre site Web un bouton de paiement qui fait appel à un point de terminaison 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 de remplir 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 à l’aide d’un programme 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 ce qui suit : - [Postes de facture](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) à débiter - Devises à utiliser Vous devez renseigner le champ `success_url`, avec l’URL d’une page de votre site Web vers laquelle Checkout renvoie votre client après avoir effectué le paiement. > 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 ``` ### Modes de paiement Par défaut, Stripe active les cartes et d’autres modes de paiement courants. Vous pouvez activer ou désactiver des moyens de paiement individuels dans 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 modes de paiement pris en charge. Pour voir comment vos moyens de paiement sont affichés pour les clients, saisissez un ID de transaction ou définissez un montant et une devise de 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. ### Confirmez votre point de terminaison Confirmez que votre point de terminaison 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 être affichée 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é vers le formulaire de paiement Stripe Checkout. Si votre intégration ne fonctionne pas : 1. Ouvrez l’onglet Réseau dans les outils développeur de votre navigateur. 1. Cliquez sur le bouton de paiement et assurez-vous qu’une requête XHR a bien été envoyée à votre point de terminaison côté serveur (`POST /create-checkout-session`). 1. Vérifiez que la requête renvoie un état 200. 1. Utilisez `console.log(session)` dans le détecteur de clics de bouton pour vous assurer que les données appropriées sont renvoyées. Pour en savoir plus sur la configuration et le test de votre intégration de 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 de Checkout hébergée, choisissez une configuration pour votre intégration 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 future. ### Enregistrer les moyens de paiement pour les débiter hors session Vous pouvez configurer Checkout de façon à enregistrer les modes 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 mode de paiement enregistré afin de 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 mode de paiement pour le débiter lors des prochains paiements. Les modes de paiement par carte enregistrés pour les clients à l’aide du mode `setup_future_usage` ou du mode `abonnement` ne sont pas disponibles pour les achats récurrents dans Checkout (plus d’informations à ce sujet ci-dessous). Nous recommandons d’utiliser un [texte personnalisé](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) pour créer un lien vers toutes 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 responsable 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é. Pour en savoir plus sur l’enregistrement des informations de paiement. 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). ### Enregistrer les moyens de paiement pour qu’ils soient remplis automatiquement 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 modes 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 session Checkout pour permettre à vos clients d’enregistrer leurs modes de paiement pour des achats futurs 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" ``` La transmission de ce paramètre en mode [paiement](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) ou [abonnement](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) affiche une case à cocher facultative qui permet aux clients d’enregistrer explicitement leur mode de paiement pour leurs futurs achats. Lorsque les clients cochent cette case, Checkout enregistre le mode de paiement avec [allow_redisplay : always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout utilisera ce paramètre pour déterminer si un mode de paiement peut être rempli automatiquement lors des futurs achats. Lorsque vous utilisez `saved_payment_method_options.payment_method_save`, vous n’avez pas besoin de transmettre `setup_future_usage` pour enregistrer le mode de paiement. > #### Utilisez l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est en disponibilité générale pour les utilisateurs associés, et en version bêta publique pour les autres utilisateurs de Stripe. Tous les utilisateurs de 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 en version bêta doivent [spécifier une version](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) bêta. > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md) configurés par le client 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 représentant votre clientèle (soit un `Account` configuré côté client, soit un `Customer`). Pour enregistrer un nouveau client, définissez le paramètre [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) de la session Checkout sur `always`. Sinon, la session n’enregistrera ni le client ni le mode de paiement. Si `payment_method_save` n’est pas transmis ou si le client refuse d’enregistrer le mode de paiement, Checkout enregistre toutefois les modes de paiement créés en mode `subscription` ou à l’aide de `setup_future_usage`. La valeur `allow_redisplay` de ces modes de paiement est définie sur `limited`. Cela évite qu’ils soient remplis automatiquement pour les achats récurrents, 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 modes de paiement afin de les débiter hors session, mais Checkout ne remplit automatiquement que les cartes enregistrées. Découvrez comment [remplir automatiquement les cartes enregistrées](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Pour enregistrer un mode 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 modes de paiement enregistrés Pour permettre à vos clients de supprimer un mode de paiement enregistré afin qu’il ne réapparaisse pas pour des 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 mode de paiement s’il est associé à un abonnement actif et qu’aucun mode de paiement par défaut n’est 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) pour intégrer un formulaire de paiement prédéfini dans votre site Web qui permet à vos clients d’enregistrer leurs informations de paiement pour des achats futurs. ## 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 à partir de 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 client [Côté serveur] Pour configurer une carte 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. > #### Utilisez l’API Accounts v2 pour représenter les clients > > Si votre intégration utilise des comptes [configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les documentations `Customer` et événements dans les exemples de code par les documentations sur les API Accounts v2 correspondantes. Pour en savoir plus, consultez [Représenter les 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 réussit, l’objet [Customer](https://docs.stripe.com/api/customers/object.md) est renvoyé. Vous pouvez consulter 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 dans la page [Clients](https://dashboard.stripe.com/customers) du Dashboard. ## Créer une session Checkout [Côté serveur] Depuis votre serveur, créez une *session Checkout* (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 [ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) sur `embedded_page`. Vous pouvez configurer la [session Checkout](https://docs.stripe.com/api/checkout/sessions/create.md) avec [des postes de facture](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) à inclure et des options telles que les [devises](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 de remplir automatiquement les coordonnées des clients connus dans les champs Checkout et d’unifier leur historique d’achat. Pour rediriger les clients vers une page personnalisée que vous hébergez sur votre site Web, précisez l’adresse URL de cette page dans le paramètre [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url). Incluez 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](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page) de retour et d’autres options pour [personnaliser le comportement](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form) de redirection. Après avoir créé la session Checkout, utilisez le `client_secret` retourné dans la réponse pour [charger 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 lors du montage. ```html
``` Initialisez Stripe.js avec votre clé API publique. Créez une fonction asynchrone `fetchClientSecret` qui envoie une requête à votre serveur pour créer la session Checkout et récupérer la clé secrète du client. Transmettez cette fonction dans `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`. Effectuez un appel `loadStripe` avec votre clé API publiable et transmettez l’objet `Promise` renvoyé au fournisseur. Créez une fonction asynchrone `fetchClientSecret` qui envoie une requête à votre serveur pour créer la session Checkout et récupérer la clé secrète du client. Transmettez cette fonction dans la propriété `options` acceptée par le fournisseur. ```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 est affiché dans une balise iframe qui envoie de manière sécurisée les informations de paiement à Stripe par une connexion HTTPS. > Évitez de placer Checkout dans une autre balise iframe, car certains moyens de paiement nécessitent une redirection vers une autre page pour obtenir la confirmation du paiement. ## Enregistrer le moyen de paiement [Côté serveur] Après avoir configuré votre intégration de Checkout intégrée, choisissez une configuration pour votre intégration 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 future. ### Enregistrer les moyens de paiement pour les débiter hors session Vous pouvez configurer Checkout de façon à enregistrer les modes 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 mode de paiement enregistré afin de 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 mode de paiement pour le débiter lors des prochains paiements. Les modes de paiement par carte enregistrés pour les clients à l’aide du mode `setup_future_usage` ou du mode `abonnement` ne sont pas disponibles pour les achats récurrents dans Checkout (plus d’informations à ce sujet ci-dessous). Nous recommandons d’utiliser un [texte personnalisé](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) pour créer un lien vers toutes 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 responsable 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é. Pour en savoir plus sur l’enregistrement des informations de paiement. 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). ### Enregistrer les moyens de paiement pour qu’ils soient remplis automatiquement 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 modes 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 session Checkout pour permettre à vos clients d’enregistrer leurs modes de paiement pour des achats futurs 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" ``` La transmission de ce paramètre en mode [paiement](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) ou [abonnement](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) affiche une case à cocher facultative qui permet aux clients d’enregistrer explicitement leur mode de paiement pour leurs futurs achats. Lorsque les clients cochent cette case, Checkout enregistre le mode de paiement avec [allow_redisplay : always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout utilisera ce paramètre pour déterminer si un mode de paiement peut être rempli automatiquement lors des futurs achats. Lorsque vous utilisez `saved_payment_method_options.payment_method_save`, vous n’avez pas besoin de transmettre `setup_future_usage` pour enregistrer le mode de paiement. > #### Utilisez l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est en disponibilité générale pour les utilisateurs associés, et en version bêta publique pour les autres utilisateurs de Stripe. Tous les utilisateurs de 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 en version bêta doivent [spécifier une version](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) bêta. > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account](https://docs.stripe.com/connect/use-accounts-as-customers.md) configurés par le client 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 représentant votre clientèle (soit un `Account` configuré côté client, soit un `Customer`). Pour enregistrer un nouveau client, définissez le paramètre [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) de la session Checkout sur `always`. Sinon, la session n’enregistrera ni le client ni le mode de paiement. Si `payment_method_save` n’est pas transmis ou si le client refuse d’enregistrer le mode de paiement, Checkout enregistre toutefois les modes de paiement créés en mode `subscription` ou à l’aide de `setup_future_usage`. La valeur `allow_redisplay` de ces modes de paiement est définie sur `limited`. Cela évite qu’ils soient remplis automatiquement pour les achats récurrents, 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 modes de paiement afin de les débiter hors session, mais Checkout ne remplit automatiquement que les cartes enregistrées. Découvrez comment [remplir automatiquement les cartes enregistrées](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Pour enregistrer un mode 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 modes de paiement enregistrés Pour permettre à vos clients de supprimer un mode de paiement enregistré afin qu’il ne réapparaisse pas pour des 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 mode de paiement s’il est associé à un abonnement actif et qu’aucun mode de paiement par défaut n’est enregistré pour les paiements de factures et d’abonnements.