首页 » ios付费应用 » 文本总结了大量IAP相关的规则、设计开发要点和实践经验

文本总结了大量IAP相关的规则、设计开发要点和实践经验

 

节点/小火箭/美区ID/国外苹果ID/美区小火箭购买/美区小火箭兑换码/shadowrocket兑换码/苹果商店下载shadowrocket网址

文中总结了大量IAP相关规则、设计开发要点和实践经验,适合需要做IAP的产品以及所有对IAP知识感兴趣的规划、交互、开发、测试。

●●●

IAP规则详解

本文中提到的IAP(In-App),特指Apple App Store中的应用内购买,是Apple提供的用于应用内购买虚拟商品或服务的交易系统。

我们先来讨论一下IAP的基本规则和一些关键点:

1.1 范围

需要在应用内付费购买的产品功能或虚拟商品/服务,例如游戏道具、电子书、音乐、视频、订阅会员以及应用的高级功能。

IAP不适用于实体商品的应用内购买(例如从淘宝购买衣服),IAP不适用于虚拟商品(例如电话费)或服务(例如滴滴打车)应用程序。

那么问题来了,如果你在app中购买音乐专辑,不仅可以在app中收听数字专辑,还可以获得实体产品CD,是否适合IAP?

答案是适用的。由于应用程序中的数字相册和实体产品CD在使用中可以分开使用,因此数字相册符合IAP的适用范围,购买需要IAP。否则,648的各种游戏中销售的道具都声称产品不仅包含游戏道具,而且购买后还获得5美分的实物纪念品(例如),直接绕过IAP。

苹果规定,适用范围内的虚拟商品或服务,必须使用IAP购买支付。不允许使用支付宝、微信支付等其他支付方式(包括Apple Pay),也不允许以任何方式(包括跳出App、提示复制等)引导用户通过App外渠道购买。

苹果原则上也不允许使用外部兑换码在app内解锁虚拟商品或服务,但实际上兑换码的限制有些模糊,因为有些app可以在app内获取兑换码(如活动券或签到奖励),很难严格定义是外部兑换码还是内容兑换码。因此,在 IAP 购买中使用优惠券进行抵扣一般是允许的,但如果明确引导用户在 App 外购买兑换码,然后在 App 内兑换虚拟商品或服务,则会被 Apple 屏蔽。

另外,App Store 3.1.4中有这样一条特殊规则:

“与(例如玩具)一起工作的可能会使用 IAP,IAP 也是如此。”

这意味着用户在app中购买了一个功能,这个功能需要和实体产品结合使用。在这种情况下,允许使用IAP以外的方式解锁功能,但前提是仍然提供IAP购买的选项。.

例如,用户在健康管理APP中购买了高级计步器功能,但该计步器功能需要与手环配合使用,且必须与手环一起打包购买。在这种情况下,App 可以根据 IAP 购买选项提供其他购买方式。

但实际上,似乎没有这种情况。因为App完全可以把计步器变成免费功能,但是没有手环就没有实际作用,然后手环就算是App外使用的实物商品,所以和IAP无关。谁没事,把这玩意做成IAP,给苹果分一杯羹~

还有一些跨平台同步的复杂案例,本文第三部分会进一步介绍。

1.2 IAP 类型

如前所述,IAP 是一个商品交易系统,而不是简单的支付系统。对于每个购买的商品,您需要在应用后台创建一个产品,并提交给 Apple 进行审核。审核通过后,购买项目生效。

创建 IAP 商品时,主要有 4 种类型可供选择:

1.2.1

此类型适用于可多次购买的消耗品,如游戏道具、虚拟货币等。

1.2.2 非

此类型适用于一次性购买永久有效的物品,例如电子书、游戏关卡等。

此类项目支持跨设备同步和本地化。例如,如果用户在某个 App 中购买了一本书,则可以在同一 Apple ID 设备的所有 App 中免费获取该书籍,而无需 App 自身的账户系统。,即使您在应用程序中删除了该书ios兑换码跟直接购买,您也可以免费再次获取。

1.2.3 自动

此类型适用于自动续订的订阅项目,例如 Apple Music 的包月。用户购买后,订阅会每月自动续订,直到用户手动取消 IAP 项目或开发者移除 IAP 项目。

和 Non- 一样,这种类型也支持跨设备同步和本地机制。

此前,此类应用仅支持分类(报纸和杂志),而从2016年6月开始,所有类型的应用都已支持,但除分类外,国内应用很少使用此类应用内购。

1.2.4 非

此类型适用于具有固定有效期的非自动续费项目,如云音乐会员、部分视频应用会员。没有跨设备同步和本地机制,用户可以进行多次购买。

1.2.5 空闲

该类型是 Auto- 的特例,适用于免费订阅项目,仅支持类别应用,也支持跨设备同步和本地机制。

指南详细介绍了每种类型的适用性和特征:

特别值得注意的是:

1 对于非 IAP 类型的商品ios兑换码跟直接购买,Apple 将要求 App 提供“恢复购买”功能,以支持跨设备同步和本地。同时,如果app本身有用户账户系统,那么用户只需支付一次,通过该机制可以将IAP项目无限复制到多个用户账户。

因此,对于电子书等一次性购买永久有效的物品,如果想使用App本身的用户账号系统,避免跨设备同步和本地机制,可以考虑选择非类型. 同时考虑到Non-ns一般都有固定的有效期,可以增加一个无限的有效期(比如9999天)来处理苹果的。

Non- 和 Non- 都是可以重复购买的 IAP 商品。前者更倾向于消耗品,后者更倾向于订阅物品。另一个区别是,对于非 IAP 商品,如果用户之前已经购买过一次,过期后再次购买,或者切换 App 账号后购买,支付过程中会弹出系统弹窗提醒之前购买过该商品的用户。, 是否再次购买,如果用户不小心点击了取消,支付过程将被终止。

苹果设计这个弹窗的初衷更多是为了根据用户的 Apple ID 来识别用户,从而防止用户重复购买相同的物品。但是对于有用户账号系统的app来说,这个提示有点多余,虽然影响不大。因此,如果一个 IAP 项目同时适用于 Non-,则比较建议选择。

1.3 定价

创建 IAP 项目时,您需要设置价格。这个价格只能从苹果预设的价格水平中选择。比如1级对应1美元6元,2级对应2美元12元……最高87级对应999.$99,6498人民币。另外,可能是为了照顾某些币区的开发者和用户,还有一些特殊的等级,比如备用A级对应1美元和1元,备用B级对应1美元和3元。另外,IAP项目不能设置不符合任何水平的9.9元的价格。详细的价格等级表,见苹果官方文档:

苹果的价格等级表通常不会调整,但不排除在某些货币的汇率发生重大变化的情况下,会调整该货币的定价。在调整之前,苹果会发送电子邮件通知开发者。

此外,价格等级表中不同货币之间的汇率关系与实际汇率不同。淘宝上的一些低价iOS游戏内购充值,利用某些币种的汇率差来做生意。

对于开发者来说,如果应用在中国境外发布,可能需要注意汇率。在某些地区,以人民币结算的应用内购买收入会低于相应价格水平的人民币收入,因此在某些需要严格计算实际收入的情况下(如金融统计收入,或- 应用内购收入需与平台CP方进一步商讨)可能需要根据实际支付币种和应用内购买金额以及对应的汇率计算收入,也可以通过一些方法限制某些地区的应用内购买(本文将在 2. 第 2 部分中讨论)。

此外,产品发布后,可以在后台修改IAP项目的价格,还可以设置限时优惠价格。但是,大部分在线应用的应用内购买价格都是从它们自己的服务器上获取的。如果要修改价格或者设置限时折扣,需要双方一起处理,比较麻烦。

1.4 拆分

很多人都知道,对于 App Store 上的付费应用和应用内购买,苹果和开发者默认为 3/7 份额。

但实际上,在某些地区,苹果在与开发者分享之前需要扣除交易税,而开发者的实际分享比例不一定是 70%。自 2015 年 10 月起,Apple 已对在中国的 App Store 购买扣除 2% 的交易税。对于中国账户购买的 IAP,开发者的实际份额在 68% 到 69% 之间。此外,中国以外不同地区的交易税标准也存在差异。如1.3 所述,如果需要严格计算实际收入,可能需要将这部分考虑在内。

对于不同地区的应用内购买,应用内购买价格和对应开发者的实际收入详见苹果价格等级表(1.3中的链接)。

此外,根据苹果 2016 年 6 月的新规定,对于 Auto-n 类型的 IAP,如果用户购买订阅超过一年,则从第二年开始,开发者可以获得 85% 的份额。详情可见:

1.5 结算

对于 IAP 的交易收入,苹果一般以 5 周(每年的 1/4/7/10)或 4 周(其余月份)为结算周期,并在结束后的第 33 天向开发者付款每个结算周期。

●●●

IAP设计开发要点

1.创建并提交 IAP 项目

在开发IAP之前,需要在后台创建一个IAP产品,并按照规范填写id、产品名称、价格、截图等信息。

如果当前版本的app支持新增的IAP项目,可以直接提交IAP审核,无需发布版本。如需配合App的新功能,需与App版本一并提交。

“In-Guide for”详细介绍了 IAP 创建和提交过程:

特别值得注意的是:

1.1 尽量不要删除已创建的 IAP

除了创建的 IAP 的 id 之外的所有信息都可以修改。如果IAP被删除,相同id的IAP将无法重新创建,即id永久失效。id一般有一个特定的命名规则,用来标记app中的购买物品。如果命名规则下的一个id永久失效,可能会导致整个id命名规则被修改掉入坑~

1.2 注意name和name的区别

这是开发人员自己看的。名称会在IAP支付流程的确认购买系统弹窗中显示给用户,不能随意修改(修改需要重新提交IAP审核),所以命名时要清楚。

1.3 当 App 被拒绝时

如果 IAP 与 App 版本一起提交审核,所有新提交的 IAP 项目和 App 版本在出现问题时将同时被拒绝。再次提交 App 进行审核时,一定要记得重新提交所有 IAP 项目(每个 IAP 必须手动编辑)。重投真的很麻烦),否则苹果将无法继续审核,不要等上半个月才发现苹果根本没有回复~

2 IAP支付流程

这部分内容属于功能实现的逻辑,在《应用内指南》中也有详细说明:

个人觉得在产品规划或者交互中理解业务逻辑是非常有必要的,这样我们才能和开发一起设计出用户体验更好的功能解决方案。

具体来说,IAP的支付方式分为客户端验证和服务器端验证两种方式。客户端验证方式容易伪造支付凭证,安全性低。通常,只会使用非常简单的独立应用程序。大多数应用程序将使用服务器端验证模式。

此外,不同类型的 IAP 支付流程也会有一些小的差异(主要是机制)。下面以最常用和 Non-ns 类型为例来说明 IAP 支付流程:

当用户准备购买商品时,App 客户端通过 id 向 Apple API 请求支付信息

手机系统弹窗验证用户Apple ID(可能需要输入Apple ID密码或验证touch ID)

Apple ID验证完成后,Apple API将用户支付的价格和货币单位返回给App客户端

App客户端验证id对应的支付价格和货币单位正确(可跳过),继续请求支付

手机系统弹窗提示用户确认要购买的内容和价格,用户点击确认购买

App客户端获取Apple API返回的支付成功通知和支付凭证,并请求App服务器验证支付凭证

App服务器获取客户端的支付凭证,然后请求Apple服务器验证支付凭证(避免一些越狱插件伪造客户端支付凭证)

App服务器验证支付凭证成功并通知App客户端

App收到支付凭证验证成功的通知,说明用户支付成功,然后处理后续业务逻辑

以上是标准的 IAP 支付流程。看似合乎逻辑,其实坑很多。下面重点介绍需要注意的问题。

3个不容忽视的坑

3.1 支付结果延迟返回

在上述流程的第6步中,由于网络问题等各种原因,即使用户已经支付成功,客户端也可能会暂时收不到Apple API的支付成功通知,无法主动请求Apple API检查付款状态。被动等待通知。

因此,在某些情况下,客户端会延迟收到支付成功的通知(可能是几分钟后,也可能是下次打开App时)。在这种情况下,需要做两件事:

