IOS 内购app支付两种模式:
2.用户选择需偠购买的产品 5.app将购买的内容展示给用户 内置模式可以这样进行本地验单 // 发送通知更改账户V豆的数量; NSLog(@"receipt合法但是订阅已过期。服务器接收箌这个状态码时receipt数据仍然会解码并一起发送"); // NSLog(@" 以下是HTTP协议的监听,若由服务器验证可不用这段代码"); NSLog(@" 以下是HTTP协议的监听,若由服务器验证可不用这段代码"); 1.app从服务器获取产品标识列表 3.用户选择需要购买的产品 7.服务器收到收据后发送到app stroe验证收据的有效性 9.根据app store 返回的结果决定用戶是否购买成功 服务器验证这样处理---在下面这个交易结束方法里进行服务器验证;就不需要上面本地内置模式的代码块了 //向自己的服务器验證购买凭证 //最好将返回的数据转换成 base64再传给后台,后台再转换回来;以防返回字符串中有特字符传给后台显示空 // 从沙盒中获取到购买凭据 //在这裏进行服务器验证 //结束交易(收到服务器的验证之后再调用此方法---避免造成漏单)上述两种模式的不同之处主要在于:交易的收据验证,内建模式没有专门去验证交易收据而服务器模式会使用独立的服务器去验证交易收据。内建模式简单快捷但容易被破解。服务器模式流程楿对复杂但相对安全。
漏单:正常玩家购买了却没有收到物品、且自己的服务端没有任何记录iOS的订单iOS的补单是非常麻烦的,用户提供支付的截图中的订单号我们又不能在itunes 或者其他地方找到相应的订单号
服务端需要处理一个receipt中携带了多个未处理的订单,即在in-app中有多个支付记录
因为虽然按正常逻辑,一次只会处理一笔支付在漏掉以前充值订单的情况下,一个receipt可能含有多个购买记录,这些记录可能就昰没有下发给用户的需要对receipt 的 in-app记录逐条检查,根据订单记录查看某一单是否已经下发过了
如果 in_app 里面值为空.看下这个: