#akdj16 - 3DS

1 messages ยท Page 1 of 1 (latest)

paper moonBOT
novel orbit
#

Hello ๐Ÿ‘‹
Tarzan is away and I can't seem to load the other thread.
Let's chat here

#

How can I help?

snow raptor
#

ok, in fact previously, I tried to update a subscription with a 3ds v1 payment method attached to the customer as default pm, and I used the latest_invoice.payment_intent on the frontend to confirm the payment , and I have error because the payment intent status is requires_payment_method. @manic comet said that I don't need to call payment intent confirm, it should be resolved automatically as the subscription is set to charge_automatically. but I just tried few minutes ago, it still failing, on Stripe. the new request ID is req_QUgljmj6MAu42Z

novel orbit
#

gotcha, looking..

snow raptor
#

yes

novel orbit
#

Not sure why its automatically getting declined, it should theoretically move to requires_action status on 3DS prompt. Have you tested a different card to see if that works?

snow raptor
#

Yes, that's strange. I tested with 3DS v2 card and it returns with status requires_action and the frontend prompts 3DS confirmation screen.

#

but 3DS v1 doesn't work

drifting birch
#

Interesting, thank you for flagging that distinction. Trying to think of what might be happening here...

drifting birch
#

akdj16 - 3DS

#

Hey apologies that it took me a while to find this but this is expected behavior. One of the main differences between 3DS v1 and v2 is that v2 has this soft decline functionality

snow raptor
#

Hmmm ok, but how to manage 3DS v1 in this case?

drifting birch
#

I think you would want to treat this like any other full decline and bring the user back on session. You could try confirming the payment intent on your client side page with that already saved payment method and that may trigger 3DS, otherwise they might want to enter new payment method details

snow raptor
#

ok, I see

#

I will try and keep you update

snow raptor
#

Hey, I just tried to provide the payment method id to the client method confirmPayment (lib stripe-react-native). but nothing happened. On stripe dashboard, the customer still has failed payment and subscription in past_due. on the client side, nothing is prompt, it was like a successful confirm payment call but in fact it failed on stripe

#

here is the request ID: req_QWnrwLoksDv12B

drifting birch
#

Did you do the confirm on the $10 invoice? I see that that one is paid

snow raptor
#

the $35

#

the $10 one is when I created the subscription and yes I also confirmed and did the 3ds verification

drifting birch
#

Subscription statuses are based on the most recent invoice's status, and I see that the most recent invoice on that subscription is still not paid, so that is why the subscription is still inactive

#

Looking in to the issue with that invoice

snow raptor
#

then the update subscriptions actions didn't work

drifting birch
#

Didn't work in what way?

#

Also I don't see any client side confirm attempts logged on our side for that $35 invoice. Were there any client side errors thrown when you tried to confirm it with confirmPayment in your RN code?

snow raptor
#

no i get nothing, I did a try catch, but nothing is catched, so there is not error thrown from confirmPayment

drifting birch
#

Ah gotcha, typically "update subscription" refers to a different server side call so I got a bit mixed up

snow raptor
#

I updated the subscription in the backend, I get the response of the update, from the response I retrieved the subscription.default_payment_method and returned this + the latest_invoice.payment_intent to the frontend. on the frontend I did the confirmPayment with the payment_intent secret and the default_payment_method ID as second parameter of confirmPayment paymentMethodData.paymentMethodId

cobalt coral
#

๐Ÿ‘‹ stepping in

snow raptor
#

hi !

cobalt coral
#

You want confirmCardPayment here

#

Not confirmPayment

#

Wait wait wait

#

You are using React Native

#

Sorry, catching up on the above

snow raptor
#

yes, I am using react native

cobalt coral
#

Can you show me your code for how you are calling confirmPayment exactly?

#

And you aren't seeing any error, correct?

snow raptor
#

sure

#

it is in a if block, I added a console.warn at the begining of the if block, to be sure being inside the block

#

and I get the warning log in the metro terminal, so it surely call the method

cobalt coral
#

Hmm yeah that looks fine to me

#

What version of the RN SDK are you using?

snow raptor
#

the payload.updateSubscription is what I return from the backend side, it contains the paymentMethod ID, for instance:
{"__typename": "UpdateSubscriptionPayload", "paymentIntent": {"__typename": "PaymentIntent", "clientSecret": "pi_3MZGMiC36MeQgD8r0ZFH1Mno_secret_bnCiyAPrDnyb2yIjok5LGXOJv", "id": null, "status": "requires_payment_method"}, "paymentMethodID": "pm_1MZGKSC36MeQgD8rYsXJT17M", "reason": null, "success": false}}

#

"@stripe/stripe-react-native": "^0.23.0" this one

#

"react-native": "0.69.5",

cobalt coral
#

Hmm can you add paymentMethodType: "Card"

#

That shows the CardParams

snow raptor
#

ok

#

it works ๐Ÿฅฒ

cobalt coral
#

Ahh that is confusing that it doesn't error

snow raptor
#

paymentMethodType: "Card" is the solution for showing the 3ds confirmation screen

cobalt coral
#

I'll file feedback

snow raptor
#

yes :/

#

Thank you!

#

You have just saved my day! ๐Ÿฅฒ