Comment fonctionnent PaymentIntents et SetupIntents
Pour comprendre le fonctionnement des PaymentIntents et des SetupIntents dans le tunnel de paiement.
La principale différence entre l’API Payment Intents et l’API Setup Intents est leur objectif :
- API Payment Intents : utilisée pour collecter le paiement et débiter immédiatement un client. Elle crée un débiter et traiter une transaction pour collecter les fonds.
- API Setup Intents : utilisée pour collecter et enregistrer les informations du moyen de paiement en vue d’une utilisation ultérieure sans créer de débité. Configure les identifiants de paiement sans traiter aucun paiement.
API Payment Intent | API Setup Intents |
---|---|
Crée un débiter immédiat | Crée aucun débiter |
Filière le cycle de vie d’un paiement | Filière l’avancement de la configuration d’un moyen de paiement |
Utilise 3D Secure pour s’identifier le client pour la transaction applicable | Utilise 3D Secure pour s’identifier un moyen 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 à l’aide de 3D Secure.
Pour simplifier la gestion des paiements, Stripe utilise une machine à états qui vous permet de filière l’état d’un tunnel 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 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.