苹果内购 (Object-c实例)
整个内购流程如下:
应用发送请求到服务器,获取所有的可用Products Id集合,(当然你也可以把Products Id硬编码到程序中,这样会导致不能动态配置商品).
根据服务器返回的Products Id以及信息设置购买界面UI.(这里跟图一有些不同)
用户点击购买商品.
客户端根据相应的Product Id向App Store请求产品信息,并发起购买payment.(使用StoreKit)
App Store处理该payment,并返回完成的transaction
客户端从transaction中获取receipt凭证数据,并将其发送给服务器,等待返回.
服务器验证receipt凭证数据是否使用过,保存然后发给App Store验证是否合法
服务器得到App Store验证结果,返回给客户端相应购买成功或失败信息
客户端提示用户购买结果以及处理相应UI.
XXXXXXX
内购实现流程
一实现流程
主要有两种情况
本地处理
1. 程序通过bundle存储的plist文件得到产品标识符的列表。
2. 程序向App Store发送请求,得到产品的信息。
3. App Store返回产品信息。
4. 程序把返回的产品信息显示给用户(App的store界面)
5. 用户选择某个产品
6. 程序向App Store发送支付请求
7. App Store处理支付请求并返回交易完成信息。
8. App获取信息并提供内容给用户。
依靠服务器处理 (一般需要一个订单号对应相应的凭证信息)
1. 程序向服务器发送请求,获得一份产品列表。
2. 服务器返回包含产品标识符的列表。
3. 程序向App Store发送请求,得到产品的信息。
4. App Store返回产品信息。
5. 程序把返回的产品信息显示给用户(App的store界面)
6. 用户选择某个产品 生成订单号
7. 程序向App Store发送支付请求
8. App Store处理支付请求并返回交易完成信息。
9. 程序从信息中获得数据,(目前是订单号和凭证)并发送至服务器。
10. 服务器将数据发给App Store来验证该交易的有效性。(主要是凭证的验证)具体可以查看https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40010573
11. App Store对收到的数据进行解析,返回该数据和说明其是否有效的标识。
12. 服务器读取返回的数据,确定用户购买的内容。
13. 服务器确认成功后告诉客户端。
