Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maxed out the LSApplicationQueriesSchemes #1751

Open
dagostini opened this issue Jul 19, 2024 · 18 comments
Open

Maxed out the LSApplicationQueriesSchemes #1751

dagostini opened this issue Jul 19, 2024 · 18 comments
Labels
awaiting release improvement PR contains improvement

Comments

@dagostini
Copy link

Following the AdyenTwint integration instructions we've notices that we have to add 50 entries to the supported url schemes. As per Apple Docs, this will max out the number of supported url schemes so we can't add any of our own url schemes.

Are you aware of this limitation?

Is it really necessary to support all 50 url schemes for TWINT to work properly?

@erenbesel
Copy link
Contributor

Hey @dagostini

We are indeed aware of Twint's requirements. But the doc seems to be slightly misleading. Twint will work with the url schemes you included and won't work only for the ones not included.

We will fix the documentation to reflect this, thanks!

@dagostini
Copy link
Author

You're welcome @erenbesel . Thanks for the quick reply.

So, out of those 50 twint apps we need to pick 35ish apps we want to support? Where can I find a list which scheme opens which app?

@goergisn
Copy link
Contributor

Hi @dagostini,
Twint unfortunately does not provide an official mapping from scheme to app.
So as a rule of thumb try to add all the ones you can starting from the top until you reach the limit of 50.

I'm also checking internally for any other guidelines and will come back to you about it.

@goergisn
Copy link
Contributor

Hi @dagostini
I just wanted to give you a quick update. We checked back with TWINT and there is not a clear recommendation for the case when you cannot add all the banks. Each scheme is unique to a bank and some schemes might not be in use currently.
So it could be that e.g. twint-issuer2:// is unused but twint-issuer49:// is a quite popular bank.

There will however be an update to the Checkout SDK soon that allows you to set a flag to not use the schemes to detect the installed banking apps but instead show a list of all possible banks and allow the user to pick one that is installed.

I'll keep you posted here.

@dagostini
Copy link
Author

Hi @goergisn ,

Thanks for the update, I'll pass the info to my team. Do keep us posted, please 🙏

Have a nice day :)
Dejan.

@elitalon
Copy link

elitalon commented Aug 15, 2024

Hey @goergisn,

Do you have instructions to verify the TWINT integration on Adyen's Test environment? I assume using TWINT's Configurator app is needed, but I might be wrong.

Tangentially related, the documentation says that:

After pressing the button on the component, TwintComponent makes a /payments call with subtype: sdk and trigger the flow with retrieving the code through ActionComponent

But I don't see the subtype field being sent in the integration I'm developing. At least when using the drop-in.

Is there anything else that needs to be configured? If it helps, I can open a separate issue for this particular scenario.

Thank you!

@goergisn
Copy link
Contributor

@elitalon do you mind creating a new issue for the test environment question as there might be additional followup that would otherwise spam this thread and might also help others to find a solution to a similar issue?

But to give you a quick answer, yes you need the configurator app to download the wallet app which acts as a banking app.

By default drop-in uses the redirect-integration of TWINT which redirects a user to the TWINT website which handles the rest of the flow.
If you want to have a "native" integration you have to import/include AdyenTwint which automatically sends the subtype for you correctly.
This is really based on your usecase (The redirect-integration does not support recurring payments with TWINT, which is a feature that will be available for the native-integration soon).

@elitalon
Copy link

@goergisn I opened a new issue: #1783. Let me know if you need further details.

@goergisn goergisn reopened this Sep 27, 2024
@goergisn goergisn added awaiting release improvement PR contains improvement labels Sep 27, 2024
@elitalon
Copy link

Hi @goergisn, do you have any news on this?

There will however be an update to the Checkout SDK soon that allows you to set a flag to not use the schemes to detect the installed banking apps but instead show a list of all possible banks and allow the user to pick one that is installed.

@goergisn
Copy link
Contributor

Hi @elitalon
There is a PR currently that is waiting to be merged which will be included in the Release next week. 👌

@elitalon
Copy link

@goergisn Good stuff, thank you!

@goergisn
Copy link
Contributor

goergisn commented Dec 3, 2024

@elitalon we just shipped 5.14.0 which allows you to specify a maxIssuerNumber as provided by the Twint SDK.

Closing the issue for now but feel free to re-open if there are additional questions :)

@goergisn goergisn closed this as completed Dec 3, 2024
@elitalon
Copy link

elitalon commented Dec 3, 2024

@goergisn Thanks!

@elitalon
Copy link

elitalon commented Dec 4, 2024

Hey @goergisn, how can we set maxIssueNumber exactly with a drop-in implementation?

This is how we are currently configuring the drop-in, redacted for clarity:

import Adyen
import AdyenDropIn
import AdyenTwint

/* … */

let context = try AdyenContext(
    apiContext: .init(environment: .test, clientKey: <redacted>),
    payment: .init(
        amount: .init(value: 0, currencyCode: "CHF", localeIdentifier: nil),
        countryCode: "CH"
    )
)

let configuration = DropInComponent.Configuration(style: /* … */)
configuration.card.showsStorePaymentMethodField = false
configuration.actionComponent.twint = .init(callbackAppScheme: <redacted>)

let dropIn = DropInComponent(
    paymentMethods: paymentMethods, // This is a `PaymentMethods` instance from Adyen SDK
    context: context,
    configuration: configuration
)
dropIn.delegate = self
presentingViewController.present(dropIn.viewController, animated: true)

As far as I can see, AdyenActionComponent.Configuration.Twint doesn't provide any affordance to set maxIssueNumber, only TwintSDKActionComponent.Configuration does.

Am I missing something?

Thanks!

@goergisn goergisn reopened this Dec 4, 2024
@goergisn
Copy link
Contributor

goergisn commented Dec 4, 2024

Hi @elitalon,
you did not miss anything - we did not add it to the drop-in action component configuration.
There is a PR that adds that field to the configuration - do you mind giving it a try and let us know if it solves it for you?

See: #1913

@elitalon
Copy link

elitalon commented Dec 5, 2024

@goergisn Sure, I will give it a try as soon as I can. I'll keep you posted.

@elitalon
Copy link

elitalon commented Dec 6, 2024

@goergisn I tried the changes in #1913 and it works for us.

I think we can close this issue once we have a public release that includes it.

Thanks!

@goergisn
Copy link
Contributor

goergisn commented Dec 6, 2024

Great to hear @elitalon - will leave the ticket open until the release 👌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting release improvement PR contains improvement
Projects
None yet
Development

No branches or pull requests

5 participants