Accepter un paiement
Acceptez les paiements en ligne en toute sécurité.
Créez un formulaire de paiement ou utilisez une page de paiement préconfigurée pour commencer à accepter les paiements en ligne.
Créez une intégration de paiement personnalisée en intégrant des composants d’interface utilisateur sur votre site à l’aide de Stripe Elements. Comparez les différents types d’intégration proposés par Stripe.
Le code côté client et côté serveur crée un formulaire de paiement qui accepte différents moyens de paiement.
Effort d'intégration
Type d'intégration
Combinez des composants d’interface utilisateur dans un tunnel de paiement personnalisé
Personnalisation de l'interface utilisateur
Personnalisation au niveau CSS avec l’API Appearance
Vous souhaitez utiliser Stripe Tax, les réductions, les frais de livraison ou la conversion de devises ?
Stripe has a Payment Element integration that manages tax, discounts, shipping, and currency conversion for you. See build a checkout page to learn more.
Configurer StripeCôté serveur
Tout d’abord, créez un compte Stripe ou connectez-vous.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer un PaymentIntentCôté serveur
Remarque
Si vous souhaitez afficher le Payment Element sans créer au préalable de PaymentIntent, consultez la page Collecter les informations de paiement avant de créer un Intent.
L’objet PaymentIntent représente votre intention d’encaisser le paiement d’un client et suit les tentatives de débit et changements d’état tout au long du processus de paiement.
Créer le PaymentIntent
Créez un PaymentIntent sur votre serveur avec les attribut amount et currency (devise). Dans la dernière version de l’API, le paramètre automatic_
est facultatif, car Stripe active déjà cette fonctionnalité par défaut. Vous pouvez gérer les moyens de paiement depuis le Dashboard. Stripe gère le renvoi des moyens de paiement admissibles en fonction de facteurs tels que le montant de la transaction, la devise et le tunnel de paiement.
Stripe s’appuie sur vos paramètres de moyens de paiement pour afficher les moyens de paiement que vous avez activés. 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. Pour ignorer les moyens de paiement, répertoriez manuellement ceux que vous souhaitez activer à l’aide de l’attribut payment_method_types.
Remarque
Définissez toujours le montant à débiter côté serveur car il s’agit d’un environnement sécurisé contrairement à l’environnement client. De cette façon un client malveillant ne pourra pas fixer son propre tarif.
Récupérer la clé secrète du client
Le PaymentIntent contient une clé secrète à utiliser côté client pour finaliser le processus de paiement en toute sécurité. Vous pouvez adopter différentes approches pour transmettre cette clé secrète côté client.
Collecter les données de paiementCôté client
Collectez les informations de paiement du client avec le Payment Element. Le Payment Element est un composant d’interface utilisateur préconfiguré qui simplifie la collecte des informations pour de nombreux moyens de paiement.
Le Payment Element contient un iframe qui envoie les informations de paiement à Stripe de manière sécurisée via une connexion HTTPS. Évitez de placer le Payment Element dans un autre iframe, car certains moyens de paiement nécessitent une redirection vers une autre page pour la confirmation du paiement.
Si vous choisissez d’utiliser un iframe et que vous souhaitez accepter Apple Pay ou Google Pay, l’attribut allow de l’iframe doit être égal à "payment *"
.
Pour que votre intégration fonctionne, l’adresse de la page de paiement doit commencer par https://
et non par http://
. Vous pouvez tester votre intégration sans utiliser le protocole HTTPS, mais n’oubliez pas de l’activer lorsque vous souhaitez commencer à accepter des paiements réels.
Le composant Payment Element affiche un formulaire dynamique qui permet à votre client de choisir un moyen de paiement. Pour chaque moyen de paiement, le formulaire demande automatiquement au client de renseigner toutes les informations de paiement nécessaires.
Personnaliser l’apparence
Personnalisez le Payment Element pour qu’il corresponde à l’apparence de votre site en ajoutant l’objet Appearance dans options
lors de la création du fournisseur Elements
.
Collecter les adresses
Par défaut, le composant Payment Element ne collecte que les informations nécessaires relatives à l’adresse de facturation. Si vous souhaitez obtenir l’adresse de facturation (par exemple, pour calculer la taxe sur les biens et services numériques) ou l’adresse de livraison complètes d’un client, utilisez le composant Address Element.
Demander un token de marchand Apple Pay
Si vous avez configuré votre intégration afin d’accepter les paiements Apple Pay, nous vous recommandons de configurer l’interface Apple Pay de manière à renvoyer un token de marchand pour activer les transactions initiées par les marchands. Demandez le type de token de marchand approprié dans le Payment Element.
FacultatifEnregistrer et récupérer les moyens de paiement des clients
Vous pouvez configurer le composant Payment Element de façon à enregistrer les moyens de paiement de vos clients en vue d’une utilisation ultérieure. Cette section vous montre comment intégrer la fonctionnalité d’enregistrement des moyens de paiement, qui permet à Payment Element de :
- De demander aux acheteurs s’ils consentent à ce que leur moyen de paiement soit enregistré
- Enregistrer les moyens de paiement lorsque les clients y consentent
- Afficher les moyens de paiement enregistrés des acheteurs lors de leurs futurs achats
- Mise à jour automatique des cartes perdues ou expirées lorsque les clients les remplacent

