苹果内购IAP 简单总结

2019-06-26  本文已影响0人  superxiang

1. 何为苹果内购IAP

IAP(in-app-purchase),指苹果平台上所有在应用内购买的虚拟商品(商品的交付不依赖线下实体),都需要使用苹果专门的内购机制,具体就是购买时,用户付钱给苹果,苹果分得30%后,把剩余的70%给到开发者,而不能直接对接其他支付方式(微信支付、支付宝、银联等)
IAP不只是支付渠道,同时也是商品管理平台,开发者需要先在iTunes connect上建立所有虚拟商品,并提交苹果审核通过后,方可进行购买。

2. 要做的事情

2.1 在 iTunes connect 填写公司财务相关信息

此处没有太多要说的,直接按照说明填写就行,有些地方涉及财务内容,如果不清楚可以询问公司财务人员(笔者填写时,公司财务人员也有好多内容不清楚,基本都填无或者不是🤦‍♀️)。

2.2 在 iTunes connect 建立虚拟商品

所有在应用内出售的虚拟商品,都要在 iTunes connect 平台建立,否则无法交易。

2.2.1 商品类别

内购商品提供了4个类别:

2.2.2 商品价格

需要吐槽的是虚拟商品不可随意定价,只能从苹果提供的众多报价中选择1项,人民币报价一般都是6的倍数,难以选择国人热衷的x99.

2.2.3 商品审核

虚拟商品建立好之后也是需要苹果审核的,我们因为是app第一版上线,所以app审核和虚拟商品审核一起做的,如果后续单纯只是新增/编辑商品,应该可以单独提交审核。

2.3 购买流程设计

笔者不是研发同学,重点讲购买流程设计时的各种问题及应对,想知道技术细节的同学,还请移步他家。

2.3.1 购买流程

1.用户在app客户端发起购买流程;
2.app客户端调起苹果内购流程,用户登录Apple ID并付费;
3.苹果服务器告知app客户端支付结果并给出支付凭证;
4.app客户端或者app服务端凭借支付凭证向苹果服务器发起支付成功的校验(及我收到支付成功的消息了,我再问你一遍,是否真的支付成功了);
5.app客户端或app服务端收到苹果服务器的校验结果,处理业务逻辑(支付成功则发放商品,不成功则不发放)

2.3.2 客户端校验or服务端校验

上面支付流程第4步,发起校验有两种方式,因为客户端校验结果容易被篡改,所以app服务端发起校验更加安全。所以从第4步开始就变成了下面这个样子:
4.app客户端将支付凭证传给app服务端,由app服务端向苹果服务器发起校验
5.app服务端接收到苹果服务器的校验结果,并将结果告知app客户端,并处理业务逻辑

2.3.3 支付成功,校验失败

如上的逻辑,因为校验行为是app主动发起的,可能由于网络不好,导致迟迟接收不到校验的结果,会出现用户支付成功,但实际校验失败的情况。因为校验失败,所以app不敢下发商品,但对用户来说,钱已经付了,但商品没买到,引起误会。
产生问题的根本还是在于IAP本身流程的不合理,支付结果及凭证传给app客户端而不是app服务端,像微信支付、支付宝等,都是在支付后会同时将结果告知app服务端,而且会分时段多次告知,尽量避免以上情况。
为了解决内购的这个问题,我们做了两个措施:

3. 苹果内购IAP的问题

3.1 Apple ID 不同设备同步问题

首当其中的就是这个问题,app本身会做用户购买内容的帐号同步,但还必须支持 Apple ID 的同步,导致多个app用户使用同一 Apple ID 购买内容,只需要支付一次即可,很大的一个漏洞,不过也没办法,如果不支持就无法在App Store上架。

3.2 app客户端接收苹果凭证的各种异常

因为是app客户端接收凭证,假如在接收前卸载掉app,导致无法接收凭证,用户再把app客户端安装回来,就导致购买项目的丢失。
我们目前是通过人工的方式来处理,用户购买调起IAP时,app服务端会生成对应订单,根据订单信息在苹果服务器查询是否有对应的支付交易。

上一篇 下一篇

猜你喜欢

热点阅读