一、IOS 内购类型

1、消耗型商品: 只可使用一次的产品,使用之后即失效,必须再次购买。 示例:抽奖券。 2、非消耗型商品: 只需购买一次,不会过期或随着使用而减少的产品。 示例:游戏 App 的赛道。 3、自动续期订阅: 允许用户在固定时间段内购买动态内容的产品。除非用户选择取消,否则此类订阅会自动续期。 示例:每月订阅提供流媒体服务的 App。 4、非续期订阅: 允许用户购买有时限性服务的产品。此 App 内购买项目的内容可以是静态的。此类订阅不会自动续期。 示例:为期一年的已归档文章目录订阅。

二、IOS内购通用流程

1、用户向苹果服务器发起购买请求,收到购买完成的回调(购买完成后会把钱打给申请内购的银行卡内) 2、购买成功流程结束后, 向服务器发起验证凭证(app端自己也可以不依靠服务器自行验证) 3、自己的服务器工作分4步:

3.1接收ios端发过来的购买凭证。 3.2 判断凭证是否已经存在或验证过,然后存储该凭证。 3.3 将该凭证发送到苹果的服务器(区分沙盒环境还是正式环境)验证,并将验证结果返回给客户端。 3.4 修改用户相应的会员权限或发放虚拟物品

总结:简单来说就是将该购买凭证用Base64编码,然后POST给苹果的验证服务器,苹果将验证结果以JSON形式返回。

三、IOS和安卓自动续费区别

1、除华为外,安卓的自动续费是由后端控制发起每月的扣款(PS:华为的自动续费与iOS相同,由华为自己发起。) 2、iOS是订阅自动续费的商品后,每月由苹果发起扣费,再通知后端,从而进行一系列业务执行

四、IOS沙盒环境自动续费订阅有效期

实际订阅有效期Sandbox测试有效期1周3分钟1个月5分钟2个月10分钟3个月15分钟6个月30分钟1年1小时

假设项目创建的商品是按月扣费的自动续费商品,则测试人员使用沙盒账号开通该自动续费商品后,每隔5min苹果会自动发起下次扣费,模拟下月的扣费情况,此时可以查看业务商品的到期时间是否延长等。

PS: 一般情况下是每隔5min则扣款一次,假设用户中途有取消订阅,且当前同一商品自动扣费未超过5次,再次使用该沙盒账号订阅后,存在大于5min后执行下次扣费的可能,请QA人员耐心等待下~假设10min后依然未扣款,存在苹果扣费成功但暂未给后端发通知的可能和后端收到通知并未处理业务的可能。

五、沙盒测试关注点

1、一个苹果沙盒账号只能享受一次免费试用期,所以每测试一次都要申请一个新的沙盒账号; 2、一个续费商品对应的一个沙盒账号,测试订阅最多仅能自动续期 6 次; 3、没办法模拟用户手动取消订阅的场景,因为沙盒账号没有办法管理订阅; 4、另外需要注意,沙盒账号的续订,如果一直打开着app,可能过了5分钟续订周期也不会收到通知,最好是杀死app,5分钟后重新启动,这样就会收到续订的通知了;

六、测试场景

购买中断测试

你可以在运行 iOS 14 或更高版本的设备上测试购买中断的情况,只需在 App Store Connect 中为特定测试员的沙盒 Apple ID 启用购买中断即可。启用后,此沙盒 Apple ID 在沙盒环境中从设备上进行的购买尝试将被中断;除非你停用此功能或测试员在 iOS 设备上同意条款与条件,否则购买尝试将一直被中断。此功能可以测试 App 对中断情况的响应,进而确保顾客有顺畅的购买体验。 通常,当顾客需要解决有关 Apple ID 的问题时,购买中断的情况便会出现。示例场景包括: 条款与条件已更新,需要用户同意。 付款方式已过期,需要用户更新。 如果为沙盒测试员启用了购买中断,该沙盒 Apple ID 的所有购买都将被中断;只有解决中断问题后,交易才能完成。在沙盒环境下,测试员需要先同意条款与条件,才能完成购买。若要恢复该沙盒 Apple ID 的购买流程,你需要前往 App Store Connect 停用此功能,或让测试员在 iOS 设备上同意条款与条件。

取消订阅 在订阅周期内“苹果管理订阅”页面点击取消订阅。重启订阅测试 区分订阅已过期、订阅已取消 模拟手段: 1、取消订阅后,在订阅周期内去“苹果管理订阅”页面重新订阅。(订阅已取消未过期) 2、取消订阅后,在订阅周期外去“苹果管理订阅”页面重新订阅。(订阅已取消已过期) 3、自动续期12次,订阅自动取消后,在订阅周期内去“苹果管理订阅”页面重新订阅。升级订阅降级订阅同级切换订阅成功自动续期其他异常情况 a.用户下单已付款成功后,去核销过程中,用户行为中断 步骤: 1、站内首次购买成功, 2、在点击核销前(支付成功苹果会返回一个弹窗),断开设备网络 3、再去app点击核销弹窗 4、恢复网络 5、检查商品购买是否成功 期望: 客户端补单成功

b. 同一个苹果账号,同一个站内账号:自动续费时,服务端已核销苹果回调,验证客户端再次上传凭证时,服务端是否拦截; c. 同一个苹果账号,同一个站内账号:自动续费时,服务端未收到苹果服务器的回调,此时客户端推送苹果的回调,验证服务端在收到客户端的自动续费凭证时,是否可以正确下发所销售的服务; d. 超级异常的情况:服务端未收到苹果回调,客户端也未推送苹果回调,对销售服务的下发处理验证 e. 同一个苹果账号不同的站内账号,购买同一个商品(期望:不需要给用户提示购买成功之类的,实际上用户并没有再次购买商品) f. 同一个苹果账号不同的站内账号,自动续费时,服务内容怎么发放? h. 退款回调的处理

七、官方文档

IOS沙盒测试APP内购 创建沙盒测试Apple ID

八、风险点

1、IOS VIP订阅服务降级,首次不会扣费,只是切换套餐,第一次订阅并扣费的时间点是在上一个订阅套餐时间结束节点。例:连续包年切换连续包月服务,包年套餐有效期截止至4月30日,4月10日切换包月,这时候不会扣除包月费用,4月30日包年到期后会自动续费包月套餐,并扣除包月套餐费用 2、同一AppleID同一设备,A账号使用了首月优惠资格后,B账号再次购买,面板展示拥有首月优惠资格,但实际支付时扣除的是非优惠价格,付费面板会展示实际付费价格 3、一个AppleID同时只绑定一个撕歌ID,换号开通VIP服务,之前那个号的VIP权益取消,将剩余权益时长续接到新账号 4、VIP自动续费权益时长会受到苹果和撕歌通知服务的实际延迟影响,波动范围1-10min

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。