#maddockst

1 messages · Page 1 of 1 (latest)

indigo siloBOT
tidal prairie
#

Hi there

vale ridge
#

Hello!

tidal prairie
#

What payment method are you using?

#

And are you using the iOS and Android SDKs separately or is this a React Native app?

vale ridge
#

I'm manually typing in my Visa card, the same card that works on Android

#

It's actually a NativeScript app, but I am interacting with both SDKs individually

tidal prairie
#

Interesting.

#

So this is a 3DS prompt from your bank

#

Can you provide a screenshot, or even better a video, of what happens exactly?

#

Obviously don't show any sensitive data like credit card details

vale ridge
#

Let me try and do a video, two seconds

tidal prairie
#

Thanks!

vale ridge
#

Hopefully that illustrates it 🙂

tidal prairie
#

Thanks

#

Can you provide the PaymentIntent associated?

vale ridge
#

pi_3LiiuWHM14YvCzvf0x97RUzK

#

I will try another card in the mean time

tidal prairie
#

Yep if you can try another card that would be great

vale ridge
#

My MasterCard worked perfectly

tidal prairie
#

Did it prompt 3DS as well? Can you provide that PaymentIntent ID?

#

Also have you tried in testmode with a 3DS test card?

vale ridge
#

Yes, it did prompt 3DS. PaymentIntent ID: pi_3LiiuWHM14YvCzvf0x97RUzK

#

No, I actually haven't tried a 3DS test card

#

Can I use a 3DS test card through the xcode simulator?

tidal prairie
#

Yep

vale ridge
#

Ok, let me quickly try that

tidal prairie
vale ridge
#

Oh, two seconds

#

Ah, yes. Apologies, I just retried the same payment intent. I will create a fresh one and send you that. 2 seconds

tidal prairie
#

Sounds good

vale ridge
#

I tried another Visa card with a different bank, which failed as well. I'm going for another MasterCard now

tidal prairie
#

Interesting. Can you provide that PaymentIntent?

vale ridge
#

I've got a few:

#

pi_3LiiuWHM14YvCzvf0x97RUzK - Mastercard (A) that succeeded with 3DS
pi_3LijFwHM14YvCzvf0fFsXbtC - Mastercard (A) that now failed with 3DS
pi_3LijEiHM14YvCzvf1YQlOIn7 - Mastercard (B) that failed with 3DS
pi_3LijDZHM14YvCzvf0VTHrrdH - Visa (A) that failed with 3DS

tidal prairie
#

Thanks, looking

vale ridge
#

The 3DS test card has also failed in the Simulator

tidal prairie
#

Okay yeah

#

There looks to be something weird going on with your integration

#

Where 3DS is getting canceled

#

Can you share your PaymentSheet code?

#

And can I see the test PaymentIntent?

vale ridge
#

I'm not sure how easy it is going to be to understand as it's part Swift part TypeScript. What particular part do you want from the PaymentSheet code?

#

The test PI is pi_3LijNRHM14YvCzvf1J64yvzB

#

This is the Swift class:

#

It's taken from an old NativeScript library so it isn't the best

tidal prairie
#

Hmm wait a sec, for that test mode PI you see the same thing — a blank white screen?

vale ridge
#

Yes, a blank white screen.

tidal prairie
#

Okay and you are able to input PaymentMethod details into PaymentSheet, then click Pay? I'm a bit thrown by your initial video where I don't see PaymentSheet presenting successfully at all....

#

Oh

#

ignore me

#

I see

#

Sorry

vale ridge
#

I can show you now with the tes tcard

tidal prairie
#

You had it blurred

#

I just looked too quickly

#

But yeah, a video in testmode would be really helpful as well

#

Looking at the code, but also may need to pull in a colleague more familiar with iOS to help further here

vale ridge
vale ridge
#

Weirdly, the fact it worked that once suggests to me it may be some type of timing issue

#

Android correctly went to the 3DS for the test card. I will now try Android with 3 real cards (that previously failed on iOS)

tidal prairie
#

Yeah pretty sure this is something with the iOS code

vale ridge
#

I tried the same card, side by side in live mode on iOS and Android ... Android worked, iOS failed

wraith oak
#

Hello! After the Safari View Controller appears can you use Safari's developer tools on your Mac to connect to it and see what, if anything, is displayed in the console?

vale ridge
#

Is this on a live device or a simulator?

wraith oak
#

Either.

#

Are you familiar with the procedure I'm talking about? If not I can walk you through it.

vale ridge
#

