#jtr-3ds-confirm

1 messages · Page 1 of 1 (latest)

livid lava
#

yes let's start here, can you share a PaymentIntent ID and I start with that

south axle
#

Hi hmunoz, here's a PaymentIntent ID: pi_3JpcIODLDYpUpJgY2EC9gSzh

#

thanks for taking a look into this 🙂

livid lava
#

so you created a PaymentIntent but you haven't confirmed it client-side, in Stripe.js or mobile SDKs right?

PaymentIntents require 2 steps
1/ creation server-side
2/ confirmation client-side

#

you are missing step 2

south axle
#

I think we're doing that

#

on the server, we're creating the PaymentIntent via Setupintent.create

#

then on the client-side, we're passing the PaymentIntent to confirmCardSetup

livid lava
#

let me clarify

south axle
#

Also, in case it offers any clues, it is working fine in production and test mode for non-3DS payments and works for 3DS2 in test mode (haven't had a production 3DS2 test payment yet)

livid lava
#

there are 2 distinct things here
PaymentIntents vs SetupIntent

so

we're creating the PaymentIntent via Setupintent.create
doesn't make sense

SetupIntent.create() would create a SetupIntent not a PaymentIntent

second,

then on the client-side, we're passing the PaymentIntent to confirmCardSetup
to confirm a PaymentIntent you use confirmCardPayment() not confirmCardSetup()

and you are not confirming the PaymentIntent client-side

#

so clearing up some confusion, please look into your code to clarify that

south axle
#

ok, thanks. let me check that

#

So indeed we are using SetupIntent not PaymentIntent. Apologies for not clarifying that sooner

livid lava
#

but you have to use PaymentIntents at some point

#

SetupIntent don't move money

#

PaymentIntents do

south axle
#

correct

livid lava
#

so your integration is a bit incorrect

#

in that you should not be using SetupIntents at all

#

you can collect a card up front but only use a PaymentIntent

#

otherwise you increaase your odds of double confirmation being required

#

double authentication* being required

#

which is what is happening here

#

you authenticate a card on a SetupIntent
then you confirm a PaymentIntent but that requires authetnication too

south axle
#

right, i see

#

so we're following the flow I referenced, which first sets up the card using the SetupIntent and then uses PaymentIntent.create to process the payment

#

for PaymentIntent.create, we create the payment ID via the SetupIntent and then just pass the paymentID to PaymetnIntent.create (along with the customer id)

livid lava
#

so in that guide, the difference is that you're charging the customer n days later, so you collect their card day 1, charge them day 5

#

when the customer is not in your payment page

#

but in this case, your customer is in your payment flow, so you can collect the card first and create a PaymentMethod out of it, then on your last paymetn page, you create a PaymentIntent and confirm it client-side