Fonctionnement des PaymentIntents
Découvrez comment les PaymentIntents fonctionnent dans le tunnel de paiement.
Les paiements impliquant des processus asynchrones peuvent être complexes à gérer. Par exemple, un utilisateur peut être invité à confirmer un paiement à l’aide de 3D Secure. Les tunnel de paiement asynchrones sont difficiles à gérer, car ils dépendent d’interactions que les clients ont en dehors de votre application. Les PaymentIntents et les SetupIntents simplifient la gestion en suivant l’état du tunnel dans une machine à états.
Lorsque le PaymentIntent est créé, son état est requires_
1 jusqu’à ce qu’un moyen 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 à l’état processing
pour les moyens de paiement asynchrones, comme les prélèvements bancaires. Le traitement de ces types de moyens de paiement peut prendre quelques jours. Les autres moyens de paiement, tels que les cartes bancaires, sont traités plus rapidement et ne passent pas à l’état processing
.
Si vous autorisez et capturez des fonds séparément, votre PaymentIntent peut passer à l’état requires_
. Dans ce cas, toute tentative de capture de fonds le fera passer à processing
.
Si l’état d’un PaymentIntent indique qu’il est réussi, cela signifie que le tunnel 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 repasse à requires_
pour rendre possible une nouvelle tentative de paiement.
Vous pouvez annuler un PaymentIntent à tout moment avant qu’il ne soit à l’état processing
2 ou succeeded
. Son annulation invalide le PaymentIntent pour les futures tentatives de paiement, et cette opération ne peut être annulée. Si des fonds ont été retenus, ils seront débloqués lors de l’annulation.
Les Paymentintents peuvent également passer automatiquement à l’état canceled
après un trop grand numbre de confirmations.
1 Les versions de l’API antérieures au 11-02-2019 affichaient requires_
au lieu de requires_
et requires_
au lieu de requires_
.
2 Vous pouvez annuler un PaymentIntent à l’état processing
lorsque le moyen de paiement associé est un compte bancaire américain. Cela peut toutefois échouer, car le délai d’annulation est limité et variable.