Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Outils de développement
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Web Elements
    Présentation
    Payment Element
      Bonnes pratiques concernant le composant Payment Element
      Comparaison avec Card Element
      Migrer vers le composant Element Payment avec Payment Intents
      Migrer vers le composant Element Payment avec les sessions Checkout
      Migrer vers les tokens de confirmation
    Express Checkout Element
    Address Element
    Currency Selector Element
    Link Authentication Element
    Payment Method Messaging Element
Elements intégrés à l'application
Scénarios de paiement
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Autres produits Stripe
Financial Connections
Cryptomonnaies
Climate
AccueilPaiementsWeb ElementsPayment Element

Migrer vers Payment Element avec l’API Payment Intents

Acceptez de nombreux moyens de paiement avec un seul Element.

Copier la page

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.

By default, Stripe enables cards and other prevalent payment methods that can help you reach more customers, but we recommend turning on additional payment methods that are relevant for your business and customers. See Payment method support for product and payment method support, and our pricing page for fees.

Mettre à jour l'instance d'Elements
Cô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.

Avant
Après
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const elements = stripe.elements();
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const options = { mode: 'setup', currency: 'usd', }; const elements = stripe.elements(options);

FacultatifAdditional Elements options
Côté client

Ajouter le composant Element Payment
Côté client

Si vous utilisez React Stripe.js, installez la version la plus récente pour utiliser le composant Element Payment.

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 :

checkout.html
JavaScript
<form id="payment-form"> <div id="card-element"> </div> <div id="payment-element"> <!-- Mount the Payment Element here --> </div> <button id="submit">Submit</button> </form>
checkout.js
JavaScript
const cardElement = elements.create("card"); cardElement.mount("#card-element"); const paymentElement = elements.create("payment"); paymentElement.mount("#payment-element");

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 SetupIntent
Côté serveur

Le Payment Element vous permettant d’accepter plusieurs moyens de paiement, nous vous recommandons d’utiliser le paramètre automatic_payment_methods. 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_payment_methods 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.

Command Line
curl
curl https://api.stripe.com/v1/setup_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-05-28.basil" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "automatic_payment_methods[enabled]"=true

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'envoi
Côté client

Au lieu d’utiliser des méthodes de confirmation individuelles comme stripe.confirmCardSetup ou stripe.confirmP24Setup, 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.submit() afin de déclencher la validation du formulaire et de collecter les données requises pour les portefeuilles électroniques.
  • 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 le clientSecret du SetupIntent en tant que paramètres à stripe.confirmSetup.

Lorsqu’il est appelé, le paramètre stripe.confirmSetup 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_url 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_required.

Les exemples de code suivants remplacent stripe.confirmCardSetup par stripe.confirmSetup :

Avant
Après
// 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.

Moyen de paiementScénarioMéthode de test
Carte bancaireLa configuration de la carte aboutit et ne requiert aucune authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4242 4242 4242 4242 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLa carte exige une authentification pour la configuration initiale, mais la transaction aboutit pour les paiements suivants.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4000 0025 0000 3155 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLa carte exige une authentification pour la configuration initiale et pour les paiements suivants.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4000 0027 6000 3184 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLa carte est refusée durant la configuration.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro 4000 0000 0000 9995 ainsi que la date d’expiration, le CVC et le code postal de votre choix.

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_payment_method.

Configurez le paramètre payment_method.billing_details.email sur l’une des valeurs suivantes afin de tester les changements d’état du PaymentIntent. Au début de l’adresse e-mail, vous pouvez inclure votre propre texte suivi d’un tiret bas. Par exemple, test_1_generatedSepaDebitIntentsFail@example.com donne lieu à un PaymentMethod de prélèvement automatique SEPA qui échoue systématiquement en cas d’utilisation avec un PaymentIntent.

Adresse e-mailDescription
generatedSepaDebitIntentsSucceed@example.comL’état du PaymentIntent passe de processing à succeeded.
generatedSepaDebitIntentsSucceedDelayed@example.comThe PaymentIntent status transitions from processing to succeeded after at least three minutes.
generatedSepaDebitIntentsFail@example.comL’état du PaymentIntent passe de processing à requires_payment_method.
generatedSepaDebitIntentsFailDelayed@example.comThe PaymentIntent status transitions from processing to requires_payment_method after at least three minutes.
generatedSepaDebitIntentsSucceedDisputed@example.comL’état du PaymentIntent passe de processing à succeeded, mais un litige est créé immédiatement.
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc