您的当前位置:首页正文

In-App Purchase

来源:华佗小知识

1. 适用情况


想使用In-App Purchase(以下简称IAP)完成App内付费前,先确定需求是不是能用这个方案来满足。

除了IAP以外,还有支付宝SDK、信用卡等其他方式完成软件内付费。

在苹果制定的游戏规则中,所有在App内提供的服务需要付费时,都应当使用IAP,比如软件功能、游戏道具;所有在App外提供的服务需要付费时,都应使用其他支付方式,比如Uber的信用卡,淘宝、快的打车的支付宝SDK等。

在IAP里,可以出售:

数字内容:比如杂志、图片、游戏关卡解锁、相机付费滤镜等;

软件功能:如各种扩展features;

一次性服务:比如一次语音通话等。注意是「一次性」服务,不是一次「性服务」。

2. 购买及发放虚拟产品流程


官方给出的流程图是这样的:

In-App Purchase Walk Through

app验证模式

1)获取内购列表(从App内读取或从自己服务器读取)

2)App Store请求可用的内购列表

3)向用户展示内购列表

4)用户选择了内购列表,再发个购买请求

5)收到购买完成的回调

6)发放虚拟产品

服务器验证模式

1) app从服务器获取产品标识列表

2) app从app store 获取产品信息

3) 用户选择需要购买的产品

4) app 发送 支付请求到app store(之前向服务器下订单)

5) app store 处理支付请求,返回transaction信息

6) app 将transaction receipt 发送到服务器

7) 服务器收到收据后发送到app stroe验证收据的有效性(并对订单进行二次验证)

8) app store 返回收据的验证结果

9) 根据app store 返回的结果决定用户是否购买成功

3.虚拟产品


虚拟产品分为以下几种类型:

1.消耗品(Consumable products):比如游戏内金币等。

2.不可消耗品(Non-consumable products):简单来说就是一次购买,终身可用(用户可随时从App Store restore)。

3.自动更新订阅品(Auto-renewable subscriptions):和不可消耗品的不同点是有失效时间。比如一整年的付费周刊。在这种模式下,开发者定期投递内容,用户在订阅期内随时可以访问这些内容。订阅快要过期时,系统将自动更新订阅(如果用户同意)。

4.非自动更新订阅品(Non-renewable subscriptions):一般使用场景是从用户从IAP购买后,购买信息存放在自己的开发者服务器上。失效日期/可用是由开发者服务器自行控制的,而非由App Store控制,这一点与自动更新订阅品有差异。

5.免费订阅品(Free subscriptions):在Newsstand中放置免费订阅的一种方式。免费订阅永不过期。只能用于Newsstand-enabled apps。

类型2、3、5都是以Apple ID为粒度的。比如小张有三个iPad,有一个Apple ID购买了不可消耗品,则三个iPad上都可以使用。

类型1、4一般来说则是现买现用。如果开发者自己想做更多控制,一般选4

4.项目中内购模块


应用中内购物品模块

第一种方式:主要在app端处理,接口仅需要余额充值,也方便安卓统一,但是由于隐藏内购,若被苹果发现可能会直接下架

说明:充值1:1

审核通过时:

1.课海币使用第三方充值;(余额充值,有第三方支付凭证)

2.订单结算时,课海币足够走余额支付,否则用户用第三方支付直接购买

APP审核时:

1.课海币走内购流程,结算无第三方支付;(余额充值,仅有内购收据,需要特别处理)

2.苹果通过沙盒测试账户,走app内置验证模式;

3.仅对于提供苹果的测试账户会出现对账问题

开发测试时:

1.在云服务器或内网上进行内购测试,若在生产服务器上,会出现对账问题

第二种方式:课海币作为一种积分,独立于余额,不隐藏,只是摆给苹果看的,功能设计比较复杂,风险同样存在

说明:充值比例10:7

1.无论审核还是上线,都有课海币,可以通过内购充值,审核时隐藏第三方支付(结算页的接口需要改变)

2.内购在服务器进行完整的验证,防止作弊(物品的购买,与余额的换算)

3.开发测试以及APP审核时走沙盒环境,需要注意对账问题

5.参考资料