应用内购买(IAP)各类型在服务端的验证规则

一、非消耗品(比如单本杂志购买,苹果服务器支持恢复)
1.先验证服务器有没有购买记录,如果有,则不处理,此次操作成功 ;
2.如果服务器没有购买记录,则到苹果服务器验证
(1)首先到正式验证地址验证收据,如果返回状态非0,则再向测试验证地址验证收据。
(2)如果最后返回的状态为0,表示是有效购买,则插入,增加权限,此次操作成功。
(3)否则失败。

二、消耗品(比如鱼食,苹果服务器不支持恢复)
1.首先到正式验证地址验证收据,如果返回状态非0,则再向测试验证地址验证收据。
2.如果最后返回的状态为0,表示是有效购买,则插入,增加权限,此次操作成功。
3.否则失败。

三、自动续订的订阅(产品定义有时长,过期自动续订,苹果服务器支持恢复)
1.购买时:
(1).首先从正式验证地址验证收据,如果返回状态是21007,则再从测试验证地址验证收据.
(2).如果苹果返回状态为0,则表示订阅还有效,在苹果返回json的latest_receipt_info或者receipt结构中(latest_receipt_info优先)取出最新过期时间,插入或者更新过期时间,并赋予对应权限,此次操作成功。
(3).如果苹果返回状态为21006,则表示订阅过期,但是还有效。在苹果返回json的latest_expired_receipt_info结构中,取出交易时间(“purchase_date”,过期的订阅交易记录中,没有过期时间字段),[交易时间+订阅时长]为结束,赋予权限。    
(4).否则失败
2.过期验证时:
(1)当用户第一次购买订阅之后,会有一个最后的过期时间记录在服务器,以此计算剩余时间。如果算出此时剩余时间等于0了,取出当前用户最新的一条订阅记录(receipt),通过苹果验证接口进行验证。
(2)首先从正式验证地址验证收据,如果返回状态是21007,则再从测试验证地址验证收据.
(3)如果苹果最后返回结果中状态值为0,表示已经续订,在latest_receipt_info或者receipt结构中(latest_receipt_info优先),取出最新的过期时间,更新服务器过期时间,并赋予对应权限,remaindDays用新的过期时间算。
(4)如果返回状态为21006,表示已经退订,但是还有效。在苹果返回json的latest_expired_receipt_info结构中,
取出交易时间(“purchase_date”,过期的订阅交易记录中,没有过期时间字段),以[交易时间+订阅时长]为过期时间,更新服务器过期时间。

四、非自动续订的订阅(产品定义没有时长,时长自己控制,可以多次购买,类似于消耗品,苹果服务器不支持恢复)
1.验证过程和消耗品相同

五、免费订阅(只能在Newsstand里面用,永不过期,苹果服务器支持恢复)
1.验证过程和非消耗品相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值