Enregistrer les informations de paiement lors du paiement
Utilisez l’API Payment Intents pour enregistrer les 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.
Conformité
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. These requirements generally apply if you want to save your customer’s payment method for future use, such as displaying a customer’s payment method to them in the checkout flow for a future purchase or charging them when they’re not actively using your website or app. Add terms to your website or app that state how you plan to save payment method details and allow customers to opt in.
When you save a payment method, you can only use it for the specific usage you have included in your terms. To charge a payment method when a customer is offline and save it as an option for future purchases, make sure that you explicitly collect consent from the customer for this specific use. For example, include a “Save my payment method for future use” checkbox to collect consent.
To charge them when they’re offline, make sure your terms include the following:
- 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, créez un compte Stripe ou connectez-vous à votre compte.
Utilisez nos bibliothèques officielles pour accéder à l’API de Stripe depuis 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.
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 autres moyens de paiement courants qui peuvent vous aider à atteindre plus de clients, mais nous vous recommandons d’activer d’autres moyens de paiement pertinents pour votre entreprise et vos clients. Consultez la section Options d’intégration des moyens de paiement pour plus d’informations sur la prise en charge des produits et des moyens de paiement, et notre page de tarification pour plus d’informations.
Créer un PaymentIntentCôté serveur
Remarques
Si vous souhaitez effectuer le rendu du Payment Element sans créer un PaymentIntent au préalable, consultez la documentation sur comment Collecter les informations de paiement avant de créer un Intent.
L’objet PaymentIntent représente votre intention de collecter le paiement d’un client et suit les tentatives de débit et les changements d’état tout au long du processus de paiement.
Créer le PaymentIntent
Créez un PaymentIntent sur votre serveur avec un montant et une devise. Dans la dernière version de l’API, la définition du paramètre automatic_payment_methods
est facultative, car Stripe active sa fonctionnalité par défaut. Vous pouvez gérer les moyens de paiement à partir du Dashboard. Stripe gère le retour des moyens de paiement admissibles en fonction de facteurs tels que le montant, la devise et le flux de paiement de la transaction.
Créez un PaymentIntent sur votre serveur. Précisez un montant, une devise et un client. Dans la dernière version de l’API, la définition du paramètre automatic_payment_methods
est facultative, car Stripe active sa fonctionnalité par défaut. Activez setup_future_usage. Les moyens de paiement que vous avez configurés dans le Dashboard sont automatiquement ajoutés au Payment Intent.
Si vous ne souhaitez pas utiliser le Dashboard ou si vous souhaitez préciser des moyens de paiement manuellement, vous pouvez les répertorier à l’aide de payment_method_types
attribute.
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 de votre client à l’aide du Payment Element. Le Payment Element est un composant d’interface utilisateur préconfiguré qui facilite la collecte des informations de paiement pour de nombreux moyens 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.
If you do choose to use an iframe and want to accept Apple Pay or Google Pay, the iframe must have the allow attribute set to equal "payment *"
.
Pour que votre intégration fonctionne, l’adresse de la page de paiement doit commencer par https://
plutôt que http://
. Vous pouvez tester votre intégration sans utiliser le protocole HTTPS, mais n’oubliez pas de l’activer lorsque tout est prêt pour 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 les taxes 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 pour accepter les paiements Apple Pay, nous vous recommandons de configurer l’interface Apple Pay pour retourner un jeton marchand afin d’activer les transactions initiées par le marchand. Demander le type de jeton marchand approprié dans Payment Element.
Envoyer le paiement à StripeCôté client
Utilisez stripe.confirmPayment pour effectuer le paiement à l’aide des informations de l’Element Payment. 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_url
. L’utilisateur sera immédiatement redirigé vers la page return_url
après un paiement réussi par carte.
Si vous ne souhaitez pas effectuer de redirection à la fin des paiements par carte, vous pouvez définir redirect sur if_required
. De cette manière, seuls les clients qui choisissent un moyen de paiement avec redirection seront redirigés.
Remarques
L’exécution de la méthode stripe.confirmPayment
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.
Si le paiement aboutit, la carte est enregistrée pour l’objet Customer. Le champ customer du PaymentMethod indique alors cette information. À ce stade, associez l’ID de l’objet Customer à votre représentation interne du client, le cas échéant. Vous pouvez désormais utiliser l’objet PaymentMethod sauvegardé pour encaisser les nouveaux paiements de votre client sans avoir à lui redemander ses informations de paiement.
Veillez à ce que le paramètre return_url
corresponde à une page de votre site Web qui indique l’état du paiement. Lorsque Stripe redirige le client vers la page return_url
, nous fournissons les paramètres de requête d’URL suivants :
Paramètre | Description |
---|---|
payment_intent | L’identifiant unique du PaymentIntent . |
payment_intent_client_secret | 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.com
à 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 la requête pour récupérer le PaymentIntent. Examinez l’état du PaymentIntent pour décider de ce que vous voulez montrer à vos clients. Vous pouvez également ajouter vos propres paramètres de requête lorsque vous fournissez return_url
, qui perdureront sur tout le 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_debit
. Vous devez donc utiliser la requête sepa_debit
pour les moyens de paiement enregistrés.
Compliance
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. When rendering past payment methods to your end customer for future purchases, make sure you’re listing payment methods where you’ve collected consent from the customer to save the payment method details for this specific future use. To differentiate between payment methods attached to customers that can and can’t be presented to your end customer as a saved payment method for future purchases, use the allow_redisplay parameter.
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 moyen de paiement à débiter, répertoriez les moyens de paiement associés à votre client. Cet exemple utilise des cartes, mais vous pouvez répertorier n’importe quel type de moyen de paiement 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 :
- Assignez la valeur
true
à off_session afin d’indiquer que le client n’est pas dans votre flux de paiement lors d’une tentative de paiement et ne peut pas répondre à une demande d’authentification faite par un partenaire, comme un émetteur de cartes, une institution financière ou un autre établissement financier. Si, au cours de votre flux de paiement, un partenaire demande une authentification, Stripe demandera des exemptions à l’aide des informations client provenant d’une transaction effectuée pendant une session précédente. Si les conditions d’exemption ne sont pas respectées, le PaymentIntent peut générer une erreur. - Assignez la valeur
true
à la propriété confirm du PaymentIntent, ce qui aura pour effet de générer immédiatement une confirmation à la création du PaymentIntent. - Renseignez l’ID du PaymentMethod dans payment_method et l’ID de l’objet Customer dans customer.
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 PaymentIntent à l’aide d’iDEAL, de Bancontact ou de Sofort génère un PaymentMethod de type prélèvement SEPA. Le prélèvement SEPA est un moyen de paiement à notification différée qui passe à l’état intermédiaire processing
avant de basculer quelques jours plus tard à l’état succeeded
ou requires_payment_method
.