#oscarcodes
1 messages · Page 1 of 1 (latest)
Hello! We'll be with you shortly. 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.
- oscar-android-ephemeralkeys, 21 hours ago, 31 messages
Hello, happy to help, can you summarize where you currently are with that issue?
Hello, having a bizzare issue on Android implementing the Payment Intent API (https://stripe.com/docs/payments/save-and-reuse - save and reuse payment methods). Our implmentation allowed users to add credit cards and US bank accounts. This was working perfectly fine. Only recently, without any changes to the Android implementation or Stripe configuration on the BE, the bank account is no longer appearing as an option in the PaymentSheet. Could someone offer help?
We're using the 'setup intent' for setting up future payments
Gotcha, can you send me an example ID of a SetupIntent that you are seeing this on?
Of course, did you want the customer ID?
Just the setup intent should be good for now
I can check out the customer ID from there if need be
setupIntentSecret = seti_1OX8PxKA296nhejwGwf5LmFd_secret_PLq6KHb5m7LNbEWar8ycxtLL3BTavIc
customerId - cus_OFcAQo4ksLqkqn
I do see us_bank_account on that intent. Can you send me the text of your code for setting up your payment sheet?
stripeLauncher.launch(
PaymentSheetContract.Args.createSetupIntentArgs(
clientSecret = customerIntentSecret,
config = PaymentSheet.Configuration(
merchantDisplayName = merchantName,
customer = PaymentSheet.CustomerConfiguration(
id = customerId,
ephemeralKeySecret = customerEpheralSecret,
),
appearance = paymentSheetAppearance,
allowsDelayedPaymentMethods = true
)
)
)
Where stripeLauncher:
val stripeLauncher = rememberLauncherForActivityResult(
contract = PaymentSheetContract(),
onResult = {
when (it) {
is PaymentSheetResult.Failed,
is PaymentSheetResult.Canceled -> {
// do something
}
is PaymentSheetResult.Completed -> {
// do something
}
}
}
)
As noted in my first message, this worked perfectly fine up until recently. We've made no changes to the android implementation
I can give you the request ID too
That would be helpful, thank you
req_t4j40EkNhEeWd0
this is the error in the dashboard
more_permissions_required
The provided key 'ek_test_YW*********************************************************************_******rK9w' does not have the required permissions for this endpoint on account 'acct_1Mta0EKA296nhejw'. Having more permissions would allow this request to continue.
{
"error": {
"code": "more_permissions_required",
"message": "The provided key 'ek_test_YW*********************************************************************_******rK9w' does not have the required permissions for this endpoint on account 'acct_1Mta0EKA296nhejw'. Having more permissions would allow this request to continue.",
"request_log_url": "https://dashboard.stripe.com/test/logs/req_t4j40EkNhEeWd0?t=1705003557",
"type": "invalid_request_error"
}
}
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
From that code I am not immediately sure why ACH would not be showing up. Will consult my colleagues on this and get back to you
Will do, apologies, looks like they got a rush of questions at the same time as well. I am still looking in to this now and will get back to you as soon as I can
For ACH not showing up, can you double check that the setup intent ID on your client is the same one that you are expecting from your server? I am still not seeing something that would disable ACH on the client, so I am wondering if there may be a mixup somewhere
Checking now
And for your ephemeral key permissions issue, it looks like your API version when creating the ephemeral key is different than the API version that your client is using when trying to confirm the intents.
I will make sure we improve that error
Just to be clear, when you say client, do you mean android or our servers?
Android
So what I am seeing is your server is making these requests with version 2022-11-15 https://dashboard.stripe.com/test/logs/req_SAJ1aElBPP8K9r
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
Vs android which is using 2020-03-02 https://dashboard.stripe.com/test/logs/req_t4j40EkNhEeWd0
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
Do you think this is the root cause of the issue?
I thought it was, tested an am not getting this error.
We require a version when creating an ephemeral key so I thought it was stricter about that matching.
Ok I see
For ACH not showing up, can you double check that the setup intent ID on your client is the same one that you are expecting from your server? I am still not seeing something that would disable ACH on the client, so I am wondering if there may be a mixup somewhere
Still working on this
Gotcha, talking to a colleague who knows more about android now as well.
Thank you
For ACH not showing up, can you double check that the setup intent ID on your client is the same one that you are expecting from your server? I am still not seeing something that would disable ACH on the client, so I am wondering if there may be a mixup somewhere
Yes, I can confirm the setup secret is the same
Did you write the PaymentSheetContract wrapper? If so would you be able to send us the SDK code behind it?
Specifically where you are calling paymentSheet.presentWithSetupIntent()
Args.createSetupIntentArgs() is what I'm calling
Did you write the PaymentSheetContract wrapper? I did not write a wrapper
And stripeLauncher calls the present method?
Yes
As mentioned, this was working well in the past. I was able to test adding cards and bank accounts. Nothing in the Android code has changed. As a matter of fact, I even tested builds older than 3 months old (when I launched the feature and was 100% sure ACH were available) and even those versions no longer display ACH as an option
This to me seems like a configuration issue
Unfortunately we aren't sure what may have changed here. Can you write in to our support team and send a minimal repro project for this? We can build and debug from there
Also apologies that I did not recognize that PaymentSheetContract was a deprecated object from stripe-android. If you do have the bandwidth to update to use the replacements (PaymentSheet constructor or rememberPaymentSheet()) that may help going forward but I think we'll need to take a closer look offline to figure out what caused this in your existing app.
https://github.com/stripe/stripe-android/blob/master/CHANGELOG.md#20260---2023-07-05
I think it's going to be difficult to write a repro project for this but I can try
Can you give me contact info for your support team
Find help and support for Stripe. Our support site provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.