Enregistrez les moyens de paiement.

Réutilisez un moyen de paiement précédemment enregistré.
Activer l’enregistrement du moyen de paiement dans le composant Payment Element
Lors de la création d’un PaymentIntent sur votre serveur, créez également un CustomerSession en fournissant l’ID d’objet Customer et en activant le composant payment_element pour votre session. Configurez les fonctionnalités des moyens de paiement enregistrés que vous souhaitez activer. Par exemple, l’activation de payment_method_save vous permet d’afficher une case à cocher invitant les clients à enregistrer leurs informations de paiement pour une utilisation ultérieure.
Vous pouvez spécifier setup_
sur un PaymentIntent ou une session Checkout pour remplacer le comportement par défaut à l’enregistrement d’un moyen de paiement. Ainsi, vous enregistrez automatiquement le moyen de paiement en vue d’une utilisation ultérieure, même si le client ne choisit pas explicitement de l’enregistrer.
Mise en garde
Autoriser vos clients à supprimer les moyens de paiement qu’ils ont enregistrés en activant payment_method_remove a une incidence sur les abonnements qui dépendent de ce moyen de paiement. La suppression du moyen de paiement dissocie le PaymentMethod de cet objet Customer.
Votre instance Elements utilise la clé secrète du client de la session Client pour accéder aux moyens de paiement enregistrés de ce client. Gérez les erreurs correctement lorsque vous créez la session Client. Si une erreur se produit, vous n’avez pas besoin de fournir la clé secrète du client de la session Client à l’instance Elements, car elle est facultative.
Créez l’instance Elements à l’aide des clés secrètes du client pour le PaymentIntent et la session Client. Ensuite, utilisez cette instance d’Elements pour créer un Payment Element.
// Create the CustomerSession and obtain its clientSecret const res = await fetch("/create-intent-and-customer-session", { method: "POST" }); const { customer_session_client_secret: customerSessionClientSecret } = await res.json(); const elementsOptions = { clientSecret: '{{CLIENT_SECRET}}', customerSessionClientSecret, // Fully customizable with appearance API. appearance: {/*...*/}, }; // Set up Stripe.js and Elements to use in checkout form, passing the client secret // and CustomerSession's client secret obtained in a previous step const elements = stripe.elements(elementsOptions); // Create and mount the Payment Element const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element');
Lors de la confirmation du PaymentIntent, Stripe.js contrôle automatiquement le paramètre setup_future_usage sur le PaymentIntent et le paramètre allow_redisplay sur le PaymentMethod, selon que le client a coché ou non la case permettant d’enregistrer ses informations de paiement.
Exiger la collecte du CVC
Au besoin, spécifiez require_
lors de la création du PaymentIntent pour appliquer la collecte du CVC lors des paiements par carte.
Détecter la sélection d’un moyen de paiement enregistré
Pour contrôler le contenu dynamique qui s’affiche lors de la sélection d’un moyen de paiement enregistré, écoutez l’événement change
du composant Element Payment, qui contient le moyen de paiement sélectionné.
paymentElement.on('change', function(event) { if (event.value.payment_method) { // Control dynamic content if a saved payment method is selected } })
FacultatifLink dans votre page de paiementCôté client
Utilisez Link dans le composant Payment Element pour permettre à vos clients de payer plus rapidement. Vous pouvez renseigner automatiquement les informations de tout client connecté utilisant déjà Link, même s’il a enregistré ses informations dans Link avec une autre entreprise. L’intégration du composant Payment Element inclut par défaut une invite Link dans le formulaire de paiement par carte. Pour gérer Link dans le composant Payment Element, rendez-vous dans vos paramètres des moyens de paiement.

Collecter l’adresse e-mail du client pour l’authentification ou l’inscription Link
Options d’intégration
L’intégration de Link au composant Payment Element peut se faire de deux façons. Parmi celles-ci, Stripe recommande de transmettre l’adresse e-mail du client au composant Payment Element, le cas échéant. N’oubliez pas de tenir compte du fonctionnement de votre tunnel de paiement lorsque vous choisissez l’une des options suivantes :
Option d’intégration | Tunnel de paiement | Description |
---|---|---|
Transmettre l’adresse e-mail d’un client au Payment Element Recommandé |
| Programmez la transmission de l’e-mail d’un client vers le composant Payment Element. Dans ce scénario, le client s’identifie directement auprès de Link dans le formulaire de paiement au lieu d’utiliser un composant d’interface utilisateur distinct. |
Récupérer l’adresse e-mail d’un client dans le composant Payment Element | Vos clients saisissent leurs adresses e-mail et s’identifient ou s’inscrivent auprès de Link directement dans le composant Payment Element lors du paiement. | Si un client ne s’est pas inscrit auprès de Link et qu’il choisit un moyen de paiement pris en charge dans le composant Payment Element, il est invité à enregistrer ses informations à l’aide de Link. Link renseigne automatiquement les informations de paiement des clients déjà inscrits. |
FacultatifRécupérer des mises à jour à partir du serveurCôté client
Pour modifier des attributs du Paymentintent tels que le montant (par exemple, les codes de réduction ou les frais d’expédition) après l’affichage du composant Payment Element, vous pouvez modifier le PaymentIntent sur votre serveur, puis appeler elements.fetchUpdates pour faire apparaître le nouveau montant dans le composant Payment Element. Cet exemple vous montre comment créer un endpoint de serveur capable de mettre à jour le montant du PaymentIntent :
Cet exemple vous montre comment mettre à jour l’interface utilisateur pour refléter ces modifications côté client :
(async () => { const response = await fetch('/update'); if (response.status === 'requires_payment_method') { const {error} = await elements.fetchUpdates(); } })();
Soumettre le paiement à StripeCôté client
Utilisez stripe.confirmPayment pour effectuer le paiement à l’aide des informations du composant Payment Element. Ajoutez un paramètre return_url à cette fonction pour indiquer la page vers laquelle Stripe doit rediriger l’utilisateur à l’issue du paiement. Votre utilisateur peut être redirigé en premier lieu vers un site intermédiaire, comme une page d’autorisation bancaire, avant d’être redirigé vers la page spécifiée par le paramètre return_
. L’utilisateur sera immédiatement redirigé vers la page return_
après un paiement réussi par carte.
Si vous ne souhaitez pas effectuer de redirection à la fin des paiements par carte, vous pouvez assigner au paramètre redirect la valeur if_
. De cette manière, seuls les clients qui choisissent un moyen de paiement avec redirection seront redirigés.
Veillez à ce que le paramètre return_
corresponde à une page de votre site web qui indique l’état du paiement. Lorsque Stripe redirige le client vers la page return_
, nous fournissons les paramètres de requête d’URL suivants :
Paramètre | Description |
---|---|
payment_ | L’identifiant unique du PaymentIntent . |
payment_ | La clé secrète du client de l’objet PaymentIntent . |
Mise en garde
Si vous disposez d’outils qui assurent le suivi de la session navigateur du client, vous devrez peut-être ajouter le domaine stripe.
à la liste d’exclusion des sites référents. Les redirections font que certains outils créent de nouvelles sessions, ce qui empêche le suivi de la session dans son ensemble.
Utilisez l’un des paramètres de requête pour récupérer le PaymentIntent. Consultez l’état du PaymentIntent pour déterminer les informations à présenter à vos clients. Vous pouvez également ajouter vos propres paramètres de requête lorsque vous ajoutez l’URL return_
; ils seront conservés tout au long du processus de redirection.
Gérer les événements post-paiementCôté serveur
Stripe envoie un événement payment_intent.succeeded à l’issue du paiement. Utilisez l’outil de webhook du Dashboard ou suivez le guide consacré aux webhooks pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.
Plutôt que d’attendre un rappel de votre client, écoutez ces événements. Côté client, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant l’exécution du rappel. Certains clients malintentionnés peuvent d’autre part tenter de manipuler la réponse. En configurant votre intégration de manière à ce qu’elle écoute les événements asynchrones, vous pourrez accepter plusieurs types de moyens de paiement avec une seule et même intégration.
En plus de l’événement payment_
, nous vous recommandons de gérer ces autres événements lorsque vous encaissez des paiements à l’aide de l’Element Payment :
Événement | Description | Action |
---|---|---|
payment_intent.succeeded | Envoyé lorsqu’un client effectue un paiement avec succès. | Envoyez au client une confirmation de commande et traitez sa commande. |
payment_intent.processing | Envoyé lorsqu’un client initie un paiement, mais qu’il ne l’a pas encore finalisé. Dans la plupart des cas, cet événement est envoyé lorsque le client initie un prélèvement bancaire. Il est suivi par un événement payment_ ou payment_ . | Envoyez au client une confirmation de commande qui indique que son paiement est en attente. Pour des marchandises dématérialisées, vous pourrez traiter la commande sans attendre que le paiement soit effectué. |
payment_intent.payment_failed | Envoyé lorsqu’un client effectue une tentative de paiement qui se solde par un échec. | Si un paiement passe de l’état processing à payment_ , proposez au client de retenter le paiement. |
Tester votre intégration
Pour tester votre intégration de paiement personnalisée :
- Créez un Paiement Intent et récupérez la clé secrète du client.
- Renseignez les informations d’un moyen de paiement du tableau suivant.
- Saisissez une date d’expiration postérieure à la date du jour.
- Saisissez un code CVC à 3 chiffres.
- Saisissez un code postal de facturation.
- Envoyez le paiement à Stripe. Vous êtes redirigé(e) vers votre
return_
.url - Accédez au Dashboard et recherchez le paiement sur la page Transactions. Si votre paiement a abouti, il apparaîtra dans cette liste.
- Cliquez sur votre paiement afin d’afficher plus d’informations, par exemple les informations de facturation et la liste des articles achetés. Vous pouvez utiliser ces informations pour traiter votre commande.
Découvrez comment tester votre intégration.
Consultez la section consacrée aux tests pour obtenir des informations supplémentaires sur la manière de tester votre intégration.
FacultatifAjouter d'autres moyens de paiement
Payment Element prend en charge de nombreux moyens de paiement par défaut. Vous devez prendre des mesures supplémentaires pour activer et afficher certains moyens de paiement.
Affirm
Pour utiliser Affirm, vous devez d’abord l’activer dans le Dashboard. Lorsque vous créez un PaymentIntent avec le moyen de paiement Affirm, vous devez inclure une adresse de livraison. Cet exemple suggère de transmettre les informations de livraison côté client après que votre client a sélectionné son moyen de paiement. En savoir plus sur l’utilisation d’Affirm avec Stripe.
Tester Affirm
Découvrez comment tester différents scénarios à l’aide du tableau suivant :
Scénario | Comment tester |
---|---|
Le paiement de votre client avec Affirm aboutit. | Remplissez le formulaire (en prenant soin d’indiquer une adresse de livraison) et authentifiez le paiement. |
Votre client ne parvient pas à s’authentifier sur la page de redirection Affirm. | Remplissez le formulaire et cliquez sur Faire échouer le paiement test sur la page de redirection. |
Afterpay (Clearpay)
Lorsque vous créez un PaymentIntent avec Afterpay comme moyen de paiement, vous devez inclure une adresse de livraison. En savoir plus sur l’utilisation d’Afterpay avec Stripe.
Vous pouvez gérer les moyens de paiement depuis le Dashboard. Stripe gère le renvoi des moyens de paiement admissibles en fonction de facteurs tels que le montant de la transaction, la devise et le tunnel de paiement. L’exemple ci-dessous utilise l’attribut automatic_payment_methods, mais vous pouvez répertorier afterpay_
dans les types de moyens de paiement. Dans la dernière version de l’API, le paramètre automatic_
est facultatif, car Stripe l’active déjà par défaut. Quelle que soit l’option choisie, veillez à activer Afterpay Clearpay dans le Dashboard.
Tester Afterpay (Clearpay)
Découvrez comment tester différents scénarios à l’aide du tableau suivant :
Scénario | Comment tester |
---|---|
Le paiement de votre client avec Afterpay aboutit. | Remplissez le formulaire (en prenant soin d’indiquer une adresse de livraison) et authentifiez le paiement. |
Votre client ne parvient pas à s’authentifier sur la page de redirection Afterpay. | Remplissez le formulaire et cliquez sur Faire échouer le paiement test sur la page de redirection. |
Apple Pay et Google Pay
Lorsque vous activez les paiements par carte bancaire, nous affichons Apple Pay et Google Pay pour les clients dont l’environnement remplit les conditions d’affichage du portefeuille. Pour accepter des paiements provenant de ces portefeuilles, vous devez également :
- Activez-les dans les paramètres des moyens de paiement. Apple Pay est activé par défaut.
- Fournissez votre application via HTTPS en développement et en production.
- Enregistrez votre domaine.
- Récupérez des mises à jour à partir du serveur si vous mettez à jour le montant d’un PaymentIntent pour que la fenêtre modale de paiement du portefeuille reste synchronisée.
Tests régionauxInde
Stripe Elements ne prend pas en charge Google Pay ou Apple Pay pour les comptes et clients Stripe en Inde. Par conséquent, vous ne pouvez pas tester votre intégration Google Pay ou Apple Pay si l’adresse IP du testeur se trouve en Inde, même si le compte Stripe est basé en dehors de l’Inde.
En savoir plus sur l’utilisation d’Apple Pay et de Google Pay avec Stripe.
Prélèvement automatique ACH
Lorsque vous utilisez le composant Element Payment avec le prélèvement automatique ACH comme moyen de paiement, procédez comme suit :
Créez un objet Customer.
Indiquez l’ID du client lors de la création du
PaymentIntent
.Sélectionnez une méthode de vérification.
Lorsque vous utilisez le prélèvement automatique ACH avec le Payment Element, vous pouvez uniquement sélectionner automatic
ou instant
.
En savoir plus sur l’utilisation du prélèvement automatique ACH avec Stripe.
Tester le prélèvement automatique ACH
Scénario | Comment tester |
---|---|
Le paiement de votre client avec un compte bancaire américain et vérification instantanée aboutit. | Sélectionnez Compte bancaire américain et remplissez le formulaire. Cliquez sur l’établissement de test. Pour associer votre compte bancaire, suivez les instructions affichées dans la fenêtre modale. Enfin, cliquez sur le bouton de paiement. |
Le paiement de votre client avec un compte bancaire américain et vérification à l’aide de microversements aboutit. | Sélectionnez Compte bancaire américain et remplissez le formulaire. Cliquez sur Saisir vos coordonnées bancaires manuellement. Pour associer votre compte bancaire, suivez les instructions affichées dans le modal. Vous pouvez utiliser ces numéros de comptes de test. Enfin, cliquez sur le bouton de paiement. |
Votre client ne parvient pas à finaliser le processus de rattachement de son compte bancaire. | Sélectionnez Compte bancaire américain et cliquez sur l’établissement de test ou sur Saisir les coordonnées bancaires manuellement. Fermez la fenêtre modale sans la remplir. |
BLIK
Lorsqu’il utilise Payment Element avec BLIK, l’utilisateur peut fermer la fenêtre modale l’invitant à autoriser le paiement dans son application bancaire. Cela déclenche une redirection vers votre return_
et ne renvoie pas l’utilisateur vers la page de paiement. En savoir plus sur l’utilisation de BLIK avec Stripe.
Afin de gérer la fermeture des fenêtres modales par les utilisateurs au niveau du gestionnaire côté serveur pour votre return_
, inspectez le PaymentIntent et vérifiez si son status
est succeeded
ou requires_
(ce qui signifie que le client a fermé la boîte de dialogue sans autoriser le paiement), puis traitez chaque cas de la manière appropriée.
Moyens de paiement par code QR
En cas d’utilisation du Payment Element avec un moyen de paiement par code QR (WeChat Pay, PayNow, Pix, PromptPay, Cash App Pay), l’utilisateur peut fermer la fenêtre modale dans laquelle est affiché le code. Cette action entraîne une redirection vers votre page return_
et non vers la page de paiement.
Pour gérer la fermeture des fenêtre modales de code QR par les utilisateurs au niveau du gestionnaire côté serveur pour votre return_
, inspectez le PaymentIntent et vérifiez si son status
est succeeded
ou requires_
(ce qui signifie que le client a fermé la boîte de dialogue sans effectuer le paiement), puis traitez chaque cas de la manière appropriée.
Vous pouvez également empêcher la redirection automatique vers votre page return_
en transmettant le paramètre facultatif avancé redirect=if_
, qui permet d’éviter toute redirection lors de la fermeture d’une fenêtre modale de code QR.
Cash App Pay
Le Payment Element affiche un formulaire dynamique différent selon qu’il s’agit d’un site Web de bureau ou d’un site Web mobile, car il utilise différentes méthodes d’authentification du client. En savoir plus sur l’utilisation de Cash App Pay avec Stripe.
PayPal
Pour utiliser PayPal, assurez-vous d’être sur un domaine enregistré.
Divulguer Stripe à vos clients
Stripe recueille des informations sur les interactions des clients avec Elements afin de vous fournir des services, de prévenir la fraude et d’améliorer ses services. Cela inclut l’utilisation de cookies et d’adresses IP pour identifier les Elements qu’un client a vus au cours d’une même session Checkout. Vous êtes responsable de la divulgation et de l’obtention de tous les droits et consentements nécessaires pour que Stripe puisse utiliser les données à cette fin. Pour en savoir plus, visitez notre Centre de confidentialité.