开发者联盟

iOS IAP支付常见问题汇总与解决

2019-06-19  本文已影响2人  72行代码

1. 获取不到商品信息的原因

2. 如果请求到了商品信息,也发送了购买请求,但是监听购买结果的方法就是不执行

#pragma mark - 获取单例
+ (instancetype)sharedInstance{
  static IAPPayManager* instance = nil;
  static dispatch_once_t onceToken = 0;
  dispatch_once(&onceToken, ^{
      instance = [[IAPPayManager alloc] init];
      [[SKPaymentQueue defaultQueue] addTransactionObserver:instance];//将工具栏对象添加为购买的监听对象
  });
  return instance;
}

3. IAP审核环境

4. 只要不是红色的状态都是可以进行支付测试的,元数据丢失是因为,在增加内购项目的时候,没有填写完全,产品ID是唯一的,假如你删除了一个内购项目,那么这个产品ID就不能用了,所以填写要慎重

配置内购商品

5. 注册沙盒测试账号时,提示报错Unknown Errors while creating Sandbox Tester, Please check Error Log, email=a***st@qq.com

6. 验证服务器地址

7. 苹果返回状态码

Status 描述
0 App Store 验证成功
21000 App Store不能读取你提供的JSON对象
21002 receipt-data域的数据有问题
21003 receipt无法通过验证
21004 提供的shared secret不匹配你账号中的shared secret
21005 receipt服务器当前不可用
21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送
21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务
21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务

8. 国内连接苹果服务器的稳定性
开发之初,苹果方就很负责的告知:我们的服务器不稳定。真正开发之后,发现苹果方果然是很负责的,不仅是不稳定,而且足够慢。app store server验证一个收据需要3-6s时间
附:iOS开发内购流程
附:我的博客地址

上一篇 下一篇

猜你喜欢

热点阅读