前阵子时不时看到群友吐槽,自己的App因为苹果支付失败被拒,可是自己测没问题啊。平时总是看热闹,没想到这次提审我也遇到了,风水轮流转啊!
2021年12月4日 下午5:53
发件人 Apple
Guideline 2.1 - Performance - App Completeness
We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 15.1 on Wi-Fi.
Specifically, when we tap on any in-app purchase product, an error message of failed pop up.Next Steps
When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.Resources
You can learn more about testing in-app purchase products in your development sandbox environment in App Store Connect Developer Help.
For more information on receipt validation, please see What url should I use to verify my receipt? in the In-App Purchase FAQ.
Learn how to generate a receipt validation code in App Store Connect Developer Help.Please see attached screenshots for details.
苹果还友好地贴了4-5张支付失败的截图,根据截图我推断应该连苹果支付都没有拉起来,即客户端调用IAP支付,代理方法直接回调失败。我用TestFlight测试了几笔能充值成功了,基本上能断定是苹果沙盒环境的问题。
我问群友之前他们遇到这个问题后来是怎么解决的,群友们献出了自己各种奇巧淫技。
小h:“只能慢慢沟通了,之前我有有一个包,连续沟通三次都是你这情况,实在没办法了,我去掉iPad,只支持iPhone,然后就过了。审核人员都用的iPad,我只能用这种方式强迫他们用iPhone测试”。
小A:我前一个APP也是付费搞了n久都不行,我最后一次过是新建了一个商品,也就是换了产品id,然后把旧的删掉,就过了。
小天:录个视频给他。
小h的话给了我一些启发,对哦,难道和iPad有关。于是我用iPad7(iOS13)测了一下,还真失败了!同一个WiFi下iPhone成功了,iPad失败了。虽然以前用iPad也测试过内购,大部分情况都会成功,但这会iPad测很必然失败,为了找到原因,我试过很多方法,删除重装、清理Safari缓存、切换WiFi、重登沙盒账号、重启设备,仍然支付失败。
我决定回复苹果信息,让审核人员再试一试,并附上了支付成功的截图。
审核人员您好,
Guideline 2.1,关于苹果支付失败的问题,根据您提供的截图,我们推测,您可能连苹果支付的系统弹窗都没有拉起来。我们在TestFlight中反复测试都是没有问题的(见附件)。您支付失败可能是苹果沙盒环境网络不稳定导致的(其它开发者也有反馈类似问题),并不是App的bug,请您再试一试。
建议您换iPhone设备进行审核,iPad相比iPhone在沙盒环境中更容易出现支付失败(我也不知道为什么,这是众多开发者的经验😂)
回复后,当天晚上十一点左右进审,10分钟左右就审核通过了。
总结一下本文要点:
- 苹果审核在沙盒环境,沙盒环境不是很稳定,确实会出现支付失败的情况(其实线上也会只是概率小一点,我们收到过客户反馈总是支付失败,后来又好了)。
- 排除是不是你的bug——在弱网环境下进行测试(重要!)。因为审核人员在国外,所以访问国内服务器延迟可能会很大。写完这篇文章,后来我又遇到了一次测没问题,苹果审核人员始终进不了游戏,回邮件让苹果重试仍然被拒。于是,我开始怀疑是不是我的bug了,我在弱网环境下几乎100%复现了这个bug。(Tips:如何进行弱网测试?设置 - 开发者 - Network Link Conditioner)
- 检查凭证校验地址是不是弄错了,沙盒环境和线上环境凭证校验地址是不一样的,官方推荐的做法是,先请求线上地址,status=21007,再请求沙盒地址。
- 当你确认不是你的bug,而是沙盒环境导致的失败,回复苹果让苹果换设备再试一试。回复要点如下:
- 指出失败的原因:苹果沙盒环境网络不稳定导致,不是你的bug,让苹果再试一试。
- 附上你支付成功的截图:两个不同计费点拉起苹果支付的截图、支付成功的截图、发货到账的截图
- 如果还是失败,让苹果换设备试一试,最好用iPhone
如果觉得这篇文章对你有帮助,请点个赞吧。欢迎关注我的公众号
转载请注明出处,谢谢!