Migrer vers Payment Element avec l’API Payment Intents
Acceptez de nombreux moyens de paiement avec un seul Element.
Remarque
Si votre intégration utilise encore l’API Charges avec des tokens, suivez d’abord le guide de migration vers l’API Payment Intents.
Vous souhaitez utiliser Stripe Billing, Tax, les remises, les frais de livraison ou la conversion de devises ?
Nous développons une intégration de Payment Element qui gère les abonnements, les taxes, les réductions, les frais de livraison et la conversion des devises. Pour en savoir plus, consultez la page Concevoir une page de paiement.
Auparavant, chaque moyen de paiement (carte, iDEAL, etc.) nécessitait un Element distinct. En passant à le composant Element Payment, vous pourrez utiliser différents moyens de paiement avec un seul composant Element.
PaymentIntents et SetupIntents ont chacun leur propre lot de politiques de migration. Consultez le guide adéquat à votre chemin d’intégration, dont l’exemple de code.
Si votre intégration existante utilise l’API Setup Intents pour les paiements ultérieurs, procédez comme suit pour utiliser le Payment Element.
Activer des moyens de paiement
Mise en garde
Ce chemin d’intégration ne prend pas en charge BLIK ou les prélèvements automatiques qui utilisent le Système automatisé de compensation et de règlement (SACR).
Affichez vos 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 bancaires et les autres moyens de paiement courants qui peuvent vous permettre d’atteindre davantage de clients. Nous vous recommandons toutefois d’activer d’autres moyens de paiement pertinents pour votre entreprise et vos clients. Consultez la page Prise en charge des moyens de paiement pour en savoir plus sur la prise en charge des produits et des moyens de paiement, et notre page des tarifs pour prendre connaissance des frais que nous appliquons.
Mettre à jour l'instance d'ElementsCôté client
Ensuite, mettez à jour votre code côté client pour transmettre les paramètres mode
et currency
lorsque vous créez l’instance Elements. Pour une utilisation avec un SetupIntent, définissez le paramètre mode
sur 'setup'
et le paramètre currency
sur la devise dans laquelle vous comptez facturer votre client.
FacultatifOptions d'éléments supplémentairesCôté client
L’objet Elements accepte des options supplémentaires qui ont une incidence sur l’encaissement des paiements. En fonction des options proposées, le Payment Element affiche les moyens de paiement disponibles parmi ceux que vous avez activés. En savoir plus sur la prise en charge des moyens de paiement.
Propriété | Type | Description | Obligatoire |
---|---|---|---|
mode |
| Indique si l’Payment Element est utilisé avec un PaymentIntent, un SetupIntent ou un abonnement. | Oui |
currency | string | La devise du montant à facturer au client. | Oui |
amount | number | Le montant à débiter au client, indiqué dans les interfaces utilisateur Apple Pay, Google Pay ou BNPL. | Pour les modes payment et subscription |
setupFutureUsage |
| Indique que vous avez l’intention d’effectuer des paiements ultérieurs avec les informations de paiement collectées par l’Payment Element. | Non |
captureMethod |
| Détermine à quel moment capturer les fonds sur le compte du client. | Non |
onBehalfOf | string | Connect uniquement. L’ID de compte Stripe qui correspond à l’entreprise de référence. Consultez les cas d’usage pour déterminer si cette option est pertinente pour votre intégration. | Non |
paymentMethodTypes | string[] | Liste des types de moyens de paiement à afficher. Vous pouvez omettre cet attribut pour gérer vos moyens de paiement dans le Dashboard Stripe. | Non |
paymentMethodConfiguration | string | La configuration des moyens de paiement à utiliser lors de la gestion de vos moyens de paiement dans le Dashboard Stripe. Si aucune configuration n’est spécifiée, votre configuration par défaut sera utilisée. | Non |
paymentMethodCreation | manual | Autorise la création d’objets PaymentMethod à partir de l’instance Elements à l’aide de stripe.createPaymentMethod. | Non |
paymentMethodOptions | {us_ | Options de vérification pour le moyen de paiement us_ . Accepte les mêmes méthodes de vérification que les Payment Intents. | Non |
paymentMethodOptions | {card: {installments: {enabled: boolean}}} | Permet d’activer manuellement l’interface utilisateur de sélection du calendrier de versements échelonnés par carte, le cas échéant, lorsque vous ne gérez pas vos moyens de paiement dans le Dashboard Stripe. Vous devez définir mode='payment' et spécifier explicitement des paymentMethodTypes . Dans le cas contraire, une erreur est générée. Non compatible avec paymentMethodCreation='manual' . | Non |
Ajouter le composant Element PaymentCôté client
Vous pouvez désormais remplacer le composant Element Card et les composants Elements des différents moyens de paiement par le composant Element Payment. Ce dernier s’adapte automatiquement pour recueillir les valeurs des champs de saisie en fonction du moyen de paiement et du pays (par exemple, collecte de l’adresse de facturation complète pour le prélèvement SEPA). Vous n’avez donc plus besoin de gérer des champs de saisie personnalisés.
L’exemple suivant remplace CardElement
par PaymentElement
:
Si votre tunnel de paiement collecte déjà systématiquement des informations telles que le nom ou l’adresse e-mail du client, vous pouvez empêcher le Payment Element de collecter ces informations en transmettant l’option fields lors de la création du Payment Element. Si vous désactivez la collecte d’un certain champ, vous devez renvoyer ces mêmes données avec stripe.confirmSetup.
Mettre à jour l'appel de création de votre SetupIntentCôté serveur
Le Payment Element vous permettant d’accepter plusieurs moyens de paiement, nous vous recommandons d’utiliser le paramètre automatic_
. Si vous choisissez de l’activer, Stripe prendra en compte la devise, les restrictions relatives aux moyens de paiement et d’autres paramètres pour déterminer la liste des moyens de paiement disponibles pour vos clients. Nous donnons la priorité aux moyens de paiement qui augmentent le taux de conversion et qui sont les plus adaptés à la devise et au lieu de résidence du client.
Ajoutez l’attribut automatic_
au endpoint sur votre serveur qui crée le SetupIntent.
Toutes les options d’éléments supplémentaires transmises lors de la création du groupe Elements à l’étape précédente doivent également être transmises lors de la création du SetupIntent.
Mise en garde
Certains moyens de paiement ne peuvent pas être enregistrés pour une utilisation ultérieure. Pour en savoir plus, consultez la page Options d’intégration des moyens de paiement.
Mettre à jour le gestionnaire d'envoiCôté client
Au lieu d’utiliser des méthodes de confirmation individuelles comme stripe.
ou stripe.
, utilisez stripe.confirmSetup pour recueillir les informations de paiement et les soumettre à Stripe.
Pour confirmer le SetupIntent, apportez les modifications suivantes à votre gestionnaire d’envoi :
- Appelez
await elements.
afin de déclencher la validation du formulaire et de collecter les données requises pour les portefeuilles électroniques.submit() - Facultatif : déplacez la création du SetupIntent vers le gestionnaire d’envoi. De cette façon, vous ne créez le SetupIntent que lorsque l’utilisateur est prêt à soumettre ses informations de paiement.
- Transmettez l’instance
elements
que vous avez utilisée pour créer le Payment Element et leclientSecret
du SetupIntent en tant que paramètres àstripe.
.confirmSetup
Lorsqu’il est appelé, le paramètre stripe.
tente d’effectuer toutes les actions requises, comme l’authentification de vos clients, en affichant une boîte de dialogue 3DS ou en les redirigeant vers la page d’autorisation de leur banque. Une fois la confirmation effectuée, les utilisateurs sont redirigés vers la return_
que vous avez configurée, qui correspond généralement à une page de votre site Web indiquant l’état du SetupIntent
.
Si vous souhaitez conserver le même tunnel pour l’enregistrement des informations de carte et rediriger vos clients uniquement pour les moyens de paiement qui l’exigent, définissez la redirection sur if_
.
Les exemples de code suivants remplacent stripe.
par stripe.
:
// Create the SetupIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", headers: {"Content-Type": "application/json"}, }); const {client_secret: clientSecret} = await res.json(); const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); const {error} = await stripe.confirmCardSetup(clientSecret, { payment_method: { card: elements.getElement(CardElement) } }); if (error) { handleError(error); } };
const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); // Trigger form validation and wallet collection const {error: submitError} = await elements.submit(); if (submitError) { handleError(submitError); return; } // Create the SetupIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", headers: {"Content-Type": "application/json"}, }); const {client_secret: clientSecret} = await res.json(); // Use the clientSecret and Elements instance to confirm the setup const {error} = await stripe.confirmSetup({ elements, clientSecret, confirmParams: { return_url: 'https://example.com/order/123/complete', }, // Uncomment below if you only want redirect for redirect-based payments // redirect: "if_required", }); if (error) { handleError(error); } };
Tester l'intégration
Utilisez les informations de paiement et la page de redirection test pour 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 automatique SEPA
La confirmation du SetupIntent à l’aide d’iDEAL, de Bancontact ou de Sofort génère un PaymentMethod de type prélèvement automatique SEPA. Le prélèvement automatique 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_
.