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. Découvrez comment cette intégration se compare aux autres types d’intégration de Stripe.
Le code côté client et côté serveur crée un formulaire de paiement qui accepte divers modes de paiement.
Effort d'intégration
Type d'intégration
Combiner les composants d’interface utilisateur dans un flux de paiement personnalisé
Personnalisation de l'interface utilisateur
Personnalisation au niveau CSS avec l’API Apparence
Vous souhaitez utiliser Stripe Tax, les réductions, l'expédition ou la conversion de devises?
Stripe a développé une intégration pour le composant Payment Element qui gère pour vous les taxes, les réductions, les frais de livraison et la conversion des devises. Pour en savoir plus, consultez le guide dédié à la création d’une page de paiement.
Configurer StripeCôté serveur
Tout d’abord, créez un compte Stripe ou connectez-vous à votre compte.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer un PaymentIntentCôté serveur
Remarques
Si vous souhaitez présenter le Payment Element avant de créer un 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 attributs amount et currency. Dans la dernière version de l’API, la définition du paramètre automatic_
est facultative, car Stripe active sa fonctionnalité par défaut. Vous pouvez gérer les modes de paiement à partir du Dashboard. Stripe gère le retour des modes de paiement admissibles en fonction de facteurs tels que le montant de la transaction, la devise et le flux de paiement.
Stripe utilise vos paramètres de modes de paiement pour afficher les modes de paiement que vous avez activés. Pour voir comment vos modes de paiement s’affichent pour les clients, saisissez un identifiant de transaction ou définissez un montant et une devise de commande dans le Dashboard. Pour remplacer les modes de paiement, répertoriez manuellement ceux que vous souhaitez activer à l’aide de l’attribut payment_method_types.
Remarques
Décidez toujours du montant à débiter côté serveur, un environnement sécurisé, plutôt que côté client. Cela permet d’éviter que des clients malveillants puissent définir leurs propres prix.
Récupérer la clé secrète du client
L’objet PaymentIntent comprend une clé secrète du client utilisée côté client pour effectuer le processus de paiement en toute sécurité. Vous pouvez utiliser différentes approches pour transmettre cette clé au côté client.
Collecter les informations de paiementCôté client
Collectez les informations de paiement du client à l’aide du Payment Element. Le Payment Element est un composant d’interface utilisateur préconfiguré qui simplifie la collecte des informations de paiement pour divers modes de paiement.
Le Payment Element contient une balise iframe qui envoie de manière sécurisée les informations de paiement à Stripe par une connexion HTTPS. Évitez de placer le Payment Element dans une autre balise iframe, car certains moyens de paiement nécessitent une redirection vers une autre page pour obtenir la confirmation du paiement.
Si vous choisissez d’utiliser un iframe et que vous souhaitez accepter Apple Pay ou Google Pay, l’attribut allow iframe doit être défini à "payment *"
.
Pour que votre intégration fonctionne, l’adresse de la page de paiement doit commencer par https://
plutôt que par http://
. Vous pouvez tester votre intégration sans utiliser le protocole HTTPS, mais n’oubliez pas de l’activer lorsque vous serez prêt(e) à accepter des paiements réels.
Le 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 remplir toutes les informations de paiement nécessaires.
Personnaliser l’apparence
Personnalisez le Payment Element pour l’adapter à l’apparence de votre site en transmettant l’objet Appearance dans les options
lors de la création du fournisseur Elements
.
Collecter les adresses
Par défaut, le Payment Element recueille uniquement les informations de facturation nécessaires. Pour collecter l’adresse de facturation complète d’un client (par exemple, pour calculer la taxe sur les biens et services numériques) ou l’adresse de livraison, utilisez l’Address Element.
Demander le jeton marchand d’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 jeton marchand afin d’activer les transactions effectuées par le marchand. Demander le type de jeton marchand approprié dans le composant 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 modes de paiement de vos clients en vue d’une utilisation ultérieure. Cette section vous montre comment intégrer la fonctionnalité d’enregistrement des modes de paiement, qui permet au Payment Element :
- Inviter les acheteurs à consentir à enregistrer un moyen de paiement
- Enregistrer les moyens de paiement lorsque les acheteurs donnent leur consentement
- Afficher aux acheteurs les moyens de paiement enregistrés pour leurs prochains achats
- Mise à jour automatique des cartes perdues ou expirées lorsque les clients les remplacent

