IAP内购 - passiony/gillar_wiki GitHub Wiki
-
1.项目商品内购使用的Unity内置的插件,支持Android和iOS平台等多平台 项目基于unity的内购demo进行了封装和扩展,组件名为UnityIAP
-
2.内购商品分为四种:消耗性商品、非消耗性商品、自动续订商品、非续订商品 项目中目前使用了消耗性商品和自动续订商品(简称订阅)
-
3.商品购买流程: 从配置表读取内购商品,调用IAP组件进行初始化-》IAP初始化成功-》发起商品购买-》苹果服务器扣费成功后返回交易订单-》客户端接收订单后去苹果指定服务器进行交易凭据二次严重 -> 验证成功后,发放商品礼包给用户。 购买过程中需要注意丢单的几种情况:发起交易时,app意外中断(没有网络、手机关机、主动杀进程等)或者二次验证失败导致丢单的行为,需要本地保存苹果服务器返回的交易凭据(或者在游戏服务器缓存) 等下次app启动时,主动发起购买的后续流程 详见组件:UnityIAP、IAPComponent、PurchaseComponent
-
4.订阅以及自动续订 商品内购最复杂,问题最多的就是订阅相关的业务,具体跟游戏设计相关(可简单可复杂), 订阅:购买流程与普通商品购买一样,如果购买成功,则当前订阅状态为有效,在此点击购买时,苹果服务器会提示当前已经订阅过此商品,无需再次购买 自动续订:账号第一次购买时,可以享受指定时间的免费试用期,试用期到期前一天,苹果服务器会尝试扣费,扣费成功,则会在应用下次启动时推送购买结果给当前设备 具体业务实现详见组件:UnityIAP、IAPComponent、PurchaseComponent、SubscriptionComponent
-
5.恢复购买 恢复购买是苹果针对用户购买过非消耗型商品后,在新设备访问应用时获取商品购买状态的一种途径,保障用户权益的正常享用 恢复购买时,游戏设计者需要考虑是否绑定设备或者用户信息,是否允许单台设备 登陆不同的苹果账号进行恢复购买行为 一般来讲,开了订阅,就要开放给用户恢复购买的入口,不然会被苹果审核时拒绝
-
6.沙盒环境测试
苹果自动续费订阅(Auto renewable Subscription)
实际订阅有效期 | Sandbox测试有效期 |
---|---|
1 周 | 3 分钟 |
1 个月 | 5 分钟 |
2 个月 | 10 分钟 |
3 个月 | 15 分钟 |
6 个月 | 30 分钟 |
1 年 | 1 小时 |
注意:
这是自动续费订阅。如果是 非自动续费订阅,是需要程序自己来判断有失效期的 测试期间,如果有限时礼包领取,需要区分是否线上环境,通过服务器控制礼包的生效时间 自动续订一个账号一天只生效一次,最多支持6次续订,多申请几个沙盒账号,方便测试自动续订和免费续订,目前订阅版本上线审核通过之前,申请了30多个沙盒账号
- 7.扩展和优化 -用户购买的商品信息存储到服务器 -用户购买的交易信息通过游戏服务器与苹果服务器进行二次验证(包括丢单和验证超时的情况) -一个用户只允许绑定一个苹果账号进行订阅服务器,用户购买过订阅后,不允许其他苹果账号在当前应用中进行恢复购买,简化逻辑 -GooglePlay的内购暂时还没测试,后期需要花个一两天进行验证