美文网首页
内购代码和充值界面的封装

内购代码和充值界面的封装

作者: Dxc_iOS | 来源:发表于2018-07-13 15:52 被阅读73次

    前言:项目中用到了内购,这里主要想记录一下内购代码封装和充值界面的封装,其实内购代码也参考了网上其他的人的,只是好多都充值不成功,于是研究一下改改,我是一个快乐的代码搬运工😋。。。
    看图说话:


    屏幕快照 2018-07-13 下午3.55.29.png

    废话不多说,直接上栗子🌰:
    内购代码封装

    简要的记录一下内购的流程说明:

    内购的流程:
    1.点击充值,发起预订单 :用户点击立即充值,发起充值流程,请求自己服务器,生成预订单 ,生成的预订单给客户端保存本地.(为了服务端验证防止刷单,本地绑定预订单处理漏单需要);
    2.客户端请求到订单号后 开始向苹果支付(先向appstore请求商品信息,然后付款)调起内购,绑定预订单:(存储模型:产品id,预订单,交易状态,充值状态,时间戳+产品id);
    3.付款成功后appstore会给客户端返回 一个验证信息(用来验证是否合法);
    4.客户端将订单号和验证信息发给服务器;
    5.服务器向appstore验证是支付是否合法(来判断是否给用户加商品);

    注意事项:

    1.沙盒环境测试appStore内购流程的时候,请使用没越狱的设备。
    2.请务必使用真机来测试,一切以真机为准。
    3.项目的Bundle identifier需要与您申请AppID时填写的bundleID一致,不然会无法请求到商品信息。
    4.如果是你自己的设备上已经绑定了自己的AppleID账号请先注销掉,否则你哭爹喊娘都不知道是怎么回事。
    5.订单校验 苹果审核app时,仍然在沙盒环境下测试,所以需要先进行正式环境验证,如果发现是沙盒环境则转到沙盒验证。
    识别沙盒环境订单方法:
    1.根据字段 environment = sandbox。
    2.根据验证接口返回的状态码,如果status=21007,则表示当前为沙盒环境。
    苹果反馈的状态码:
    21000App Store无法读取你提供的JSON数据
    21002 订单数据不符合格式
    21003 订单无法被验证
    21004 你提供的共享密钥和账户的共享密钥不一致
    21005 订单服务器当前不可用
    21006 订单是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中
    21007 订单信息是测试用(sandbox),但却被发送到产品环境中验证
    21008 订单信息是产品环境中使用,但却被发送到测试环境中验证

    相关文章

      网友评论

          本文标题:内购代码和充值界面的封装

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