整個內(nèi)購流程如下:
應用發(fā)送請求到服務器溉卓,獲取所有的可用Products Id集合,(當然你也可以把Products Id硬編碼到程序中,這樣會導致不能動態(tài)配置商品).
根據(jù)服務器返回的Products Id以及信息設置購買界面UI.(這里跟圖一有些不同)
用戶點擊購買商品.
客戶端根據(jù)相應的Product Id向App Store請求產(chǎn)品信息,并發(fā)起購買payment.(使用StoreKit)
App Store處理該payment尼啡,并返回完成的transaction
客戶端從transaction中獲取receipt憑證數(shù)據(jù),并將其發(fā)送給服務器声畏,等待返回.
服務器驗證receipt憑證數(shù)據(jù)是否使用過激率,保存然后發(fā)給App Store驗證是否合法
服務器得到App Store驗證結(jié)果铁追,返回給客戶端相應購買成功或失敗信息
客戶端提示用戶購買結(jié)果以及處理相應UI.
XXXXXXX
內(nèi)購實現(xiàn)流程
一實現(xiàn)流程
主要有兩種情況
本地處理
1. 程序通過bundle存儲的plist文件得到產(chǎn)品標識符的列表季蚂。
2. 程序向App Store發(fā)送請求,得到產(chǎn)品的信息琅束。
3. App Store返回產(chǎn)品信息扭屁。
4. 程序把返回的產(chǎn)品信息顯示給用戶(App的store界面)
5. 用戶選擇某個產(chǎn)品
6. 程序向App Store發(fā)送支付請求
7. App Store處理支付請求并返回交易完成信息。
8. App獲取信息并提供內(nèi)容給用戶涩禀。
依靠服務器處理 (一般需要一個訂單號對應相應的憑證信息)
1. 程序向服務器發(fā)送請求料滥,獲得一份產(chǎn)品列表。
2. 服務器返回包含產(chǎn)品標識符的列表艾船。
3. 程序向App Store發(fā)送請求葵腹,得到產(chǎn)品的信息。
4. App Store返回產(chǎn)品信息屿岂。
5. 程序把返回的產(chǎn)品信息顯示給用戶(App的store界面)
6. 用戶選擇某個產(chǎn)品 生成訂單號
7. 程序向App Store發(fā)送支付請求
8. App Store處理支付請求并返回交易完成信息践宴。
9. 程序從信息中獲得數(shù)據(jù),(目前是訂單號和憑證)并發(fā)送至服務器爷怀。
10. 服務器將數(shù)據(jù)發(fā)給App Store來驗證該交易的有效性阻肩。(主要是憑證的驗證)具體可以查看https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40010573
11. App Store對收到的數(shù)據(jù)進行解析,返回該數(shù)據(jù)和說明其是否有效的標識霉撵。
12. 服務器讀取返回的數(shù)據(jù)磺浙,確定用戶購買的內(nèi)容。
13. 服務器確認成功后告訴客戶端徒坡。