#maddockst
1 messages · Page 1 of 1 (latest)
Hi there
Hello!
What payment method are you using?
And are you using the iOS and Android SDKs separately or is this a React Native app?
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
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
Let me try and do a video, two seconds
Thanks!
Yep if you can try another card that would be great
My MasterCard worked perfectly
Did it prompt 3DS as well? Can you provide that PaymentIntent ID?
Also have you tried in testmode with a 3DS test card?
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?
Yep
Ok, let me quickly try that
Think you shared the same PaymentIntent
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
Sounds good
I tried another Visa card with a different bank, which failed as well. I'm going for another MasterCard now
Interesting. Can you provide that PaymentIntent?
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
Thanks, looking
The 3DS test card has also failed in the Simulator
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?
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
Hmm wait a sec, for that test mode PI you see the same thing — a blank white screen?
Yes, a blank white screen.
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
I can show you now with the tes tcard
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
Ok, not to worry. I will try all of these cards on my Android device in test mode just to confirm 100% it's the integration
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)
Yeah pretty sure this is something with the iOS code
I tried the same card, side by side in live mode on iOS and Android ... Android worked, iOS failed
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?
Is this on a live device or a simulator?
Either.
Are you familiar with the procedure I'm talking about? If not I can walk you through it.
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?
Are you reproducing the issue in the simulator or on an actual device?
Ah, okay, so you got the developer tools to appear for the Safari View Controller?
Yes, if I've done this correctly. Seems to be highlighting the dialog
Yep, that's it!
And when I close the dialog, the inspector also closes
So you said this only happens sometimes? Other times it works normally?
Well, we're talking 1 in 10 it works on iOS. Android, 10/10
Have you set up a return URL in iOS as documented here? https://stripe.com/docs/payments/accept-a-payment?platform=ios&ui=payment-sheet#ios-set-up-return-url
I haven't
Will you try setting that up and see if it makes a difference?
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
Would you be able help me set up this return URL please?
How can I help?
Sorry, my minds a bit all over the place. I don't really know here to start 😦
No worries, we'll get it figured out!
Thanks a lot
Can you actually give me a few minutes? I need to step away for a little bit.
No problem at all
Thanks, will let you know when I'm back. Shouldn't be too long!
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.
Okay, sorry about that! Back now.
No problem at all
So you've got two different integrations, one using the PaymentSheet and one using the CardElement, and both have the same issue?
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?
I don't think so. You're using the release version of iOS 16?
Yes I am, not the Beta
Is this happening in live mode, test mode, or both?
Both
I have had this work once in live mode, for a MasterCard. That failed on a second try later on
If you haven't yet, can you try the 4000000000003220 test card and see if it behaves the same?
Yes, exact same
What version of the Stripe iOS SDK are you using?
The latest it appears pod 'Stripe'
Actually, apparently not. Installing Stripe 22.8.1 (was 22.6.0)
Ah, okay. I don't think anything between those versions would impact this, but worth a try.
I'll try it
In the meantime, can you share the code you're using to configure and present the PaymentSheet?
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
When your present function is called, what are you passing in for the ctrl View Controller?
Ok, this is where I was going next.
It's once again, something NativeScript provided. Frame.topmost().currentPage.ios
Which is apparently a UIViewControllerImplementation
Hm. That doesn't sound right. That may be the issue. In NativeScript is there a way to get the current UIViewController?
Let me look
I did also find it suspicious that the overlay had a white bar at the bottom
I've just got it to open the 3DS ... I'm not getting my hopes up, I'm going to do some more testing
What did you change to get that to happen?
I've now got an instance of UILayoutViewController
That sounds better/closer!
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
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
Awesome to hear it's working!