iOS-内购

前言:
关于iOS内购,参考两篇博文
iOS-iOS内购流程(手把手图文教程)
iOS内购你看我就够了(埋坑篇)

PS : 接下来,你可以下载demo将bundleID改为你自己的app,可以测试你的app内购商品购买,前提是:你需要APP开发者账号,

我自己写了一个小的demo.
GitHub : IAPKit

iOS-内购_第1张图片
内购过程.png

逻辑:
 1.查询到内购商品后,同时都会向服务器请求订单.
 2.每次请求查询内购商品的时候,同时都会请求服务器生成一笔新的订单.
 3.每次处理新的订单的时候,选择处理:购买与取消购买.
 4.如果向苹果付款了,会收到一个交易凭证和交易事务.将这两个内容传会给服务验证器.
 5.服务器根据当前的交易凭证,来判断该订单是否完成交易.根据判断发送对应的信息给客户端.
内购最核心的方法,需要处理的方法就是监听交易事务的状态的改变.
iOS-内购_第2张图片
监听方法.png

整个内购的逻辑其实很简单理解,这要主要就是注意细节:

 第一步:请求商品(消费型,非消费型)
 第二步:返回请求结果
 第三步:将获取的商品信息发送给服务器
 第四步:返回一个订单
 第五步:发起购买
 第六步:购买成功后返回购买凭证
 第七步:将购买凭证发送给服务器验证
 第八步:告诉客户端发货

这里比较关键的是第六步:
要将购买凭证发送至服务器,给服务器验证.这里就要考虑客户端出现的情况.
我自己思考了一种情况就是:

1.恰好在这个时候,用户已经支付钱给appStore了,
2.但是发送给服务器验证的时候卡主了,客户端出现网络一次,发不出去,服务器并没有收到交易凭证,
3.这就导致于说,服务器不通知客户端发货.
4.如果我是个用户,我等待的时间久了,我也不会重新再购买一次,因为我明明已经付钱了.
5.我会直接结束整个app,重新进入app.
6.当我重新进入这个app的时候,我要重新验证收据凭证来补单.
7.所以我得需要每次交易完成之后将一些交易凭证内容保存到本地.
8.每次applicationDidBecomeActive的时候验证这些订单是否已经购买.
9.也验证这些订单是否已经发货(根据服务器返回的参数决定)

还有:iOS内购你看我就够了(埋坑篇)最后提到要禁止越狱的用户内购(这个就自己另行考虑了,我还没有仔细考虑到)

思维导图 :

iOS-内购_第3张图片
IAP.png

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