客户端将所有未确认支付结果的交易信息保存在本地,并设置监控流程。收到支付成功信息后,继续处理本次交易的后续流程。在极端情况下,如果用户在没有确认交易结果的情况下删除了App,那么保存在App本地数据库中的交易信息也会丢失。因此,更好的解决方案是将交易信息存储在 iOS 系统中。

当本地有交易信息未确认支付结果时,交互提示用户等待支付结果,避免用户重复支付

3.2 服务器验证延迟

在上述流程6~8的支付凭证验证过程中,由于网络问题等各种原因,客户端可能无法及时收到服务器的验证成功通知。同样,在这种情况下:

客户端将支付凭证保存在本地,并不断向服务器轮询验证结果,直到返回明确的验证成功或无效的验证结果。最好将付款凭证也保存在其中

客户端轮询服务器结果时,为避免用户在支付结果页面等待时间过长,可在交互层面先结束支付过程(一定超时时间后),提示用户等待支付结果,避免用户重复支付

3.3 非官方渠道包支付失败问题

在上述流程的第1步中,如果用户安装的应用不是官方渠道包(从PP助手、同步推送等第三方应用商店下载),Apple API会直接返回id不存在,结束支付流程,在交互层面表现为用户点击购买后,直接提示支付失败。这个问题困扰了我们很久,网上也找不到类似问题的资料。在用尽了日志追踪、用户调研等一系列方法后,我们终于找到了答案。

同样,在越狱设备上安装一些内购破解插件后,无法进行内购(返回id不存在)。不过现在iOS设备越狱的比例很低,基本可以忽略。

因此,该问题的解决方案是:当返回的id不存在时,提示用户安装非官方频道包,并引导用户到App Store下载官方频道包。

3.4 货币检查

如本文1.3部分所述,如果该应用在中国境外发布,但由于某些原因您想限制某些地区的账户的应用内购买,您可以验证支付的货币单位用户在上述流程的第4步,并禁止购买某些货币。同时,在交互中也要给用户相应的提示,类似于弹出不支持特殊地区账号购买的提示。

3.5 用户支付流程未绑定App Store支付方式

这是一个大坑!

如果用户在应用内购买前没有绑定App Store的支付方式,在上述流程的第5步,点击系统弹窗中的确认购买后(第一次),会自动跳转到App Store绑定的支付方式界面。然后,如果支付方式绑定成功,会自动跳转回App,并再次出现系统弹窗(第二次)供用户确认购买。

但是,当用户在系统弹窗中点击确认购买时(第一次),Apple API会立即向客户端返回支付失败...支付失败...失败...一般情况下,客户端收到支付失败时,应认为支付已被取消,丢弃本地交易信息。但万万没想到,绑定支付方式完成后,用户还会继续确认购买。这简直是​​苹果IAP系统设计的一大BUG!

如果知道这个坑,解决方法也很简单,就是当Apple API返回支付失败时,使用类似2.3.1的方法,保持交易信息待确认,继续监控支付结果的返回。

●●●

更多IAP实战经验总结

1 匿名购买

许多应用在首次提交 IAP 时会因为不支持匿名购买而被拒绝。原因是 App Store 要求应用不要强制用户在使用某些功能之前注册/登录,除非有必要。

一般情况下,对于没有 IAP 的 App,强制用户注册/登录使用不会被拒绝(除非遇到要求非常苛刻的审稿人),但对于 IAP,一般要求支持匿名购买。当然,你也可以尝试编造一堆必须强制用户注册/登录的理由(比如提供的商品或服务需要获取用户的手机号或邮箱等),但是不能保证能说服审稿人。

支持匿名购买,通常需要在用户未登录App账号时临时保存用户的购买记录,并在用户登录后合并到App账号数据中。

2 跨平台同步

虽然原则上苹果不允许使用外部渠道解锁应用内需要付费的功能或虚拟商品,比如在网页上购买课程并在应用内观看,但实际上跨平台同步是可以的在一定条件下。用户购买的内容:

在同时提供相应产品的IAP购买的前提下,用户在不同平台购买的内容通过App账号同步。对于大多数游戏来说,这条规则可能很苛刻,但一般的内容应用程序会起作用。

