审核在两天内被苹果拒了两次,原因一样,都是在IPV6环境下,内购充值钻石,没有看到结果
起初以为是 项目没适配ipv6环境,现在想到,在正式环境下,我的项目内购结束后的验证结果调的的是生产环境的url,并没有去回调沙箱环境的验证url
在sandbox中验证receipt:https://sandbox.itunes.apple.com/verifyReceipt
在生产环境中验证receipt:https://buy.itunes.apple.com/verifyReceipt
那么,如何区分登录购买的苹果id是真实账号还是沙箱环境测试账号呢?
识别沙盒环境下收据的方法有两种:
- 根据收据字段 environment = sandbox。
- 根据收据验证接口返回的状态码。
如果status=21007,则表示当前的收据为沙盒环境下收据
苹果反馈的状态码:
最后采取的方案为,客户端不用改动,服务器去验证的时候先调生成环境的url,如果报错了,再去回调沙盒测试环境的url验证
- 21000 App Store无法读取你提供的JSON数据
- 21002 收据数据不符合格式
- 21003 收据无法被验证
- 21004 你提供的共享密钥和账户的共享密钥不一致
- 21005 收据服务器当前不可用
- 21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中
- 21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证
- 21008 收据信息是产品环境中使用,但却被发送到测试环境中验证