iOS-StoreKit V1(Original API for In-App Purchase)接入指引

1、前言

为了让大家更好的了解iOS内购常见配置的概念,特总结以下,希望对大家有帮助

2、商品类型

Apple Store商品有四种类型:

类型描述
消耗品使用一次的产品,之后就会耗尽,必须再次购买。示例:游戏中购买的金币
非消耗品购买一次且不会随着使用而过期或减少的产品。示例:会员去广告
自动续期订阅一种允许用户在设定时间内购买动态内容的产品。除非用户取消,否则这种类型的订阅会自动续订。示例:自动续期vip
非自动续期订阅一种允许用户在有限时间内访问内容的产品。这种类型的订阅不会自动续订。示例:订阅一年以查看实时游戏内容

2.1 商品讲解

备注:如果在Apple Store新建商品之后,修改了商品的元数据,可能需要1个小时才会在沙盒看到修改

2.1.1 消耗品

消耗品比较好理解,就是一次性商品,使用完之后需再次购买

2.1.2 非消耗品

非消耗品与消耗品对应,永久拥有,只需买一次,后续可通过恢复购买来恢复权益

2.1.3 自动续期订阅

自动续期的商品,就好比日常生活中的月年(固定期限)会员之类,且自动续费,用户可在设置中手动取消续费,用户可通过恢复购买来获取已经拥有且没有过期的自动续期订阅。下面讲一讲自动续期订阅的一些概念

  1. 所有订阅必须属于某个群组。用户一次只能订阅一个群组内的一个项目,但可以更改为同一群组内的另一个订阅项目。在多个组中购买订阅的用户,每个订阅都会单独收费。
  2. 同一群组内的升降级
    备注:注意各订阅之间用户不同权益的变化
    在这里插入图片描述

升级
当有人切换到您排名更高级别的订阅时。客户从低级订阅中按比例付款将退还到原始付款方式。他们被收取更高级别的订阅费用,该订阅立即生效。升级日期是更高级别订阅的续订日期。
降级
当有人切换到您排名较低的订阅时。他们在下一个续订日期收取较低级别的订阅费用
平级切换
当有人在您排名相同级别的订阅之间切换时。如果订阅的期限不同,交叉等级将在客户的下一个续订日期生效。如果订阅期限相同,客户从上一个订阅中按比例支付的款项将退还到原始付款方式。然后他们被收取新订阅的费用,该费用立即生效。交叉等级日期是新订阅的续订日期

示例:

  • 升级(2->1):立刻升级,等级2按比例退还原订阅剩余钱款
  • 降级(1->2):直到等级1原订阅周期结束,再生效购买的等级2订阅,不产生退款
  • 平级切换(1->1): 1、如果两个商品的周期相同,则切换的订阅立马生效,例如:比如月订阅 A=>月订阅B,立即生效,A 按比例退款。
    2、如果周期不同,则新切换的商品等原订阅周期结束后生效,例如:比如月订阅C=>年订阅D,月订阅C周期结束后年订阅D生效,不退款
2.1.4 非自动续期订阅

非自动续期订阅与自动续期订阅对应,没有固定的周期,周期业务自定义,可重复购买,不会自动续费

  1. 用户可以购买服务或内容的限时访问权限,例如游戏内特定内容的季票。此类订阅不会自动续期,因此若用户希望保留访问权限,则需要在订阅结束后购买新的订阅
  2. 订阅权益,需要自己维护,重复购买只是增加时长
  3. 此类没办法通过苹果的恢复购买去恢复权益,需要业务自己维护。

3、自动续期的优惠类型

在一个订阅商品的订阅定价里面可以配置优惠类型,目前支持的优惠类型:推介促销优惠、促销优惠、优惠代码、回头客优惠

推介促销优惠促销优惠优惠代码回头客优惠
用途获取新的订阅者留存或赢回订阅者获取、留存或赢回订阅者赢回订阅者
适用某订阅组内未曾订阅的用户某订阅组内已订阅或过期的用户某订阅组内未订阅、已订阅、过期的用户某订阅组内订阅过期的用户

我们常用的订阅就是推介促销优惠,下面讲一讲推介促销,如果有其他的类型咨询,请留言。

3.1 推介促销优惠

3.1.1 配置

你可以为用户创建推介优惠,这样用户可以享用你的优惠策略,例如:随用随付、提前支付、免费试用。目前用得较多的是免费试用,例如月订阅免费试用3天,前三天不会扣款,三天之后用户未取消订阅将产生扣费

虽然您可以在App Store Connect中为每个订阅产品创建推介优惠,但每个人每个订阅组只有资格兑换一个推介优惠

3.1.2 随用随付

在此优惠中,新订阅者在特定期限内每个账单期支付介绍性价格(例如,3个月每月1.99美元)。后续将执行你的订阅周期规则(例如:月订阅:2.99美元)
在这里插入图片描述

3.1.3 提前支付

在此优惠中,新订阅者在特定期限内支付一次性介绍性价格(例如,2个月1.99美元)。后续将执行你的订阅周期规则(例如:月订阅:1.99美元)
在这里插入图片描述

3.1.4 免费试用

在此优惠中,新订阅者在特定时间内免费访问内容。订阅立即开始,但订阅者在免费试用期结束前不会被收取费用。续将执行你的订阅周期规则(例如:月订阅:1.99美元)
在这里插入图片描述