Enregistrez les modes de paiement.

Réutilisez un mode de paiement précédemment enregistré.
Activer l’enregistrement du moyen de paiement dans le Payment Element
Lors de la création d’un PaymentIntent sur votre serveur, vous créez également une session CustomerSession fournissant un ID d’objet Customer et activant le composant payment_element pour votre session. Configurez les fonctionnalités des modes 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 mode de paiement. Ainsi, vous enregistrez automatiquement le mode de paiement en vue d’une utilisation ultérieure, même si le client ne choisit pas explicitement de l’enregistrer.
Avertissement
Autoriser les clients à retirer les modes de paiement qu’ils ont enregistrés via l’activation de payment_method_remove a une incidence sur les abonnements qui dépendent de ce mode de paiement. Le retrait du mode de paiement dissocie le PaymentMethod de cet objet Customer.
Votre instance Elements utilise la clé secrète du client de la session CustomerSession pour accéder aux modes de paiement enregistrés de ce client. Traitez les erreurs correctement lorsque vous créez la session CustomerSession. Si une erreur se produit, vous n’avez pas besoin de fournir la clé secrète du client de la session CustomerSession à l’instance Elements, car ceci est facultatif.
Créez l’instance Elements à l’aide des clés secrètes du client pour le PaymentIntent et la CustomerSession. Ensuite, utilisez cette instance 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 récupération du CVC
Vous pouvez également spécifier require_
lors de la création du PaymentIntent afin d’exiger à nouveau la collecte du CVC lorsque le client paie par carte.
Détecter la sélection d’un moyen de paiement enregistré
Pour contrôler le contenu dynamique lorsqu’un moyen de paiement enregistré est sélectionné, écoutez l’événement change
de Payment Element, qui est rempli avec 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 } })
FacultatifLien sur votre page de paiementCôté client
Utilisez Link dans le Payment Element pour permettre à vos clients de payer plus rapidement. Vous pouvez remplir automatiquement les informations de tout client connecté qui utilise déjà Link, qu’il ait initialement enregistré ou non 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 modes de paiement.

