美文网首页iOSiOS开发进阶
IOS内购服务端技术方案

IOS内购服务端技术方案

作者: 小晨主 | 来源:发表于2017-01-13 14:30 被阅读0次

    IOS内购服务端技术方案

    IOS购买vip流程

    1. IOS端,用户点击相应的购买按钮
    
    2. 服务端生成订单,并返回订单信息(包含在苹果后台设置产品对应的ProductID)
    
    3. 客户端发起支付
    
    4. 客户端支付完毕,拿到苹果返回的transaction,把该transaction和订单信息传到服务端
    
    5. 服务端更新订单状态,返回客户端该vip购买订单已完成蛋未验证的状态(此时可认为用户已经是vip),客户端流程已结束
    
    6. 服务端根据transaction,去苹果服务器验证收据的有效性,再去更新订单状态,如果错误,则回滚用户vip资格(异步处理)
    

    IOS内购服务器模式的主要流程如下所示:

    1. app从服务器获取产品标识列表
    
    2. app从app store 获取产品信息
    
    3. 用户选择需要购买的产品
    
    4. app 发送 支付请求到app store
    
    5. app store 处理支付请求,返回transaction信息
    
    6. app 将transaction receipt 发送到服务器
    
    7. 服务器收到收据后发送到app stroe验证收据的有效性
    
    8. app store 返回收据的验证结果
    
    9. 根据app store 返回的结果决定用户是否购买成功
    

    服务端验证注意点

    苹果AppStore线上的购买凭证验证地址是https://buy.itunes.apple.com/verifyReceipt

    测试的验证地址是:https://sandbox.itunes.apple.com/verifyReceipt

    1. 考虑到网络异常情况,服务器的验证应该是一个可恢复的队列,如果网络失败了,应该进行重试。
    
    2. 与苹果的验证接口文档在这里。简单来说就是将该购买凭证用Base64编码,然后POST给苹果的验证服务器,苹果将验证结果以JSON形式返回。
    

    国内连接苹果服务器的稳定性问题

    问题

    1. 用户能否忍受3-6s的等待时间
    
    2. 如果app store server 宕机,如何确保成功付费的用户能够得到正常服务。
    

    解决

    对于第一个问题,我们有理由相信用户完全无法忍受,所以采用异步验证的方式,服务器收到客户端的请求后,就将请求放到MCQ中去处理。
    
    对于第二个问题,由于苹果人员很负责人的告知:我们的服务器不稳定,所以不排除收据验证超时的情况。
    
    对于验证超时的收据,保存到数据库中并标记为验证超时,定时任务每隔一定的时间去app store验证,确保能够获取收据的验证结果。
    

    相关参考

    iOS支付

    iOS应用内付费(IAP)开发步骤列表

    IOS In App Purchase(内购)验证

    相关文章

      网友评论

        本文标题:IOS内购服务端技术方案

        本文链接:https://www.haomeiwen.com/subject/qqrsbttx.html