简体   繁体   English

iOS 上的信用卡订阅失败

[英]Subscription fails for credit cards on iOS

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.这些用户都希望使用需要银行额外授权步骤的信用卡支付订阅费用,例如万事达卡 ID 检查。 After approving the payment in the app of their bank / credit card, StoreKit is reporting an error and the transaction fails.在他们的银行/信用卡的应用程序中批准付款后,StoreKit 报告错误并且交易失败。

I've seen this on multiple iPhones running iOS 14.4我在运行 iOS 14.4 的多部 iPhone 上看到了这一点

The flow: 1 User taps the `start subscription' button in my app流程:1 用户在我的应用中点击“开始订阅”按钮
2 In code, the SKPayment is added to the SKPaymentQueue 2 在代码中,将 SKPayment 添加到 SKPaymentQueue
3 The user is prompted with the subscription pop-up (provided by Apple) 3 订阅弹窗提示用户(Apple 提供)
4 The user confirms with password / Touch ID / Face ID 4 用户使用密码/Touch ID/Face ID 确认
5 The user is promted with a message that an extra authentication step is required due to European laws 5 提示用户根据欧洲法律需要额外的身份验证步骤
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." 6 显示信用卡网站并显示以下消息:“请在您的银行应用程序中批准此交易。完成后按继续按钮。”
7 The user goes to the bank app and approves the transaction 7 用户进入银行应用程序并批准交易
8 The user goes back to the website from step 6 and presses the continue button. 8 用户从第 6 步返回网站并按下继续按钮。

What I observe:我观察到的:

  • The user is redirected to the App Store and nothing happens用户被重定向到 App Store 并且没有任何反应
  • When going back to my app, the user is presented with an SKErrorDomain error 0. The transaction has failed.返回我的应用程序时,向用户显示 SKErrorDomain 错误 0。事务失败。 In code the SKPaymentQueue receives a SKPaymentTransaction with transactionState == failed.在代码中,SKPaymentQueue 收到一个带有 transactionState == failed 的 SKPaymentTransaction。

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.单击信用卡网站上的继续按钮后,用户被重定向到我的应用程序,并且 SKPaymentQueue 收到一个带有 transactionState == 购买的 SKPaymentTransaction。

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.当用户停留在第6步(银行网站),没有在同一台设备上打开银行的APP,而是在另一台设备上确认信用卡交易时,整个流程按预期成功。 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?有没有人遇到过自动更新订阅的类似问题并且有办法解决这个问题?

I recently have experienced a similar problem, be it that at step 7 where I should activate my credit card app, I can not do so as the home button does no longer react to double clicking.我最近遇到了类似的问题,在我应该激活信用卡应用程序的第 7 步,我不能这样做,因为主页按钮不再对双击做出反应。 One click, or 3 clicks will terminate the whole transaction in safari, Double click cannot start a new app.在 safari 中单击或单击 3 次将终止整个事务,双击无法启动新应用程序。 After long debate with apple support, they realized that istore pay has a problem with several credit cards banks.经过与苹果支持的长期争论,他们意识到 istore pay 与几家信用卡银行存在问题。 I had to remove the CC and use another form of payment (which indeed succeeded)我不得不删除 CC 并使用另一种付款方式(确实成功了)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM