Comment fonctionnent les PaymentIntents et les SetupIntents
Découvrez le fonctionnement des PaymentIntents et des SetupIntents dans le flux de paiement.
La principale différence entre l’API Payment Intents et l’API Setup Intents est leur objectif :
- API Payment Intents : Permet de recevoir immédiatement le paiement et de facturer un client. Il crée une facture et traite une transaction afin de recevoir les fonds.
- API Setup Intents : Permet de collecter et d’enregistrer les informations relatives au mode de paiement pour une utilisation future sans créer de facture. Configure les informations d’identification de paiement sans traiter aucun paiement.
API de Payment Intents | API Setup Intents |
---|---|
Créé des paiements immédiats | Ne débite rien |
Suivi du cycle de vie d’un paiement | Suivi de la progression de la configuration d’un mode de paiement |
Utilise 3D secure pour authentifier le client pour la transaction applicable | Utilise 3D secure pour identifier un mode de paiement sans le débiter, et crée un mandat ou un accord pour les paiements futurs. |
{Les paiements asynchrones peuvent être difficiles à gérer car ils peuvent dépendre d’actions du client qui se produisent en dehors de votre formulaire d’inscription. Par exemple, un utilisateur peut avoir besoin de confirmer un paiement en utilisant 3D Secure.
Pour simplifier la gestion des paiements, Stripe utilise une machine d’états qui vous permet de suivre l’état d’un flux de paiement. Pour connaître les états de chaque API, sélectionnez l’onglet applicable ci-dessous :
Lorsque le PaymentIntent est créé, son état est requires_
1 jusqu’à ce qu’un mode de paiement soit associé.
Nous vous recommandons de créer le PaymentIntent dès que vous connaissez le montant du paiement afin que Stripe puisse enregistrer toutes les tentatives de paiement.
Une fois que le client a fourni ses informations de paiement, le PaymentIntent peut être confirmé.
Dans la plupart des intégrations, cet état est ignoré parce que l’information sur le moyen de paiement est soumise au moment de la confirmation du paiement.
Si le paiement nécessite des actions supplémentaires, comme l’authentification avec 3D Secure, l’état du PaymentIntent est requires_
1.
Une fois les actions requises effectuées, le PaymentIntent passe au processing
pour les modes de paiement asynchrones, comme les prélèvements bancaires. Le traitement de ces types de modes de paiement peut prendre quelques jours. Les autres modes de paiement, tels que les cartes, sont traités plus rapidement et ne passent pas à l’état processing
.
Si vous autorisez et capturez les fonds séparément, votre PaymentIntent peut passer à l’état requires_
. Dans ce cas, toute tentative de capture des fonds les déplace vers processing
.
Si l’état d’un PaymentIntent indique qu’il est réussi, cela signifie que le flux de paiement est terminé.
Les fonds apparaissent maintenant dans votre compte, vous pouvez donc traiter la commande. Si vous devez rembourser le client, vous pouvez utiliser l’API Refunds.
Si la tentative de paiement échoue (par exemple en raison d’un refus), l’état du PaymentIntent revient à requires_
afin que le paiement puisse être relancé.
Vous pouvez annuler un PaymentIntent à tout moment avant qu’il passe à l’état processing
2 ou succeeded
. L’annulation invalide le PaymentIntent pour les tentatives de paiement ultérieures, et cette action ne peut être annulée. Si des fonds ont été bloqués, ils seront libérés par l’annulation.
Les PaymentIntents peuvent également passer automatiquement à l’état canceled
après un trop grand nombre de confirmations.
1 Dans les versions de l’API antérieures au 11-02-2019, requires_
est affiché au lieu de requires_
et requires_
au lieu de requires_
.
2 Vous pouvez annuler un PaymentIntent à l’état processing
lorsque le mode de paiement associé est US Bank Account. Cependant, il peut échouer en raison d’un délai d’annulation limité et variable.