In my app I offer an auto-renawable subscription. About half of the users are not able to successfully start the subscription. These are all users that want to pay the subscription with a creditcard that requires an extra authorisation step from the bank, like Mastercard ID Check. After approving the payment in the app of their bank / credit card, StoreKit is reporting an error and the transaction fails.
I've seen this on multiple iPhones running iOS 14.4
The flow:
1 User taps the `start subscription' button in my app
2 In code, the SKPayment is added to the SKPaymentQueue
3 The user is prompted with the subscription pop-up (provided by Apple)
4 The user confirms with password / Touch ID / Face ID
5 The user is promted with a message that an extra authentication step is required due to European laws
6 A website of the credit card is shown with the message: "Please approve this transaction in your bank app. Press the continue button when you're done."
7 The user goes to the bank app and approves the transaction
8 The user goes back to the website from step 6 and presses the continue button.
What I observe:
- The user is redirected to the App Store and nothing happens
- When going back to my app, the user is presented with an SKErrorDomain error 0. The transaction has failed. In code the SKPaymentQueue receives a SKPaymentTransaction with transactionState == failed.
What I expect:
- After clicking the continue button on the website of the credit card, the user is redirected to my app and the SKPaymentQueue receives a SKPaymentTransaction with transactionState == purchased.
When the user stays on step 6 (the website of the bank) and does not open the app of the bank on the same device, but confirms the credit card transaction on another device, the whole flow succeeds as expected. For me it looks like that opening the bank app disturbs the payment flow and casues the transaction to fail.
Does anyone have experience with similar problems with auto-renewable subscriptions and has a way to work around this?