4、账单宽限期

账单宽限期允许因付款问题而自动续订失败的订阅者在一段时间内继续访问您应用程序的付费内容,而苹果则继续尝试收取付款。如果苹果在宽限期内恢复订阅,订阅者的付费服务日或您的收入将不会受到任何中断。如果不启用账单宽限期,订阅者的付费服务天数将暂停,直到苹果能够收取付款。默认不启用账单宽限期。
在这里插入图片描述

宽限期说明:处于宽限期,权限不会中断,业务要处理
账单宽限期的时长,可选项有 3 天、16 天、28 天。此设置会统一应用到 App 内的所有订阅项目。

【注】对于时限为 1 周的每周订阅,即使你选择了 16 天或 28 天的宽限期,但实际宽限期均为 6 天,以确保账单宽限期短于订阅时限。

沙盒: 各续订的频率表
正式:
在这里插入图片描述

5、恢复购买

5.1 介绍

苹果要求非消耗品、自动续期订阅、非自动续期订阅(业务维护恢复)能够在卸载重装、换手机登录同一Apple账号的时候给用户下发上述权益,非消耗品和自动续期订阅可以调用Apple提供的恢复购买(restoreCompletedTransactions | Apple Developer Documentation)来完成恢复购买操作从而实现权益下发。
恢复购买按钮需要在商店页面常驻,模拟路径:完成支付流程并验单->卸载重装app->点击恢复购买->下发已购买权益
如果用户试图购买他们已经购买的产品,App Store会创建常规交易,而不是恢复交易,但用户不会再次被收取产品费用。解锁这些交易的内容,就像您解锁原始交易一样。
不要自动恢复购买,尤其是在应用程序启动时。恢复购买提示用户的App Store凭据,这会中断您的应用程序的流程。

5.2 场景

  1. 有效场景
    使用restoreCompletedTransactions此方法恢复已完成的事务——即已经调用finish的交易,您在以下情况之一中调用此方法:
  • 在其他设备上安装购买
  • 恢复用户删除并重新安装的应用程序的购买
    2. 无效场景
    这种方法在以下情况下无效:
  • 所有交易都未完成。
  • 用户没有购买任何可恢复的东西。
  • 您尝试恢复不可恢复的项目,例如非续订订阅或消耗品。
  • 您的应用程序的构建版本不符合CFBundle密钥的指南(CFBundle 是一个重要的键,它包含在 Info.plist 文件中,定义了应用的基本信息。例如,CFBundleVersion、CFBundleShortVersionString、CFBundleIdentifier 等)。
  • 您的应用程序使用非续订订阅——您的应用程序负责恢复过程。

5.3 业务场景以及常规流程参考

界面常驻恢复购买按钮,用户可以点击恢复权益,客户端根据Apple的恢复购买的回调数据来做对应的处理。如果没有需要恢复的权益,则无需处理,可直接提示用户恢复购买成功或者没有可恢复的商品;如果有需要恢复的权益,可参考下面处理方式:

  1. 无业务账号系统
    对应的权益,用户已经拥有,直接提示用户恢复购买成功。
    对应的权益,用户没有,给用户赋予对应的权益,提示用户恢复购买成功
    2. 有业务账号系统
    对应的权益,用户已经拥有,业务账号系统根据自身要求是否需要处理,客户端直接提示用户恢复购买成功。
    对应的权益,用户没有:
    2.1 业务账号相同,业务账号系统根据自身要求是否需要处理,客户端直接提示用户恢复购买成功。
    2.2 业务账号不同,业务可定义一个会员可多少账号共用,超过的,业务可根据具体的业务要求顶掉之前的一个账号的权益或者先提示用户已达最多用户,需要顶掉之前账号,让用户选择。

6、退款

目前退款请求仅有用户向Apple请求,由Apple发起,退款成功,服务器会收到退款通知。见内购退款

7、沙盒测试人员

7.1 添加沙盒测试人员

新注册一个邮箱去添加,否则可能会添加不成功

7.2 管理沙盒续订频率

在沙盒测试人员页面选择对应的沙盒账户,编辑订阅频率。

备注:高版本手机系统的也可以在手机端设置,设置->App Store->沙盒账户->管理->续期率,以手机为准

7.3 各续订的频率表

默认情况下,帐户速度均衡设置为1个月=5分钟。您可以使用以下选项减缓或加快续订期。订阅最多可续订12次,然后自动续订在第十三次续订尝试时关闭。请注意,沙盒中的续订速度取决于订阅的长度。
月订阅每3分钟更新一次
在这里插入图片描述

月订阅每5分钟更新一次(默认)
在这里插入图片描述

月订阅每30分钟更新一次
在这里插入图片描述

月订阅每60分钟更新一次
在这里插入图片描述

7.4 删除沙盒测试员的购买

在沙盒测试人员页面选择编辑,然后选择需要删除记录的测试人员,最后清除购买记录,注意:如果有续期订阅,请先在手机端取消续期订阅然后清除数据,清除数据生效需要一段时间,最后在手机端查看是否还在存在订阅,

备注:高版本手机系统的也可以在手机端设置,设置->App Store->沙盒账户->管理->清除购买历史记录,以手机查看是否还在存在订阅为准

8、总结

本文章就讲到这里,欢迎大家批评指正,后续会讲StoreKit V1接入,后续还会StoreKit V2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值