6
votes

Stripe 3D Secure lors de l'enregistrement de cartes pour de futurs paiements

Est-il possible d'utiliser 3D Secure lors de l'enregistrement de cartes pour de futurs paiements?

À partir de la documentation de Stripe, https://stripe.com/docs/sources/three- d-secure . Cela semble être la manière de procéder.

Cependant, selon la documentation, il n'est plus recommandé et d'utiliser plutôt PaymentIntents:

L'utilisation de cette API n'est plus recommandée. Si vous souhaitez utiliser 3D Secure, nous vous encourageons vivement à adopter PaymentIntents, notre nouvelle API de paiement.

Donc, avec cela, existe-t-il un moyen d'utiliser PaymentIntents (pour utiliser la 3D Secure) pour simplement enregistrer une carte sans effectuer de paiement immédiatement?


3 commentaires

Je ne suis pas sûr que votre question ait du sens. Une intention de paiement est explicitement une tentative de perception d'un paiement, et 3D Secure ne se produit que lorsque vous effectuez un paiement. Si vous enregistrez simplement la carte sans effectuer de paiement, vous créez une source en utilisant stripe.createSource de stripe.js comme à l'étape 1 de votre lien, et enregistrez-le dans un objet client . Ensuite, plus tard, si vous souhaitez débiter la carte, vous pouvez créer une intention de paiement. stripe.com/docs/payments/payment-intents/ …


Notre cas d'utilisation est que nous souhaitons enregistrer les cartes du client pour les frais futurs et ces frais futurs seront automatiquement effectués en arrière-plan de notre serveur afin que nous ne puissions pas obtenir d'informations sécurisées en 3D de nos clients à ce moment-là. Nous souhaitons donc utiliser l'authentification 3D sécurisée lors de la sauvegarde des cartes. J'ai demandé au support Stripe à ce sujet et ils ont dit que la sécurité 3D pour enregistrer des cartes sans effectuer de paiement n'est actuellement pas prise en charge.


Salut @len J'essaie d'atteindre la même chose, avez-vous trouvé un moyen de le faire avec l'intention de paiement?


3 Réponses :


5
votes

Juste pour vous faire savoir, j'ai contacté le support Stripe car j'ai le même souci que vous, voici la réponse:

[...] PaymentIntents ne prend actuellement pas en charge la création de sources sans créer de frais par la suite. Il est également impossible d'intégrer 3DSecure avec la méthode actuelle de sauvegarde des cartes de crédit.

PaymentIntents est un produit Stripe assez récent et nous sommes toujours en train de résoudre les problèmes et de décider des fonctionnalités que nous prendrons en charge sur toute la ligne. L'enregistrement des sources est certainement une priorité dans notre liste de priorités et il y aura plus d'informations sur cette mise à jour à l'avenir.

J'ai essayé d'obtenir plus d'informations sur leur feuille de route pour savoir si la fonctionnalité sera publiée d'ici septembre, mais le support n'a pas pu me donner les informations.

Modifier : stripe a amélioré sa documentation et explique maintenant comment implémenter ce que vous voulez tout en respectant le SCA https://stripe.com/docs/payments/cards/saving-cards#saving-card-without-payment et https://stripe.com/docs/payments/cards/charging-saved-cards


1 commentaires

Veuillez jeter un oeil à l'autre réponse ici .. J'essaye également de comprendre la même chose ..: /



2
votes

Est-il possible d'utiliser 3D Secure lors de l'enregistrement de cartes pour de futurs paiements?

Ce que j'utilise avec PaymentIntents , c'est de créer un client, puis d'effectuer le paiement:

customer = stripe.Customer.modify(
                customer_id,
                source=token_id
           )

Dans le paiement, vous avez le type de carte payment ['charges'] ['data'] [0] ['payment_method_details'] ['card'] ['brand'] et les 4 derniers chiffres de la carte payment ['charges' ] ['data'] [0] ['payment_method_details'] ['card'] ['last4']

Vous pouvez stocker localement le customer_id , le type de carte et les 4 derniers chiffres pour les montrer à ce client la prochaine fois. Pour effectuer un autre paiement, il vous suffit d'utiliser stripe.PaymentIntent.create () avec le customer.id que vous avez enregistré la première fois. Si le client souhaite utiliser une autre carte, faites simplement

customer = stripe.Customer.create(

payment = stripe.PaymentIntent.create(customer=customer_id, ....

token_id vient de stripe.js dans votre frontend


4 commentaires

D'après ce que j'ai compris, cette réponse contredit l'autre qui vient de recevoir une réponse du support de Stripe disant que ce n'était pas possible :) Il semble logique que vous puissiez stocker les «métadonnées» d'une carte avec le client, et le PaymentIntent peut être créé plus tard à partir de cela et alors seulement, il déclenche l'étape 3D-Secure 2.0. Mais est-ce que ça marche vraiment? :)


Je pense que vous n'avez pas compris le cas d'utilisation: ce que l'auteur (et toutes les personnes impliquées dans ce sujet) veut réaliser est: Enregistrer une carte client avec la sécurité 3D activée un jour, puis charger la carte plus tard. C'est le cas lorsque vous souhaitez créer un système d'abonnement personnalisé et parce que le système d'abonnement fourni ne répond pas à vos besoins. Actuellement, il semble que PaymentIntents ne prend pas en charge ce cas d'utilisation. Nous savons tous que vous pouvez créer un PaymentIntents, qui facturera "immédiatement" la carte, et conservera cette carte pour d'autres paiements ultérieurs


Lorsque vous créez le client, vous envoyez un token_id depuis stripe.js après que l'utilisateur a écrit son numéro de carte, de sorte que le client que vous créez dans Stripe dispose des informations de la carte. Après cela, vous avez l'ID du client afin que vous puissiez créer une tente de paiement avec les frais que vous souhaitez effectuer. Pour moi, je travaille en mode test, le seul problème que j'ai maintenant est que je ne reçois pas le message de l'iframe lorsque 3DSecure est nécessaire, mais les paiements sont dans le tableau de bord de bande :)


Ce que je ne sais pas si l'auteur parle de sauvegarder les cartes localement ou en bande. Je pense qu'au début, les applications ont sauvegardé les cartes localement et depuis longtemps, nous ne sauvegardons pas et ne voulons pas sauvegarder les cartes localement. Je pense que la réponse du support parle de sauvegarder les cartes localement, PaymentIntents est destiné à ne pas sauvegarder les cartes localement mais sur leurs systèmes.



0
votes

Utilisez l'API SetupIntent , qui sont essentiellement PaymentIntent avec un montant nul (même workflow).


0 commentaires