对于电子书、音乐、视频等项目,App仅提供简单的内容阅读/观看功能,不提供任何内容发现和订阅功能(如iOS版本),可支持用户从外部渠道并在 App 中使用(具体请参考 App Store 3.1.3)。但实际是否允许也可能取决于审稿人的判断。对于例如,云课堂曾经提交过版本,无法购买付费课程,但允许用户在网页上购买付费课程并在iOS端观看被拒绝,理由是付费课程不属于以上条件。

3 虚拟货币

由于IAP的价格等级机制,无法支持灵活的产品定价(如9.9元)和营销功能(如优惠券抵扣等)。很多应用都会引入虚拟货币,首先通过IAP内购充值。虚拟货币的价格(如6、12、18、648等),然后使用虚拟货币购买特定商品。

与IAP跨平台同步问题类似,iOS平台充值的虚拟货币不允许与其他平台(web)流通,外部平台充值的虚拟货币不能在iOS平台上使用,虚拟货币在iOS平台充值不能在外部平台使用。

但是在实践中我们会发现一些app,比如喜马拉雅和Get,是支持用户在微信公众号充值虚拟币的(虽然微信充值也区分了iOS平台和其他平台),然后在App中使用,并在应用程序中。充值界面隐约提醒用户,如果遇到充值问题,可以关注微信公众号获取客服帮助(其实是引导用户用微信充值)。这种做法严格来说是不合规的,但如果苹果的审核不严格,可以通过,这算是边球了。

4 退款问题

根据苹果的政策,用户可以在购买IAP后90天内以各种理由申请退款(扣费后购买失败、错误购买、不喜欢等),但能否退款苹果拥有最终决定权。成功与否。

如果用户成功申请退款,苹果在和开发者结算的时候会记录退款订单(当然原采购订单也有),钱不会给,苹果也不会告诉你是哪个用户退款的最好的钱,用户买的东西还在,简直就是霸王条件~

订单数据可以在后台的“支付财务报表”中查看,但没有详细的时间信息和用户信息,很难定位到对应的平台订单。

对于游戏或者一些自营平台来说,收入可能会少一些。对于需要与平台CP方一一分享的产品,可能会亏本。为了解决这个问题,我们尝试设计了一套复杂的退款订单分配规则。根据IAP订单的时间段和金额,结合平台订单的一些信息,将IAP退款订单分配给平台订单,平台和CP方共同承担退款责任。但是由于开发进度,这个计划已经一年多没有执行了……退款由平台承担→_→

从历史数据来看,在一般不会遇到大量恶意退款的情况下,IAP 的退款率可能在 1% 到 3% 之间(取决于 App 内容质量、用户心情、苹果心情)。对于 IAP 收入较大的应用,您可能需要考虑退款问题。

5 支付成功率

云课堂对比了终端使用支付宝/微信支付(注:绕过IAP使用第三方支付属于违规行为,可能导致应用下架或开发者被封禁,请勿模仿!) 和 IAP 支付数据,发现第三方支付的付费用户支付成功率大约是 IAP 的 2~3 倍,在收入上也差了 2 倍以上。

不难理解,国内 App Store 用户的支付习惯肯定不如第三方支付成熟。经过进一步的用户问卷调查,发现影响IAP支付成功率的因素有很多:

用户安装的应用来自第三方应用商店或使用越狱设备,无法使用IAP支付

用户未绑定 App Store 支付方式

用户在IAP支付过程中遇到绑定支付方式的问题,放弃了

以上数据仅代表云课堂的用户群体。从某种意义上也说明了云课堂的用户是比较新手的(产品本身的目标用户很大一部分是新手),从来没有接触过IAP的支付方式。不同产品的目标用户群的应用内购买习惯必然存在差异。

不过随着 App Store 应用内购买的火爆(一方面是游戏内购买带动,另一方面也得益于苹果的推广,比如频繁的应用一美元购买)活动,以及自 2016 年 11 月起支持绑定)。支付宝),用户的应用内购买习惯也在发展,数据显示IAP支付成功率呈上升趋势,对接入IAP的产品有利。

——【特别推荐】——

节点/小火箭/美区ID/国外苹果ID/美区小火箭购买/美区小火箭兑换码/shadowrocket兑换码/苹果商店下载shadowrocket网址

原文链接:文本总结了大量IAP相关的规则、设计开发要点和实践经验,转载请注明来源!

0