ios In-App Purchase 内购验证购买是沙盒环境还是真实环境

审核在两天内被苹果拒了两次,原因一样,都是在IPV6环境下,内购充值钻石,没有看到结果

起初以为是 项目没适配ipv6环境,现在想到,在正式环境下,我的项目内购结束后的验证结果调的的是生产环境的url,并没有去回调沙箱环境的验证url

在sandbox中验证receipt:https://sandbox.itunes.apple.com/verifyReceipt

在生产环境中验证receipt:https://buy.itunes.apple.com/verifyReceipt


那么,如何区分登录购买的苹果id是真实账号还是沙箱环境测试账号呢?

识别沙盒环境下收据的方法有两种:

  1. 根据收据字段 environment = sandbox。
  2. 根据收据验证接口返回的状态码。
    如果status=21007,则表示当前的收据为沙盒环境下收据

苹果反馈的状态码:

  • 21000 App Store无法读取你提供的JSON数据
  • 21002 收据数据不符合格式
  • 21003 收据无法被验证
  • 21004 你提供的共享密钥和账户的共享密钥不一致
  • 21005 收据服务器当前不可用
  • 21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中
  • 21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证
  • 21008 收据信息是产品环境中使用,但却被发送到测试环境中验证
最后采取的方案为,客户端不用改动,服务器去验证的时候先调生成环境的url,如果报错了,再去回调沙盒测试环境的url验证

你可能感兴趣的:(内购)