# Migrer vers l'API Payment Intents > #### Fonctionnalités d'intégration du composant Payment Element > > Vous pouvez intégrer le Payment Element pour gérer les abonnements, les taxes, les remises, les frais de livraison et la conversion des devises. Pour en savoir plus, consultez le guide [Créer une page de paiement ](https://docs.stripe.com/payments/quickstart-checkout-sessions.md). Découvrez comment migrer l’intégration existante de vos cartes et de l’API Charges. Migrer votre tunnel de paiement peut sembler intimidant. Il est sûr d’adopter progressivement l’API Payment Intents et de l’utiliser en parallèle avec l’API Charges. À cet effet, vous pouvez diviser la migration en étapes suivantes : 1. [Mettez à jour votre version de l’API et votre bibliothèque clients](https://docs.stripe.com/payments/payment-intents/migration.md#api-version). 1. S’il y a lieu, [migrez le code qui lit les propriétés de Charge](https://docs.stripe.com/payments/payment-intents/migration/charges.md) de façon à ce que vous obteniez une lecture cohérente entre les paiements créés par l’API Charges et ceux créés par l’API Payment Intents. Ainsi, vous obtenez une intégration en lecture qui fonctionne avec vos nouvelles et vos anciennes intégrations. 1. Pour utiliser l’API Payment Intents, migrez votre intégration API Charges existante sur [Web](https://docs.stripe.com/payments/payment-intents/migration.md#web), [iOS](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=ios) et [Android](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=android). 1. Migrez votre intégration qui [enregistre les cartes bancaires sur les objets Customer](https://docs.stripe.com/payments/payment-intents/migration.md#saved-cards). 1. [Effectuez des tests avec nos cartes de test](https://docs.stripe.com/testing.md#regulatory-cards) pour vérifier que votre intégration mise à niveau gère correctement l’authentification. ## Mettre à jour la version de votre API et votre bibliothèque clients Bien que l’API Payment Intents fonctionne avec toutes les versions d’API, nous vous recommandons de la [mettre à niveau vers la version la plus récente de l’API](https://docs.stripe.com/upgrades.md#how-can-i-upgrade-my-api). Si vous décidez d’utiliser une version d’API antérieure au [11-02-2019](https://docs.stripe.com/upgrades.md#2019-02-11), notez les deux modifications suivantes dans l’exemple de code : - `requires_source` a été renommé `requires_payment_method` - `requires_source_action` a été renommé `requires_action` De plus, si vous utilisez l’un de nos [SDK](https://docs.stripe.com/sdks.md), vous devez passer à la dernière version de la bibliothèque pour pouvoir utiliser l’API Payment Intents. ## Migrer vos tunnels de paiements ponctuels #### Elements L’élaboration d’une intégration avec Stripe.js et Elements comprend les étapes suivantes : 1. Enregistrer votre intention d’encaisser le paiement côté serveur 1. Collecter les informations de paiement côté client 1. Lancer la création du paiement 1. Traiter la commande du client côté serveur ### Étape 1 : Enregistrer votre intention d’encaisser le paiement côté serveur [Créez un PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) sur votre serveur et [mettez-le à disposition côté client](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Étape 2 : Collecter les informations de paiement côté client Utilisez la fonction [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment), qui collecte les informations de paiement et les envoie directement à Stripe. ### Étape 3 : Lancer la création du paiement Dans votre intégration existante, la dernière étape consiste à utiliser les informations de paiement tokenisées pour créer un paiement sur votre serveur. Cela n’est plus nécessaire puisque la fonction `confirmCardPayment` appelée à l’étape précédente lance la création du paiement. ### Étape 4 : Traiter la commande du client Avec la confirmation automatique, le paiement est créé de façon asynchrone en fonction des actions du client côté client, vous devez donc [surveiller les webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md) pour savoir si le paiement a abouti. Pour effectuer les étapes comme le traitement de la commande après que le paiement d’un client a réussi, implémentez la prise en charge des webhooks et surveillez l’événement `payment_intent.succeeded`. ### Before Si le paiement réussit, traitez la commande. ### After Abonnez-vous au webhook `payment_intent.succeeded` et traitez la commande dans le gestionnaire de webhooks. Maintenant que vous avez terminé la migration, utilisez les cartes de test de la section suivante pour vérifier que votre intégration mise à niveau prend en charge l’authentification 3D Secure. #### Bouton PaymentRequest Pour utiliser le [Payment Request Button](https://docs.stripe.com/stripe-js/elements/payment-request-button.md) de Stripe.js avec l’API Payment Intents, il suffit d’obtenir le token d’une intégration traditionnelle PaymentRequest et de l’associer à un PaymentIntent. L’élaboration d’une intégration avec PaymentRequest comprend les étapes suivantes : 1. Enregistrer votre intention d’encaisser le paiement côté serveur 1. Collecter les informations de paiement côté client 1. Lancer la création du paiement 1. Traiter la commande du client côté serveur Vous pouvez également utiliser le composant Element [Express Checkout](https://docs.stripe.com/elements/express-checkout-element.md) pour proposer à vos clients plusieurs boutons de paiement en un clic, notamment Apple Pay, Google Pay, Link et PayPal. ### Étape 1 : Enregistrer votre intention d’encaisser le paiement côté serveur [Créez un PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) sur votre serveur et [mettez-le à disposition côté client](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Étape 2 : Collecter les informations de paiement côté client Écoutez l’événement `token`de l’objet `PaymentRequest`, qui fournit un token et une fonction de rappel que vous pouvez utiliser pour indiquer le moment où le processus de paiement est terminé. Pour adapter cette intégration afin de prendre en charge l’API Payment Intents, utilisez la fonction [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment) et transmettez-la à l’ID du token au lieu d’envoyer le token vers votre serveur. Une fois que la fonction `confirmCardPayment` a été exécutée, appelez le rappel de fin d’exécution. ### Étape 3 : Lancer la création du paiement Dans votre intégration existante, la dernière étape consiste à utiliser les informations de paiement tokenisées pour créer un paiement sur votre serveur. Cela n’est plus nécessaire puisque la fonction `confirmCardPayment` appelée à l’étape précédente lance la création du paiement. ### Étape 4 : Traiter la commande du client Avec la confirmation automatique, le paiement est créé de façon asynchrone en fonction des actions du client côté client, vous devez donc [surveiller les webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md) pour savoir si le paiement a abouti. Pour effectuer les étapes comme le traitement de la commande après que le paiement d’un client a réussi, implémentez la prise en charge des webhooks et surveillez l’événement `payment_intent.succeeded`. ### Before Si le paiement réussit, traitez la commande. ### After Abonnez-vous au webhook `payment_intent.succeeded` et traitez la commande dans le gestionnaire de webhooks. Maintenant que vous avez terminé la migration, utilisez les cartes de test de la section suivante pour vérifier que votre intégration mise à niveau prend en charge l’authentification 3D Secure. #### Ancienne version de Checkout Si vous utilisez l’ancienne version de Checkout, mettez-la à niveau vers la [nouvelle version de Checkout](https://docs.stripe.com/payments/checkout.md), le moyen le plus rapide d’accepter des paiements avec Stripe. Elle vous permet d’accepter des paiements ponctuels et des abonnements. Vous pouvez également utiliser Checkout sans utiliser l’API de Stripe sur votre serveur. Suivez le [guide de migration de Checkout](https://docs.stripe.com/payments/checkout/migration.md) pour migrer votre intégration existante. Si vous préférez créer votre propre tunnel de paiement, passez à [Elements](https://docs.stripe.com/payments/elements.md). Après votre mise à niveau vers Elements, vous pourrez créer une intégration de l’API Payment Intents. Utilisez alors le [guide de migration vers Elements](https://docs.stripe.com/payments/payment-intents/migration.md#web). #### Stripe.js v2 Si vous souhaitez mettre à niveau une intégration Stripe.js v2 existante afin d’utiliser l’API Payment Intents, vous devez d’abord mettre à jour votre intégration pour collecter les informations de paiement avec Elements. Elements fournit des composants d’interface utilisateur préconfigurés et facilite la [conformité PCI](https://docs.stripe.com/security/guide.md) au moyen de rapports SAQ A. Une fois que vous avez effectué la mise à niveau vers Elements, vous pouvez créer une intégration de l’API Payment Intents à l’aide du [guide de migration vers Elements](https://docs.stripe.com/payments/payment-intents/migration.md#web). ## Migrez votre intégration qui enregistre les cartes bancaires sur les objets Customer #### Enregistrer les cartes bancaire dans le tunnel de paiement Une intégration d’API Payment Intents qui collecte les informations de carte bancaire dans le tunnel de paiement comprend les étapes suivantes : 1. Enregistrer votre intention d’encaisser le paiement côté serveur 1. Collecter les informations de paiement côté client 1. Lancer la création du paiement 1. Traiter la commande du client côté serveur ### Étape 1 : Enregistrer votre intention d’encaisser le paiement côté serveur [Créez un PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) sur votre serveur. Définissez [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) sur `off_session` si vous comptez principalement facturer les utilisateurs lorsqu’ils sont déconnectés de votre application ou sur `on_session` si vous prévoyez de les facturer dans l’application. Si vous prévoyez de les facturer en session et hors session, utilisez `off_session`. Si vous indiquez le paramètre `setup_future_usage` avec un ID client, vous enregistrerez le PaymentMethod correspondant pour ce client une fois que le PaymentIntent aura été confirmé et que toutes les actions requises du client auront été effectuées. Ensuite, mettez le PaymentIntent [à disposition côté client](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Étape 2 : Collecter les informations de paiement côté client Utilisez la fonction [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment), qui collecte les informations de paiement et les envoie directement à Stripe. Enfin, associez le moyen de paiement (`paymentIntent.payment_method`) au client. ### Étape 3 : Lancer la création du paiement Dans votre intégration existante, la dernière étape consiste à utiliser les informations de paiement tokenisées pour créer un paiement sur votre serveur. Cela n’est plus nécessaire puisque la fonction `confirmCardPayment` appelée à l’étape précédente lance la création du paiement. ### Étape 4 : Traiter la commande du client Avec la confirmation automatique, le paiement est créé de façon asynchrone en fonction des actions du client côté client, vous devez donc [surveiller les webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md) pour savoir si le paiement a abouti. Pour effectuer les étapes comme le traitement de la commande après que le paiement d’un client a réussi, implémentez la prise en charge des webhooks et surveillez l’événement `payment_intent.succeeded`. ### Before Si le paiement réussit, traitez la commande. ### After Abonnez-vous au webhook `payment_intent.succeeded` et traitez la commande dans le gestionnaire de webhooks. Maintenant que vous avez terminé la migration, utilisez les cartes de test de la section suivante pour vérifier que votre intégration mise à niveau prend en charge l’authentification 3D Secure. #### Enregistrer des cartes bancaire en dehors du tunnel de paiement Vous devrez apporter quelques modifications à votre intégration existante qui enregistre les informations de carte hors du tunnel de paiement. Tout d’abord, créez un [SetupIntent](https://docs.stripe.com/api/setup_intents.md) sur votre serveur. Un SetupIntent authentifie la carte sans effectuer le paiement. Transmettez la [clé secrète](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) du SetupIntent côté client et utilisez la fonction [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) au lieu de [createToken](https://docs.stripe.com/js.md#stripe-create-token) ou [createSource](https://docs.stripe.com/js.md#stripe-create-source) une fois que le client a saisi ses coordonnées de carte. Si la réglementation l’exige, [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) demandera à l’utilisateur d’authentifier la carte. Si [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) réussit, `setupIntent.payment_method` contiendra un [PaymentMethod](https://docs.stripe.com/api/payment_methods/object.md) que vous pouvez associer à un client. Transmettez l’ID de ce PaymentMethod au serveur et [associez le moyen de paiement](https://docs.stripe.com/api/payment_methods/attach.md) au client à l’aide de l’API Payment Methods au lieu de l’API Customers. #### Payer avec des cartes enregistrées Si le paiement est effectué à l’aide d’un moyen de paiement précédemment enregistré, vous devez indiquer l’ID du client et l’ID de la carte, de la source ou du mode de paiement précédemment enregistrés. Par le passé, la source par défaut côté client était utilisée si aucune n’était fournie. Vous devez désormais transmettre explicitement le mode de paiement souhaité. Si le client est *hors session* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information), vous devez indiquer que le paiement est de type hors session. Consultez la page [Débiter des cartes enregistrées](https://docs.stripe.com/payments/save-and-reuse.md?platform=web&ui=elements#charge-saved-payment-method) pour en savoir plus. ## Accéder aux moyens de paiement enregistrés Pour afficher les cartes, les sources et les moyens de paiement précédemment enregistrés par le client,[ répertoriez les moyens de paiement](https://docs.stripe.com/api/payment_methods/list.md) au lieu de lire la propriété [sources](https://docs.stripe.com/api/customers/object.md#customer_object-sources) de l’objet Customer. Cela est nécessaire car les nouveaux modes de paiement ajoutés à un client ne seront pas dupliqués dans la propriété sources de l’objet client. ## Tester l’intégration Il est important de tester l’ensemble de votre intégration pour vérifier qu’elle prend correctement en charge les cartes qui nécessitent une authentification supplémentaire et celles qui n’en nécessitent pas. Validez la bonne gestion de ces deux cas de figure par votre intégration en utilisant ces numéros de carte de test dans un [environnement de test](https://docs.stripe.com/keys.md#test-live-modes) avec n’importe quelle date d’expiration future et n’importe quel code CVC à trois chiffres. | Numéro | Authentification | Description | | ---------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4000002500003155 | Requis lors de la configuration ou de la première transaction | Cette carte de test exige une authentification pour les [paiements ponctuels](https://docs.stripe.com/payments/accept-a-payment.md?platform=web). Toutefois, si vous configurez cette carte avec l’[API Setup Intents](https://docs.stripe.com/payments/save-and-reuse.md) et utilisez la carte enregistrée pour des paiements ultérieurs, aucune autre authentification n’est nécessaire. | | 4000002760003184 | Obligatoire | Cette carte de test exige une authentification pour toutes les transactions. | | 4000008260003178 | Obligatoire | Cette carte de test exige l’authentification, mais les paiements seront refusés avec un code d’échec `insufficient_funds` après une authentification réussie. | | 4000000000003055 | Pris en charge | Cette carte bancaire de test prendre en charge l’authentification via 3D Secure 2, mais ne l’exige pas. Les paiements utilisant cette carte bancaire ne nécessitent pas d’authentification supplémentaire dans un environnement de test, sauf si vos [règles Radar](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#three-ds-radar) d’environnement de test requête une authentification. | Utilisez ces cartes dans votre application ou la [démonstration de paiement](https://stripe-payments-demo.appspot.com) pour voir les différences de comportement. ## See also - [PaymentIntents sur iOS](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=ios) - [PaymentIntents sur Android](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=android)