#andrew_best-practices

1 messages ยท Page 1 of 1 (latest)

pine quarryBOT
#

๐Ÿ‘‹ Welcome to your new thread!

โฒ๏ธ We'll be here soon! Typically we respond in a few minutes, but sometimes we might take a bit longer if the server is busy or if you have a particularly tricky question.

โฑ๏ธ We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can always start a new thread if you have another question.

๐Ÿ”— This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1402207605702529115

๐Ÿ“ Have more to share? Add more details, code, screenshots, videos, etc. below.

Below are links to other discussions we've had with you in the past week in case you want to review that information. If your question is related to one of these previous discussions, please provide a comprehensive summary of the current state and what you need help with now. We help many users simultaneously, so a summary allows us to resolve your issue as soon as possible.

jovial hedge
#

Hi there. I'll take a look for you!

#

Do you have an ID I can take a look at? either a pi_โ€ฆ or a req_โ€ฆ?

#

Note that the 3155 test card says that subsequent "on-session payments with this card always require authentication".

After setting up the card, are you sending off_session: true in the PaymentIntent?

supple granite
#

Yes one second

pine quarryBOT
supple granite
#

If you can give me a moment, I will try to recreate the scenario.

#

If not, will you be able to keep this open for me to come back in the next 24hrs (it's currently out of business hours where I am, so I may need to wait for an engineer to come online)

jovial hedge
supple granite
#

Thank you

#

I'm just testing now so let me see if I can get you that ID

#

pi_3Rsgn6HugnJkF8aj1nG2c441

#

So I used the 3155 card

#

And the stripe component, which correctly presented the 3DS challenge

#

I am using a 3rd party subscription management service, Maxio to store the card information, and I went into Maxio to simulate ending of the trial period and activating the subscription

graceful flicker
#

๐Ÿ‘‹ taking over for my colleague. Let me catch up.

supple granite
#

I will now do a quick test, rather than manually activating, I will change the trial end-date to be in the next 15 min, so it will automatically try to bill the card and activate the subscription

graceful flicker
#

ok so the PI you shared is the one where you're setting up the PM for future usage

supple granite
#

That's correct

#

Is there anything in the stripe dashboard that says the card is setup for off-session?

graceful flicker
#

the PI didn't go through 3DS though

#

so the PM hasn't been attached to the customer for future usage

supple granite
#

Just to make sure we're on the same page, when you say PM you mean the Mandate?

graceful flicker
#

PaymentMethod

supple granite
#

Right - can you point me in the right direction for documentation of this setup for my engineers to look at?

#

It sounds like it would have not worked regardless of the card

graceful flicker
#

before I do that, would you mind elaborating on your use case? let's forget about the implementation details for a second

supple granite
#

Yes - so we're a SaaS company, with a subscription service. It has a 30 day trial, and during the trial, customers can enter payment details (so we store it in Stripe). We utilise Maxio to manage subscriptions (https://docs.maxio.com/hc/en-us/articles/24176099326605-Gateway-Overview) and we pass in the Stripe IDs to Maxio when we configure the subscription.

Once the trial ends, Maxio then tries to charge the customer for their subscription (this is where we get the 3DS error)

graceful flicker
#

so you're not using Stripe Subscriptions/Invoices but rather always charging with PaymentIntents?

supple granite
#

We are not using Stripe billing

#

We are just setting up the customer with the card manually in stripe via the API

#

The reason we chose this route is because Maxio's out-of-the-box javascript library for capturing the credit card has a slightly different flow for handling 3DS, and we thought it would be more straightforward to go direct to Stripe, and pass in the IDs to Maxio (which they support in their API)

graceful flicker
#

I'm really having trouble understanding the flow of your implementation

#

are you using SetupIntents?

#

to collect the PaymentDetails?

supple granite
#

We are using SetupIntents

graceful flicker
#

I can only see PaymentIntents and Raw Pan collection

#

coming from your platform

graceful flicker
#

yes ok, I can see it now

#

ok so for example you attached this PM pm_1Rsgl5HugnJkF8ajd0d7uKyq to this customer cus_SoJNaL4zL7BcP7 using this SI seti_1Rsgl4HugnJkF8ajNd4MFIxC

#

what do you do next?

#

ok so this PI pi_3Rsgn6HugnJkF8aj1nG2c441 was then created by Maxio?

supple granite
#

That's right

#

It will have been created by Maxio

graceful flicker
#

you can see that they haven't used off_session: true

#

but rather setup_future_usage: "off_session"

#

and the 3155 card always authenticate on setup

supple granite
#

Ahh ok - I think this will be a question for my developer then

graceful flicker
#

they can join discord and we can have multiple people discuss in the same thread if it's easier for you

supple granite
#

Yes it's out of business hours at the moment. If we come back tomorrow, will I be able to reference this conversation?

graceful flicker
#

yes sure

supple granite
#

Will I just paste teh discord chat link to a new request?

graceful flicker
#

if you're opening the thread we automatically link the newest threads you were in as you can see at the end of the StripeBot welcome message

supple granite
#

Ah I see it! Thank you.

#

That might be easiest, if I talk to the developer to double check the API calls. So it looks like we've used the wrong parameter in the original request

graceful flicker
#

your SI integration is not wrong

supple granite
#

Ahh - ok so I may need to raise a support ticket to Maxio

graceful flicker
#

whether you're initiating that or they are, I can't tell. but yes it's in that request where you need to have the off_session: true instead of setup_future_usage: 'off_session'

supple granite
#

Thank you so much - this is enough for me to go off for now, and I will have a chat to my team and raise a ticket with Maxio as well. It sounds like they need both parameters?

I want to make sure I word this correctly to Maxio support.

graceful flicker
#

It sounds like they need both parameters?
no they only need off_session: true

#

since you are setting up the future usage

supple granite
#

Ok - does setup_future_usage do anything then, or is it redundant in both the 3DS and non-3DS use-case?

graceful flicker
#

setup_future_usage is not needed when the PM is already created using SetupIntents with usage: 'off_session'

supple granite
#

Ok thank you very much. We can finish here for today, this is enough for me to go on from here.