Configurer des paiements futurs
L’API Setup Intents vous permet d’enregistrer les informations de paiement d’un client sans paiement initial. Cette fonction est utile si vous souhaitez configurer des paiements dès l’inscription de vos clients afin de les débiter plus tard, lorsqu’ils sont hors ligne.
Utilisez cette intégration pour configurer des paiements récurrents ou pour créer des paiements ponctuels dont le montant doit être déterminé ultérieurement, généralement après réception du service par votre client.
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.
Remarques
Si vous devez utiliser la confirmation manuelle côté serveur ou si votre intégration nécessite la présentation de moyens de paiement distincts, consultez notre guide des solutions de remplacement.
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 :
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 SetupIntent.
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 clientCôté serveur
Pour configurer un moyen de paiement pour les paiements futurs, vous devez l’associer à un Customer. Créez un objet Customer
lorsque votre client crée un compte chez vous. Les objets Customer
permettent de réutiliser des moyens de paiement et de suivre plusieurs paiements.
Créer un SetupIntentCôté serveur
Remarques
Si vous souhaitez effectuer le rendu du Payment Intent sans créer un SetupIntent au préalable, consultez la documentation sur comment Collecter les informations de paiement avant de créer un Intent.
Un SetupIntent est un objet qui représente votre intention de configurer le moyen de paiement d’un client en vue de paiements futurs. Les moyens de paiement présentés aux clients au cours du processus de paiement sont également inclus dans le SetupIntent. Vous pouvez laisser Stripe afficher automatiquement les moyens de paiement à partir des paramètres du Dashboard ou vous pouvez les afficher manuellement.
À moins que votre intégration ne nécessite une option basée sur du code pour proposer des moyens de paiement, Stripe recommande l’option automatisée. En effet, Stripe évalue la devise, les restrictions sur les moyens de paiement et d’autres paramètres pour dresser la liste des moyens de paiement pris en charge. Les moyens de paiement qui augmentent le taux de conversion et qui sont les plus adaptés à la devise et au lieu de résidence des clients sont prioritaires. Ceux de moindre priorité sont masqués dans un menu déroulant.
Récupérer la clé secrète du client
L’objet SetupIntent 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.
Utilisation de Radar
Lors de l’enregistrement du moyen de paiement d’un client sans paiement initial, Radar n’agit pas sur le SetupIntent par défaut. Si vous souhaitez activer cette option par défaut, accédez aux Paramètres de Radar et activez **Utiliser Radar sur les moyens de paiement enregistrés pour une utilisation ultérieure **.
Collecter les informations de paiementCôté client
Vous pouvez à présent collecter 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 composant Payment Element contient un iframe qui envoie de manière sécurisée des informations de paiement à Stripe via une connexion HTTPS. 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 faire cela, mais n’oubliez pas d’activer le protole HTTPS lorsque tout est prêt.
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 à la conception de votre site en transmettant l’objet Appearance dans les options
lors de la création du fournisseur Elements
.
Demander le jeton marchand d’Apple Pay
Si vous acceptez les paiements Apple Pay, nous vous recommandons de configurer l’interface Apple Pay pour renvoyer un jeton marchand afin d’activer les transactions initiées par le marchand. Demander le type de jeton marchand concerné dans le composant Payment Element. L’exemple suivant montre une demande pour le jeton marchand de paiements différés.
const paymentElement = elements.create('payment', { applePay: { deferredPaymentRequest: { paymentDescription: 'My deferred payment', managementURL: 'https://example.com/billing', deferredBilling: { amount: 2500, label: 'Deferred Fee', deferredPaymentDate: new Date('2024-01-05') }, } }, // Other options });
Configurer une devise
Lors de l’utilisation de SetupIntents avec automatic_payment_methods, le passage de devise dans les options
lors de la création du fournisseur Elements
influence les moyens de paiement rendus par le Payment Element. Le Payment Element active les moyens de paiement dans le Dashboard Stripe qui prennent en charge la devise fournie. Consultez la section Options d’intégration des moyens de paiement pour en savoir plus sur ce qui est pris en charge.
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.
Envoyer les informations de paiement à StripeCôté client
Utilisez stripe.confirmSetup pour effectuer la configuration à l’aide des informations collectées par le Payment Element. Fournissez une return_url à cette fonction afin que Stripe puisse rediriger l’utilisateur une fois la configuration terminée. Nous pouvons d’abord le rediriger vers un site intermédiaire, comme une page d’autorisation bancaire, avant de le rediriger vers l’URL return_url
.
Si votre client enregistre ses informations de carte, nous le redirigeons immédiatement vers l’URL de retour return_url
lorsque la configuration est réussie. Si vous ne souhaitez pas effectuer de redirection pour les 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.
Assurez-vous que le return_url
correspond à une page de votre site Web qui fournit le statut du SetupIntent
. Stripe fournit les paramètres de requête d’URL suivants pour vérifier l’état lorsque nous redirigeons le client vers l’URL return_url
. Vous pouvez également ajouter vos propres paramètres de requête lorsque vous fournissez l’URL return_url
, et ces derniers persistent tout au long du processus de redirection.
Paramètre | Description |
---|---|
setup_intent | L’identifiant unique du SetupIntent . |
setup_intent_client_secret | La clé secrète du client de l’objet SetupIntent |
Vous pouvez utiliser stripe.retrieveSetupIntent pour récupérer le SetupIntent à l’aide du paramètre de requête setup_intent_client_secret
. La confirmation réussie du SetupIntent enregistre l’ID PaymentMethod
résultant (dans result.setupIntent.payment_method
) pour le Customer
fourni.
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.
Débiter ultérieurement le moyen de paiement enregistréCôté serveur
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. Lorsque vous présntez à votre client final des moyens de paiement antérieurs pour des achats futurs, assurez-vous de répertorier les moyens de paiement pour lesquels vous avez recueilli le consentement du client afin d’enregistrer les informations du moyen de paiement pour cette utilisation future spécifique. Pour différencier les moyens de paiement associés aux clients qui peuvent ou non être présentés à votre client final en tant que moyen 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 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.
Lorsqu’une tentative de paiement échoue, la requête échoue également avec un code d’état HTTP 402 et l’état du PaymentIntent est requires_payment_method Vous devez demander à votre client de revenir à votre application pour finaliser le paiement (par exemple, en envoyant un courriel ou une notification dans l’application).
Vérifiez le code d’erreur généré par la bibliothèque d’API. Si le paiement a échoué en raison d’un code de refus de paiement authentication_required, utilisez la clé secrète du client du Paymentintent refusé avec confirmcardPayment pour permettre au client d’authentifier le paiement.
const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ // The client secret of the PaymentIntent clientSecret, confirmParams: { return_url: 'https://example.com/order/123/complete', }, }); if (error) { // This point will only be reached if there is an immediate error when // confirming the payment. Show error to your customer (for example, payment // details incomplete) const messageContainer = document.querySelector('#error-message'); messageContainer.textContent = error.message; } else { // Your customer will be redirected to your `return_url`. For some payment // methods like iDEAL, your customer will be redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } });
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 a échoué pour d’autres raisons, par exemple parce que le solde est insuffisant, dirigez votre client vers une page de paiement sur laquelle il pourra saisir un nouveau moyen de paiement. Vous pouvez ensuite réutiliser l’objet PaymentIntent existant pour réessayer le paiement avec les informations du nouveau moyen de paiement.
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 à 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
.
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é.