苹果在审核内购时,购买失败, 首先能够确定内购执行到获取商品这一步失败了, 而不是验证票据失败, 而苹果拒审给我们的解决方案是:
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.
翻译大体意思就是, 审核时候, 正式环境不行, 就用沙箱环境(如果是验证票据失败, 这个记得看下验证票据的域名是正式环境还是沙箱环境, 具体问题具体办) ...其实我的问题是获取不到商品, 在代码处的体现就是:
压根不是在票据验证那里, 没办法, 以往经验告诉我: 问题要么在:
- 商品id, 代码传递与 ITC配置的商品id 不一致;
2.银行卡, 税务信息在ITC是否完整;
结果检查都没问题, 我们知道苹果审核时, 用的是他们自己内部的通用沙箱账号, 也不是正式环境. 我也是沙箱账号, 为啥都正常, 肯定是苹果那边网络问题, 结果, VPN + ipV6 都试过了. 苹果依然给你2.1 解决方案还是 本文中那段英文.
那为什么我们自己用沙箱账号能购买成功,而苹果却购买失败,后面发现xcode 的内购配置没有打开:
苹果测试内购的时候并没有用到我们创建的沙箱账号,沙箱账号是给我们自己的测试用的,他们的沙箱账号是苹果自己配置的通用的账号,一般都是apple.com结尾的;那为什么我们自己用沙箱账号能购买成功,而苹果却购买失败,后面发现xcode 的内购配置没有打开,这个配置不打开苹果那边测试内购就是购买失败,链接不上iTunes 商店,所以需要注意下,这个时候在提交内购就是成功啦!