Comment fonctionnent les PaymentIntents et les SetupIntents
Découvrez le fonctionnement des PaymentIntents et des SetupIntents dans le flux de paiement.
Les paiements impliquant des processus asynchrones peuvent être difficiles à gérer. Par exemple, un utilisateur peut être amené à confirmer un paiement en utilisant 3D Secure.
Les flux de paiement asynchrones sont difficiles à gérer, car ils dépendent d’interactions avec les clients se produisant en dehors de votre formulaire d’inscription. Les PaymentIntents et les SetupIntents simplifient la gestion en effectuant le suivi de l’état du flux dans a state machine.
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.