Two seconds

#

I've done it once aha, it's nearly done

#

Might need some help, sorry. I've got develop toolbar on. I've ticked "Automatically show Web Inspector for JSContexts"

#

Anything else?

wraith oak
#

Are you reproducing the issue in the simulator or on an actual device?

vale ridge
#

Yes, I can replicate it. The page is about:blank

#

No content, no console logs

wraith oak
#

Ah, okay, so you got the developer tools to appear for the Safari View Controller?

vale ridge
#

Yes, if I've done this correctly. Seems to be highlighting the dialog

wraith oak
#

Yep, that's it!

vale ridge
#

And when I close the dialog, the inspector also closes

wraith oak
#

So you said this only happens sometimes? Other times it works normally?

vale ridge
#

Well, we're talking 1 in 10 it works on iOS. Android, 10/10

wraith oak
vale ridge
#

I haven't

wraith oak
#

Will you try setting that up and see if it makes a difference?

vale ridge
#

I can do, I've not got a return url setup at all so I'm not entirely sure on the steps.

I'm just concious that it's actually worked previously without a return url

vale ridge
#

Would you be able help me set up this return URL please?

wraith oak
#

How can I help?

vale ridge
#

Sorry, my minds a bit all over the place. I don't really know here to start 😦

wraith oak
#

No worries, we'll get it figured out!

vale ridge
#

Thanks a lot

wraith oak
#

Can you actually give me a few minutes? I need to step away for a little bit.

vale ridge
#

No problem at all

wraith oak
#

Thanks, will let you know when I'm back. Shouldn't be too long!

vale ridge
#

For when you're back. I'm not sure if this helps. I've got an existing integration which uses CardElements and that is also trying to open 3DS and showing a blank screen.

wraith oak
#

Okay, sorry about that! Back now.

vale ridge
#

No problem at all

wraith oak
#

So you've got two different integrations, one using the PaymentSheet and one using the CardElement, and both have the same issue?

vale ridge
#

Well. I'm upgrading my CardElement to use PaymentSheet. The original one used a NativeScript package which I've taken out. It now interacts with the iOS and Android SDKs directly. Android working perfectly for PaymentSheet (not tried CardElement) and iOS doesn't work for either.

#

This couldn't be an iOS 16 issue could it?

wraith oak
#

I don't think so. You're using the release version of iOS 16?

vale ridge
#

Yes I am, not the Beta

wraith oak
#

Is this happening in live mode, test mode, or both?

vale ridge
#

Both

#

I have had this work once in live mode, for a MasterCard. That failed on a second try later on

wraith oak
#

If you haven't yet, can you try the 4000000000003220 test card and see if it behaves the same?

vale ridge
#

Yes, exact same

wraith oak
#

What version of the Stripe iOS SDK are you using?

vale ridge
#

The latest it appears pod 'Stripe'

#

Actually, apparently not. Installing Stripe 22.8.1 (was 22.6.0)

wraith oak
#

Ah, okay. I don't think anything between those versions would impact this, but worth a try.

vale ridge
#

I'll try it

wraith oak
#

In the meantime, can you share the code you're using to configure and present the PaymentSheet?

vale ridge
#

Of course. Bit of a warning, it is NativeScript ... if things look strange aha

#

This is the Swift file which interacts with the SDK

#

It's also not all my code, so don't judge aha

wraith oak
#

When your present function is called, what are you passing in for the ctrl View Controller?

vale ridge
#

Ok, this is where I was going next.

#

It's once again, something NativeScript provided. Frame.topmost().currentPage.ios

#

Which is apparently a UIViewControllerImplementation

wraith oak
#

Hm. That doesn't sound right. That may be the issue. In NativeScript is there a way to get the current UIViewController?

vale ridge
#

Let me look

#

I did also find it suspicious that the overlay had a white bar at the bottom

vale ridge
#

I've just got it to open the 3DS ... I'm not getting my hopes up, I'm going to do some more testing

wraith oak
#

What did you change to get that to happen?

vale ridge
#

I've now got an instance of UILayoutViewController

wraith oak
#

That sounds better/closer!

vale ridge
#

I looked at a project that presents overlays (thinking it needs the highest view controller) and it did it slightly different. I'll do some testing on a live device and hopefully I can close this off

vale ridge
#

I can’t thank you enough. That’s all working now, tried on a couple of devices with a few cards. Thanks a lot and sorry for the trouble. Stupid ViewController aha

wraith oak
#

Awesome to hear it's working!