Fonctionnement des PaymentIntents
Découvrez le fonctionnement des PaymentIntents dans le flux de paiement.
Les paiements impliquant des processus asynchrones peuvent être complexes à gérer. Par exemple, un utilisateur peut être tenu de confirmer un paiement à l’aide de 3D Secure. Les flux de paiement asynchrones sont difficiles à gérer, car ils dépendent d’interactions avec les clients qui se déroulent en dehors de votre application. Les PaymentIntents et les SetupIntents en simplifient la gestion en vous permettant de suivre l’état du flux dans un 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.