IAP:In-App-Purchase
简称:内购,苹果独有的支付方式
对于虚拟产品类的购买要求都走苹果支付,实体产品可以走支付宝、微信等
开始内购,首先可以阅读官方文档:App Store Connect 帮助之内购相关
完成一个内购的步骤
- 设置协议
- 添加内购项目
- 添加测试账号
- 代码集成
设置协议
协议是第一步,而且必须通过的协议才能进行测试。
有时候发现添加了内购项目,但是测试时获取不到,这就是协议没走在第一步导致的。
协议的设置可以参考文末的链接,暂时就不具体去实现,后面有时间补上。
添加内购项目
App Store Connect -> 我的App -> 功能
选择内购项目类型
填写内购项目
审核信息图片大小最小为 640x960
注意:除了可选之外的信息都必须填写完整,否则创建完成之后会报元数据丢失的错误(正常显示的是准备提交)
添加测试账号
App Store Connect -> 用户与职能 -> 沙箱技术测试员
填写测试员信息
注意:
- 安全提示问题 字符范围:[6, 35]
- 姓氏和名字、邮箱可以随意填写
- 地区按照自己测试地区选择
- 密码中一定要存在一个大写字母,否则就会一直出现下面的问题
如何使用:必须真机测试,退出真机上登陆的AppID,在测试内购过程中会弹框出让输入邮箱和密码,就填写上面添加的测试员,不可当做APPID去登陆,只能在购买的时候输入测试。
代码集成
1
2
3
4
5
6
内购流程:
1.app从app store 获取产品信息
2.用户选择需要购买的产品
3.app发送支付请求到app store
4.app store 处理支付请求,并返回transaction信息
5.本地或服务器进行验单
调用内购的代码复用性高,所以总结为一个单例使用 ACIAPManager
具体实现暂且也不细说,跳转自己基础库 ACIAPManager 进行查看
内购App Store验单返回的错误状态码与对应的描述
目前还存在的问题
- 没有考虑自动续期订阅、推介促销价
- 检验票据其他方式:目前用的是App Store验证,没有使用服务器验证
- 检验票据 对于订阅产品需要验证是否过期,没有去处理
- 漏单处理
- 测试次数较少,或许有些问题没碰到