博客> IAP 支付流程以及控制
IAP 支付流程以及控制
2018-07-19 14:06 评论:0 阅读:502 lsb
ios iap

最近项目优化IAP支付控制漏单、坏单问题,这里了下大概解决思路,需要服务器配合验证。如有不合理或者更好办法请大神指正

1.获取appStore的道具列表 2.获取服务器可销售道具列表 3.对比1,2显示可销售列表 3.购买道具 - 苹果支付 - 支付成功 得到payment(苹果支付完成,即此步以后的操作都与苹果无关,苹果只提供订单验证,发货是否完成都不需要和苹果交互) 3.根据道具属性(A,消耗类,B,非消耗类)进行验证 A类 4.本地记录下payment信息(引擎记录可能删除程序,所以考虑userinfo记录) 5.将payment信息提供给server,server检查是否已经处理过payment;处理过返回状态给客户端;没处理过,走苹果服务器验证receipt是否有效,有效即发货,处理状态返回给客户端; 6.客户端收到返回状态后清理userInfo缓存

B类首次购买与A类一致,只是增加购买前需要通过服务器检查是否已购买

注意:服务器端也要保持payment信息,如果要更有效的控制漏单、坏单、重复,需要服务器提供验证失败订单列表,配合客户端缓存列表,进行验证补发问题订单

特殊情况: 第3.步骤中可能苹果支付成功但是没有收到payment就崩溃或者用户干掉程序,iap基类有提供购买queue,如果未完成queue是不会移除的,所以下次程序启动会收到结果。

验证情况: 1.重新启动程序,能收到上次queue通知 2.删除程序再次安装登陆后,能收到上次queue通知

这种情况,对于多账号登陆时要考虑干掉后登陆了其他账号情况; 处理办: 第3.步骤中的queue对应payment中保留applicetionUserName,关联的登陆账号;后台验证接口要支持传入登陆者

终结情况,queue未结束,用户删除app再没用过,这个单就死了

收藏
1
sina weixin mail 回到顶部