iOS內(nèi)購(gòu) 服務(wù)器文檔 摘要
修改時(shí)間:2017-09-14 10:17:33
名詞簡(jiǎn)寫:
App Store - AS
iTunes Connect - IC
storekit - SK
客戶端:
步驟 | 說(shuō)明 |
---|---|
獲取商品信息 | nil |
1.第一步先向AS請(qǐng)求合法的物品列表 | 物品都需要在IC中配置上架拓萌,一切物品需以IC為主,所以在展示購(gòu)買UI之前累提,需要先獲得最新的合法物品 tips:蘋果推薦將該請(qǐng)求返回的非法物品通知到服務(wù)器以做進(jìn)一步處理 |
2.將合法物品展示在商店UI中 | 此商店UI就是游戲的充值頁(yè)面 |
提交付款請(qǐng)求 | nil |
3.使用購(gòu)買的物品創(chuàng)建一個(gè)付款請(qǐng)求 | tips:在提交付款請(qǐng)求時(shí)斋陪,可以附加一些反作弊信息置吓,以便使蘋果的反作弊系統(tǒng)分析 |
等待回調(diào)完成支付 | nil |
4.創(chuàng)建付款請(qǐng)求衍锚,并放進(jìn)SK隊(duì)列 | nil |
5.等待SK的回調(diào) | tips:SK會(huì)管理所有的交易戴质。每個(gè)被提交的交易梁棠,直到被觀察者標(biāo)記為已完成符糊,否則會(huì)一直在啟動(dòng)時(shí)回調(diào) tips:SK處理隊(duì)列中的交易并回調(diào)時(shí)男娄,不一定是按照隊(duì)列添加順序的,所以建瘫,回調(diào)函數(shù)應(yīng)能處理這點(diǎn)(Map) tips:把收據(jù)存儲(chǔ)于服務(wù)器上啰脚,收據(jù)中會(huì)包含最近一次購(gòu)買的消耗品信息实夹,以及全部的非消耗品信息 tips:最后一步再將交易標(biāo)記為已完成 tips:在測(cè)試環(huán)境中亮航,也要及時(shí)完成交易隊(duì)列中的所有交易,否則下次啟動(dòng)時(shí)SK依舊會(huì)將未完成的交易回調(diào)給觀察者 |
將收據(jù)發(fā)送給服務(wù)器校驗(yàn) | nil |
6.從appStoreReceiptURL方法中讀取收據(jù)准给,并發(fā)送給服務(wù)器 | tips:這個(gè)收據(jù)里的消耗性購(gòu)買項(xiàng)目露氮。钟沛。貌似會(huì)被最新的覆蓋讹剔,所以要求延欠!在獲取到本筆訂單的收據(jù)前!不能進(jìn)行下一筆支付兔综! |
服務(wù)器:
步驟 | 說(shuō)明 |
---|---|
驗(yàn)證 | nil |
1.發(fā)送收據(jù)到蘋果服務(wù)器 | tips:收據(jù)驗(yàn)證時(shí)软驰,為了避免被發(fā)多個(gè)相同收據(jù)锭亏,每當(dāng)驗(yàn)證完成一個(gè)收據(jù)后硬鞍,都要存下唯一交易標(biāo)識(shí)符 |
2.成功發(fā)貨/失敗通知/超時(shí)重試 | nil |
收據(jù)字段 App Receipt Fields
字段 | 類型 | 名稱 | 說(shuō)明 |
---|---|---|---|
bundle_id | string | 應(yīng)用標(biāo)識(shí)符 | 包名固该,App唯一識(shí)別符 (需判斷) |
application_version | string | 應(yīng)用版本號(hào) | 客戶端版本號(hào) |
in_app | string | 內(nèi)購(gòu)信息 | 內(nèi)購(gòu)信息伐坏,主要分析對(duì)象 (需判斷) |
original_application_version | string | 原應(yīng)用版本號(hào) | 原始客戶端版本號(hào),沙箱下為"1.0" |
creation_date | string(date) | 收據(jù)更新日期 | 最近更新日期 |
expiration_date | string(date) | 失效日期 | 失效日期 |
內(nèi)購(gòu)收據(jù)字段 In-App Purchase Receipt Fields
字段 | 類型 | 名稱 | 說(shuō)明 |
---|---|---|---|
quantity | string(int) | 數(shù)量 | 客戶端提交付款申請(qǐng)時(shí)填寫的數(shù)量 |
product_id | string | 產(chǎn)品標(biāo)識(shí)符 | 客戶端提交付款申請(qǐng)時(shí)填寫的產(chǎn)品標(biāo)識(shí)符每瞒,用來(lái)唯一區(qū)分物品独泞,發(fā)貨憑證 |
transaction_id | string | 交易標(biāo)識(shí)符 | 交易生成的標(biāo)識(shí)符 |
original_transaction_id | string | 原始交易標(biāo)識(shí)符 | 與交易標(biāo)識(shí)符一致苔埋,若是恢復(fù)購(gòu)買則不一致 |
purchase_date | string(date) | 購(gòu)買日期 | RFC3339標(biāo)準(zhǔn)時(shí)間 |
original_purchase_date | string(date) | 原始購(gòu)買日期 | 恢復(fù)購(gòu)買 |
expires_date | string(date) | 訂閱到期 | Unix標(biāo)準(zhǔn)時(shí)間戳 |
expiration_intent | string(int) | 訂閱到期原因 | 過(guò)期的訂閱的到期原因枚舉值 |
is_in_billing_retry_period | string(int) | 是否嘗試?yán)m(xù)訂 | 過(guò)期的訂閱荞膘,蘋果是否嘗試自動(dòng)續(xù)訂 |
is_trial_period | string | 是否處于免費(fèi)試用期 | 是否處于訂閱試用期 |
cancellation_date | string(date) | 取消日期 | 蘋果客戶支持取消日期 |
cancellation_reason | string(int) | 取消原因 | 被取消的原因枚舉值 |
app_item_id | string | App唯一標(biāo)識(shí)符 | 生產(chǎn)環(huán)境下分配的App唯一id羽资,測(cè)試環(huán)境沒(méi)有 |
version_external_identifier | string | 外部版本標(biāo)識(shí)符 | 識(shí)別購(gòu)買時(shí)使用的App版本屠升,為任意數(shù)字 |
web_order_line_item_id | string | 網(wǎng)絡(luò)訂單標(biāo)識(shí)符 | 用于標(biāo)識(shí)跨設(shè)備的購(gòu)買事件 |
auto_renew_status | string(int) | 自動(dòng)訂閱狀態(tài) | 是否打開(kāi)了自動(dòng)訂閱 |
auto_renew_product_id | string | 自動(dòng)續(xù)訂偏好 | 自動(dòng)續(xù)訂產(chǎn)品的標(biāo)識(shí)符 |
price_consent_status | string(int) | 漲價(jià)狀態(tài) | 用戶是否同意了訂閱漲價(jià)并自動(dòng)訂閱 |
校驗(yàn)狀態(tài)碼 Validating Receipts Status codes
狀態(tài)碼 | 說(shuō)明 |
---|---|
0 | 成功 |
21000 | 無(wú)法解析JSON請(qǐng)求 |
21002 | 數(shù)據(jù)類型錯(cuò)誤或丟失數(shù)據(jù) |
21003 | 收據(jù)無(wú)法驗(yàn)證 |
21004 | 提供的共享密碼與帳戶的文件共享密碼不匹配 |
21005 | 驗(yàn)證服務(wù)器當(dāng)前不可用 |
21007 | 此收據(jù)來(lái)自測(cè)試環(huán)境腹暖,但已發(fā)送到生產(chǎn)環(huán)境進(jìn)行驗(yàn)證脏答。將其發(fā)送到測(cè)試環(huán)境 |
21008 | 此收據(jù)來(lái)自生產(chǎn)環(huán)境殖告,但已發(fā)送到測(cè)試環(huán)境進(jìn)行驗(yàn)證。將其發(fā)送到生產(chǎn)環(huán)境 |
21010 | 收據(jù)不合法 |
21100-21199 | 內(nèi)部數(shù)據(jù)訪問(wèn)錯(cuò)誤 |
校驗(yàn)協(xié)議 Request and Response
Method: HTTP / POST
Type: JSON
Request:
字段 | 類型 | 說(shuō)明 |
---|---|---|
receipt-data | string | base64編碼后的收據(jù) |
Response:
字段 | 類型 | 說(shuō)明 |
---|---|---|
status | string(int) | 狀態(tài)碼 |
receipt | string(json) | json格式的收據(jù) |
is-retryable | string | 需要重試,21100-21199錯(cuò)誤碼 |