Recueillir l’adresse de courriel d’un client pour l’authentification ou l’inscription à Link
Options d’intégration
Il existe deux façons d’intégrer Link au Payment Element. Parmi ceux-ci, Stripe recommande de transmettre l’adresse de courriel du client au Payment si disponible. N’oubliez pas de tenir compte du fonctionnement de votre processus de paiement lorsque vous choisissez entre ces options :
Option intégration | Flux de paiement | Description |
---|---|---|
Transmettre l’adresse courriel d’un client au Payment Element Recommandé |
| Transmettez par programmation une adresse de courriel client au Payment Element. Dans ce scénario, un client s’authentifie directement auprès de Link dans le formulaire de paiement au lieu d’un composant d’interface utilisateur distinct. |
Collecter l’adresse courriel d’un client dans Payment Element | Vos clients saisissent leur adresse de courriel et s’authentifient ou s’inscrivent avec Link directement dans le Payment Element lors du paiement. | Si un client ne s’est pas inscrit avec Link et qu’il choisit un moyen de paiement pris en charge dans le Payment Element, il sera invité à enregistrer ses informations à l’aide de Link. Pour les clients déjà inscrits, Link renseigne automatiquement leurs informations de paiement. |
FacultatifRécupérer des mises à jour à partir du serveurCôté client
Vous pouvez mettre à jour les attributs du PaymentIntent après la présentation du Payment Element, tels que le montant (par exemple, les codes de réduction ou les frais de livraison). Vous pouvez mettre à jour le PaymentIntent sur votre serveur, puis appeler elements.fetchUpdates pour faire figurer le nouveau montant dans le Payment Element. Cet exemple vous montre comment créer le point de terminaison du serveur qui met à jour le montant sur le 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(); } })();
Envoyer le paiement à StripeCôté client
Utilisez stripe.confirmPayment pour finaliser le paiement à l’aide des informations du Payment Element. Ajoutez une return_url à cette fonction pour indiquer où Stripe doit rediriger l’utilisateur une fois le paiement effectué. Votre utilisateur peut être d’abord redirigé vers un site intermédiaire, comme une page d’autorisation bancaire, avant d’être redirigé vers la page return_
. Une fois que le paiement par carte a fonctionné, le client est immédiatement redirigé vers la page return_
.
Si vous ne souhaitez pas effectuer de redirection pour les paiements par carte après la finalisation, vous pourrez définir la redirection à if_
. De cette manière, seuls les clients qui choisissent un mode 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 . |
Avertissement
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 ce qui doit être présenté à vos clients. Vous pouvez également ajouter vos propres paramètres de requête lorsque vous fournissez l’objet 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 sur les webhooks pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par courriel à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.
Écoutez ces événements plutôt que d’attendre un rappel de votre client. Du côté client, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant même l’exécution du rappel, et des clients malveillants pourraient 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 intégration.
En plus de gérer l’événement payment_
, nous vous recommandons de gérer les autres événements suivants lorsque vous encaissez des paiements à l’aide du Payment Element :
Événement | Description | Action |
---|---|---|
payment_intent.succeeded | Envoyé lorsqu’un client a effectué un paiement. | Envoyez au client une confirmation de commande et traitez sa commande. |
payment_intent.processing | Envoyé lorsqu’un client a entrepris un paiement, mais qu’il ne l’a pas encore finalisé. Dans la plupart des cas, cet événement est envoyé lorsque le client entreprend 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, nous vous recommandons de traiter la commande sans attendre que le paiement soit effectué. |
payment_intent.payment_failed | Envoyé lorsqu’un client tente d’effectuer un paiement, mais que le paiement échoue. | Si un paiement passe de l’état processing à l’état payment_ , proposez au client de retenter le paiement. |
Testez votre intégration
Pour tester votre intégration de paiement personnalisée :
- Créez un Payment Intent et récupérez la clé secrète du client.
- Remplissez le formulaire de paiement et indiquez-y une méthode qui provient 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.
- Soumettez le paiement à Stripe. Vous êtes alors redirigé vers votre
return_
.url - Accédez au Dashboard et recherchez le paiement sur la page Transactions. Si votre paiement a été effectué, vous le verrez dans cette liste.
- Cliquez sur votre paiement pour voir plus d’informations, comme les informations de facturation et la liste des articles achetés. Vous pouvez utiliser ces informations pour traiter la commande.
Découvrez comment tester votre intégration.
Consultez la section Test pour obtenir des informations supplémentaires sur la manière de tester votre intégration.
FacultatifAjouter d'autres moyens de paiement
Le Payment Element prend en charge de nombreux moyens de paiement par défaut. Vous devez prendre des mesures supplémentaires pour activer et faire afficher certains moyens de paiement.
Affirm
Pour commencer à utiliser Affirm, vous devez 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 sur le client après que le client ait sélectionné son moyen de paiement. En savoir plus sur l’utilisation de Affirm avec Stripe.
Tester Affirm
Apprenez 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, puis 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 de Afterpay avec Stripe.
Vous pouvez gérer les modes de paiement à partir du Dashboard. Stripe gère le retour des modes de paiement admissibles en fonction de facteurs tels que le montant de la transaction, la devise et le flux de paiement. L’exemple ci-dessous utilise l’attribut automatic_payment_methods, mais vous pouvez répertorier afterpay_
avec les types de modes de paiement. Dans la dernière version de l’API, la définition du paramètre automatic_
est facultative, car Stripe active sa fonctionnalité par défaut. Quelle que soit l’option que vous choisissez, assurez-vous d’activer Afterpay Clearpay dans le Dashboard.
Tester les paiements avec Afterpay (Clearpay)
Apprenez comment tester différents scénarios à l’aide du tableau suivant :
Scénario | Comment tester |
---|---|
Votre client paie avec Afterpay sans problème. | 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, puis cliquez sur Faire échouer le paiement test sur la page de redirection. |
Apple Pay et Google Pay
Lorsque vous activez les paiements par carte, nous affichons Apple Pay et Google Pay pour les clients dont l’environnement remplit les conditions d’affichage du portefeuille numérique. Pour accepter les paiements de ces portefeuilles numériques, vous devez également :
- Activez-les dans vos paramètres des moyens de paiement. Apple Pay est activé par défaut.
- Utilisez votre application via HTTPS en mode développement et production.
- Enregistrez votre domaine.
- Récupérer 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 numérique reste synchronisée.
Tests régionauxInde
Stripe Elements ne prend pas en charge Google Pay ou Apple Pay pour les comptes et les 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 est en Inde, même si le compte Stripe est hébergé en dehors de l’Inde.
Pour en savoir plus sur l’utilisation de Apple Pay et Google Pay avec Stripe.
Prélèvement automatique ACH
Lorsque vous utilisez l’Element Payment avec le prélèvement automatique ACH comme moyen de paiement, procédez comme suit :
Créer un objet Customer.
Spécifiez l’ID du client lors de la création du
PaymentIntent
.Sélectionner une méthode de vérification
Lorsque vous utilisez le moyen de paiement par prélèvement automatique ACH avec le Payment Element, vous ne pouvez sélectionner que 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 |
---|---|
Votre client paie avec un compte bancaire américain par vérification immédiate sans problème. | Sélectionnez Compte bancaire américain et remplissez le formulaire. Cliquez sur l’institution de test. Pour associer votre compte bancaire, suivez les instructions affichées dans la fenêtre modale. Enfin, cliquez sur le bouton de paiement. |
Votre client paie avec un compte bancaire américain par microdépôts sans problème. | Sélectionnez Compte bancaire américain et remplissez le formulaire. Cliquez sur Saisie manuelle des coordonnées bancaires. Suivez les instructions de la fenêtre modale pour associer votre compte bancaire. Vous pouvez utiliser ces numéros de compte test. Cliquez sur le bouton de paiement. |
Votre client ne parvient pas à terminer le processus de liaison du compte bancaire. | Sélectionnez Compte bancaire américain et cliquez sur l’institution de test ou sur Saisir les coordonnées bancaires manuellement. Fermez la fenêtre modale sans la remplir. |
BLIK
Lorsque vous utilisez le Payment Element avec BLIK, l’utilisateur peut fermer la fenêtre modale pour autoriser le paiement dans son application. 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.
Pour gérer les situations où des utilisateurs ferment des boîtes de dialogue modales, accédez au gestionnaire côté serveur de votre return_
, et vérifiez si le paramètre status
a pour valeur succeeded
ou requires_
(ce qui signifie que le client a fermé la boîte de dialogue sans effectuer le paiement), puis traitez chaque cas comme il convient.
Moyens de paiement par code QR
Lorsque vous utilisez le 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 de dialogue sur laquelle est affichée le code. Cette action entraîne une redirection vers votre page return_
et non pas vers la page de paiement.
Pour gérer les situations où des utilisateurs ferment des boîtes de dialogue modales du code QR, accédez au gestionnaire côté serveur de votre return_
, et vérifiez si le paramètre status
a pour valeur succeeded
ou requires_
(ce qui signifie que le client a fermé la boîte de dialogue sans effectuer le paiement), puis traitez chaque cas comme il convient.
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 après la fermeture de la fenêtre modale du code QR.
Paiement en espèces par application
Le Payment Element affiche un formulaire dynamique différemment sur le Web de bureau ou le 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 que vous êtes sur un domaine enregistré.
Présenter les informations de Stripe à vos clients
Stripe recueille des informations sur les interactions des clients avec Elements pour vous fournir des services, prévenir la fraude et améliorer ses services. Cela inclut l’utilisation de témoins et d’adresses IP pour identifier les Elements qu’un client a vus au cours d’une seule session de paiement. Vous êtes responsable de la divulgation et de l’obtention de tous les droits et consentements nécessaires pour permettre à Stripe d’utiliser les données de cette manière. Pour en savoir plus, rendez-vous sur notre centre de confidentialité.