Enregistrer le moyen de paiement d'un client lors d'un paiement
Découvrez comment enregistrer le mode de paiement du client lorsque vous confirmez un PaymentIntent ou une session Checkout.
Remarques
L’API Checkout Sessions prend également en charge l’enregistrement des modes de paiement lorsque les clients l’utilisent pour un paiement. Pour en savoir plus, consultez notre guide sur l’API Checkout Sessions.
Utilisez l’API Payment Intents pour enregistrer des informations de paiement à partir d’un achat. Il existe plusieurs cas d’usage :
- Débiter un client pour une commande en ligne et enregistrer les informations pour des achats ultérieurs.
- Entreprendre le premier paiement d’une série de paiements récurrents.
- Débiter un acompte et enregistrer les détails pour facturer plus tard le montant total.
Transactions avec présentation de la carte
Les transactions avec présentation de la carte, telles que les paiements via Stripe Terminal, utilisent un processus différent pour enregistrer le mode de paiement. Pour en savoir plus, consultez la documentation de Terminal.
Conformité
Vous êtes responsable de votre conformité à toutes les lois, réglementations et règles du réseau applicables lorsque vous enregistrez les informations de paiement d’un client. Ces exigences s’appliquent généralement si vous souhaitez enregistrer le moyen de paiement de votre client pour une utilisation future, comme en affichant le moyen de paiement d’un client dans le flux de paiement pour un achat futur ou en le facturant lorsqu’il n’utilise pas activement votre site Web ou votre application. Ajoutez des conditions à votre site Web ou à votre application qui indiquent comment vous prévoyez enregistrer les informations du moyen de paiement et permettez aux clients de donner leur consentement.
Lorsque vous enregistrez un moyen de paiement, vous ne pouvez l’utiliser que pour l’usage précis que vous avez prévu dans vos conditions. Pour facturer un moyen de paiement lorsqu’un client est hors ligne et l’enregistrer comme option pour des achats futurs, assurez-vous de recueillir explicitement le consentement du client pour cet usage précis. Par exemple, ajoutez une case à cocher indiquant « Enregistrer mon moyen de paiement pour une utilisation ultérieure » pour recueillir le consentement du client.
Pour les facturer lorsqu’ils sont hors ligne, assurez-vous que vos conditions comprennent les éléments suivants :
- Que le client accepte que vous préleviez un paiement ou une série de paiements en son nom pour des transactions spécifiées.
- Le calendrier et la fréquence des paiements prévus (par exemple, si les frais concernent des versements planifiés, des paiements d’abonnement ou des recharges non planifiées).
- La façon dont vous déterminez le montant du paiement.
- Vos conditions d’annulation, si le moyen de paiement est un service d’abonnement.
Assurez-vous de conserver une trace de l’accord écrit de votre client à ces conditions.
Configurer StripeCôté serveur
Tout d’abord, inscrivez-vous pour créer un compte Stripe.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe à partir de votre application :
Créer un clientCôté serveur
Pour configurer une carte en vue de paiements futurs, vous devez l’associer à un client. 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.
Lorsque la création réussit, l’objet Customer 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 du Dashboard.
Activer les moyens de paiement
Accédez aux paramètres des moyens de paiement et activez les moyens de paiement que vous souhaitez prendre en charge. Vous devez activer au moins un moyen de paiement pour créer un PaymentIntent.
Par défaut, Stripe active les cartes et les autres modes de paiement courants qui peuvent vous permettre d’atteindre davantage de clients. Nous vous recommandons toutefois d’activer d’autres modes de paiement pertinents pour votre entreprise et vos clients. Consultez la page Prise en charge des modes de paiement pour en savoir plus sur la prise en charge des produits et des modes de paiement, et notre page de tarification pour prendre connaissance des frais que nous appliquons.
Créer un paiementCô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.
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.
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.
Remarques
L’exécution de la méthode stripe.
peut prendre plusieurs secondes. Pendant ce temps, bloquez le renvoi de votre formulaire et affichez un indicateur d’attente. Si vous recevez une erreur, montrez-la au client, réactivez le formulaire et masquez l’indicateur d’attente. Si le client doit effectuer des actions supplémentaires pour finaliser le paiement, comme une authentification, Stripe.js le guide tout au long de ce processus.
À l’issue du paiement, la carte sera enregistrée dans l’objet Customer. Le champ customer du PaymentMethod indique cette information. À ce stade, associez l’ID de l’objet Customer à votre propre représentation interne d’un client, si vous en avez une. Vous pouvez désormais utiliser l’objet PaymentMethod enregistré pour encaisser les nouveaux paiements de votre client sans lui demander à nouveau ses informations de paiement.
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.
Débiter le moyen de paiement enregistré ultérieurementCôté serveur
Alerte
bancontact
, ideal
et sofort
sont les moyens de paiement ponctuel par défaut. Lorsque vous les configurez pour une utilisation future, ils génèrent un type de moyen de paiement réutilisable sepa_
. Vous devez donc utiliser la requête sepa_
pour les moyens de paiement enregistrés.
Conformité
Lorsque vous enregistrez les informations de paiement d’un client, vous êtes responsable du respect de toutes les lois, réglementations et règles du réseau applicables. Lorsque vous présentez au client final des modes de paiement précédemment utilisés en vue d’effectuer des achats futurs, assurez-vous de répertorier les modes de paiement pour lesquels vous avez obtenu le consentement du client afin d’enregistrer les informations du mode de paiement pour cette utilisation future spécifique. Pour différencier les modes de paiement associés aux clients qui peuvent ou non être présentés au client final en tant que mode de paiement enregistré pour des achats futurs, utilisez le paramètre allow_redisplay.
Au moment de débiter votre client hors session, utilisez l’ID des objets Customer et PaymentMethod pour créer un PaymentIntent. Pour trouver un mode de paiement à débiter, répertoriez les modes de paiement associés à votre client. Cet exemple répertorie des cartes, mais vous pouvez répertorier n’importe quel type de carte pris en charge.
Après avoir obtenu les ID de Customer et de PaymentMethod, créez un PaymentIntent indiquant le montant et la devise du paiement. Définissez quelques autres paramètres afin d’effectuer le paiement hors session :
- Définissez l’attribut off_session à
true
pour indiquer que le client ne se trouve pas dans votre flux de paiement lors d’une tentative de paiement, et qu’il ne peut donc pas répondre à une demande d’authentification effectuée par un partenaire, comme un émetteur de cartes, une institution financière ou un autre établissement de paiement. Si un partenaire demande une authentification dans le flux de paiement, Stripe demandera une exemption en s’appuyant sur les informations utilisées par le client pendant une session précédente. Si les conditions d’exemption ne sont pas remplies, le PaymentIntent peut générer une erreur. - Définissez la valeur
true
à la propriété confirm du PaymentIntent, ce qui aura pour effet de générer immédiatement une confirmation lors de la création du PaymentIntent. - Définissez payment_method sur l’ID du PaymentMethod et customer sur l’ID du client.
Tester l'intégration
Utilisez les informations de paiement et la page de redirection test afin de vérifier votre intégration. Cliquez sur les onglets ci-après pour obtenir des informations sur chacun des moyens de paiement.
Tester le traitement d’un PaymentMethod enregistré de type prélèvement SEPA
La confirmation du SetupIntent du PaymentIntent