美文网首页
苹果内购

苹果内购

作者: anpt | 来源:发表于2019-05-30 20:20 被阅读0次

    一、内购支购买项目类型:

    1.消耗型商品
    2.非消耗型商品
    3.非续期订阅
    4.自动续期订阅

    苹果官方网址:
    https://help.apple.com/app-store-connect/#/dev3cd978dbd
    https://developer.apple.com/in-app-purchase/


    二、内购支付流程:

    1.用户点击发起购买请求

    2.APP服务器获生成一份订单并返回App Store商品id给客户端

    3.客户端对这个商品id进行苹果服务器IAP商品查询

    4.用户支付调起IAP支付

    5.支付成功获取到一份交易成功凭证

    6. 客户端发送订单号和成功支付的凭证到服务器(区分沙盒环境还是正式环境)

    7. 服务器验证凭证是否合法,对用户业务操作(成功增加一个月会员)

    8.返回查询结果到客户端

    9.客户端业务逻辑处理


    三、注意事项:

    申请相关:

    需要注意的是如果应用是第一次进行IAP开发, 首先要完善苹果商店内的个人信息 (银行卡信息、 税务相关信息)才能创建相关商品, 而且需要在下一个发布版本中审核商品, 如果曾经审核过IAP开发, 可直接在后台进行新增商品审核。

    测试相关:

    1.内购必须用真机测试;
    2.测试时必须退出App Store自己的Apple ID,登录沙盒的测试Apple ID .
    3.本身请求美国服务器就慢,为防止审核人员误解,我们需要在购买时加载动画;

    丢单处理

    由于IAP服务器无法保证质量, 或者自己服务器验证凭证出现问题时, 可能会出现丢单(用户付费成功, 但是凭证无法成功向自己服务器验证)的情况, 对于这种情况, 我们可以这样处理。

    用户成功下单后,储存订单&uid&凭证。

    存储 订单&uid&凭证
    @param orderID 订单
    @param uid 用户uid
    @param receipt 凭证
    @param saveKey 储存key
    */
    - (void)saveOrderReceiptWithOrderID:(long long)orderID
                                uid:(NSString *)uid
                            receipt:(NSString *)receipt
                            saveKey:(NSString *)saveKey;
    

    在用户向服务器验证成功后或者非网络原因造成的失败后, 删除此条记录,

    删除 订单&凭证
    @param orderID 订单
    @param receipt 凭证
    @param saveKey 储存key
    */
    - (void)removeOrderReceiptWithOrderID:(long long)orderID
                              receipt:(NSString *)receipt
                              saveKey:(NSString *)saveKey;
    

    这样如果由于网络问题或者服务器出现问题造成丢单, 我们可以在下一次用户启动APP再次去进行验证这笔订单, 重复上面流程

     核对支付成功但是验证失败的订单
    */
    - (void)checkLocalLostVipOrder;
    

    相关文章

      网友评论

          本文标题:苹果内购

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