iOS 內(nèi)購服務(wù)器端驗證是否支付成功方法

[IPA]IOS In App Purchase(內(nèi)購)驗證

二次驗證

IOS在沙箱環(huán)境下購買成功之后痢畜,向蘋果進(jìn)行二次驗證洒闸,確認(rèn)用戶是否購買成功司志。

當(dāng)應(yīng)用向Apple服務(wù)器請求購買刨秆,成功之后囱井,Apple會返回以下四個數(shù)據(jù)給應(yīng)用

四個驗證數(shù)據(jù)

productIdentifier:cosmosbox.strikehero.gems60state: Purchasedreceipt: ewoJInNpZ25hdHVyZSIgPSAiQXF1M3JiR1grbmJMeGVvZS9VZGlMa3dQWVlBdkQrVTE1L1NRL2Y0cGZlaFlBOWFaVGhSbTNMVXpHc25TUGd3aVBoMmsxSTVFaVpweGp6aEZsS0JDVXBPeHEyWFk5N1lHUGUzMFo0cThMRllDZWJPeHFzWlJaUU01N2xtZFo0bDN6eHNnaWpGemFiYkRXLzM4cm1EeXFTT0FSYzRES3dXTGFpc2EzYUY5d2JwbUFBQURWekNDQTFNd2dnSTdvQU1DQVFJQ0NCdXA0K1BBaG0vTE1BMEdDU3FHU0liM0RRRUJCUVVBTUg4eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUtEQXBCY0hCc1pT//receipt省略幾十行transactionIdentifier: 1000000160385706

1.產(chǎn)品標(biāo)識符: product Identifier

在itunes store應(yīng)用內(nèi)定義的產(chǎn)品ID,例如com.公司名.產(chǎn)品名.道具名(com.xxxx.video.vip)

2.交易狀態(tài): state

Purchased購買成功

Restored恢復(fù)購買

Failed失敗

Deferred等待確認(rèn),兒童模式需要詢問家長同意

3. Receipt

很長的一段字符串晚顷,大概49行峰伙,作為二次驗證的重要依據(jù)

4. 交易標(biāo)識符: transaction Identifier

我們需要把Receipt發(fā)送給蘋果的蘋果的服務(wù)器驗證,用戶的購買信息是否真實

驗證服務(wù)器地址

在測試服務(wù)器中该默,發(fā)送receipt蘋果的測試服務(wù)器(https://sandbox.itunes.apple.com/verifyReceipt)驗證

在正式服務(wù)器中(已上線Appstore)瞳氓,發(fā)送receipt到蘋果的正式服務(wù)器(https://buy.itunes.apple.com/verifyReceipt)驗證

當(dāng)我們把應(yīng)用提交給蘋果審核時,蘋果也是在sandbox環(huán)境購買栓袖,其產(chǎn)生的購買憑證顿膨,也只能連接蘋果的測試驗證服務(wù)器,所以我們可以先發(fā)到蘋果的正式服務(wù)器驗證叽赊,如果蘋果返回21007恋沃,則再一次連接測試服務(wù)器進(jìn)行驗證。

驗證購買信息

以下是把客戶端的購買信息發(fā)送到蘋果測試服務(wù)器進(jìn)行確認(rèn)必指,蘋果返回的數(shù)據(jù):

ISN: url: https://sandbox.itunes.apple.com/verifyReceiptORIGINAL JSON: {"receipt":? ? {"original_purchase_date_pst":"2015-06-22 20:56:34 America/Los_Angeles",//購買時間,太平洋標(biāo)準(zhǔn)時間"purchase_date_ms":"1435031794826",//購買時間毫秒"unique_identifier":"5bcc5503dbcc886d10d09bef079dc9ab08ac11bb",//唯一標(biāo)識符"original_transaction_id":"1000000160390314",//原始交易ID"bvrs":"1.0",//iPhone程序的版本號"transaction_id":"1000000160390314",//交易的標(biāo)識"quantity":"1",//購買商品的數(shù)量"unique_vendor_identifier":"AEEC55C0-FA41-426A-B9FC-324128342652",//開發(fā)商交易ID"item_id":"1008526677",//App Store用來標(biāo)識程序的字符串"product_id":"cosmosbox.strikehero.gems60",//商品的標(biāo)識"purchase_date":"2015-06-23 03:56:34 Etc/GMT",//購買時間"original_purchase_date":"2015-06-23 03:56:34 Etc/GMT",//原始購買時間"purchase_date_pst":"2015-06-22 20:56:34 America/Los_Angeles",//太平洋標(biāo)準(zhǔn)時間"bid":"com.cosmosbox.StrikeHero",//iPhone程序的bundle標(biāo)識"original_purchase_date_ms":"1435031794826"http://毫秒},"status":0//狀態(tài)碼,0為成功}

蘋果返回狀態(tài)碼

蘋果返回狀態(tài)碼的解釋:https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

Status描述

21000App Store不能讀取你提供的JSON對象

21002receipt-data域的數(shù)據(jù)有問題

21003receipt無法通過驗證

21004提供的shared secret不匹配你賬號中的shared secret

21005receipt服務(wù)器當(dāng)前不可用

21006receipt合法囊咏,但是訂閱已過期。服務(wù)器接收到這個狀態(tài)碼時塔橡,receipt數(shù)據(jù)仍然會解碼并一起發(fā)送

21007receipt是Sandbox receipt梅割,但卻發(fā)送至生產(chǎn)系統(tǒng)的驗證服務(wù)

21008receipt是生產(chǎn)receipt,但卻發(fā)送至Sandbox環(huán)境的驗證服務(wù)

更詳細(xì)的請參考:http://www.2cto.com/kf/201504/389224.html

最好在客戶端存一個數(shù)據(jù)庫葛家,跟蹤訂單的狀態(tài)户辞,防止用戶訂單在某個環(huán)節(jié)出現(xiàn)問題時無法尋找到訂單進(jìn)行二次處理。

去AppStore請求數(shù)據(jù)時有時候會出現(xiàn)錯誤癞谒,你可以iTunes connect里的connect us去給他們寫郵件反饋問題底燎。但是大部分時間你等等就能解決了,對就是什么也不做等著弹砚。也許那一天他就好了双仍。

單機(jī)/服務(wù)器模式

IOS 應(yīng)用內(nèi)支付(內(nèi)購 /In App Purchase)有兩種模式:

1) 單機(jī)模式

2) 服務(wù)器模式

單機(jī)模式

單機(jī)模式的流程可以簡單的總結(jié)為以下幾步:

1) app從app store 獲取產(chǎn)品信息

2) 用戶選擇需要購買的產(chǎn)品

3) app發(fā)送支付請求到app store

4) app store 處理支付請求,并返回transaction信息

5) app將購買的內(nèi)容展示給用戶

服務(wù)器模式

服務(wù)器模式的主要流程如下所示:

1) app從服務(wù)器獲取產(chǎn)品標(biāo)識列表

2) app從app store 獲取產(chǎn)品信息

3) 用戶選擇需要購買的產(chǎn)品

4) app 發(fā)送 支付請求到app store

5) app store 處理支付請求桌吃,返回transaction信息

6) app 將transaction receipt 發(fā)送到服務(wù)器

7) 服務(wù)器收到收據(jù)后發(fā)送到app stroe驗證收據(jù)的有效性

8) app store 返回收據(jù)的驗證結(jié)果

9) 根據(jù)app store 返回的結(jié)果決定用戶是否購買成功

兩種模式比較

上述兩種模式的不同之處主要在于:交易的收據(jù)驗證朱沃,內(nèi)建模式?jīng)]有專門去驗證交易收據(jù),而服務(wù)器模式會使用獨立的服務(wù)器去驗證交易收據(jù)茅诱。內(nèi)建模式簡單快捷逗物,但容易被破解。服務(wù)器模式流程相對復(fù)雜瑟俭,但相對安全翎卓。

國內(nèi)連接蘋果服務(wù)器的穩(wěn)定性

開發(fā)之初,蘋果方就很負(fù)責(zé)的告知:我們的服務(wù)器不穩(wěn)定尔当。真正開發(fā)之后莲祸,發(fā)現(xiàn)蘋果方果然是很負(fù)責(zé)的蹂安,不僅是不穩(wěn)定椭迎,而且足夠慢锐帜。app store server驗證一個收據(jù)需要3-6s時間。

1.用戶能否忍受3-6s的等待時間

2.如果app store server 宕機(jī)畜号,如何確保成功付費的用戶能夠得到正常服務(wù)缴阎。

對于第一個問題,我們有理由相信用戶完全無法忍受简软,所以采用異步驗證的方式蛮拔,服務(wù)器收到客戶端的請求后,就將請求放到MCQ中去處理痹升。

對于第二個問題建炫,由于蘋果人員很負(fù)責(zé)人的告知:我們的服務(wù)器不穩(wěn)定,所以不排除收據(jù)驗證超時的情況疼蛾。對于驗證超時的收據(jù)肛跌,保存到數(shù)據(jù)庫中并標(biāo)記為驗證超時,定時任務(wù)每隔一定的時間去app store驗證察郁,確保能夠獲取收據(jù)的驗證結(jié)果衍慎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市皮钠,隨后出現(xiàn)的幾起案子稳捆,更是在濱河造成了極大的恐慌,老刑警劉巖麦轰,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乔夯,死亡現(xiàn)場離奇詭異,居然都是意外死亡款侵,警方通過查閱死者的電腦和手機(jī)驯嘱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喳坠,“玉大人鞠评,你說我怎么就攤上這事『攫模” “怎么了剃幌?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晾浴。 經(jīng)常有香客問我负乡,道長,這世上最難降的妖魔是什么脊凰? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任抖棘,我火速辦了婚禮茂腥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘切省。我一直安慰自己最岗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布朝捆。 她就那樣靜靜地躺著般渡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芙盘。 梳的紋絲不亂的頭發(fā)上驯用,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音儒老,去河邊找鬼蝴乔。 笑死,一個胖子當(dāng)著我的面吹牛驮樊,可吹牛的內(nèi)容都是我干的薇正。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼巩剖,長吁一口氣:“原來是場噩夢啊……” “哼铝穷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起佳魔,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤曙聂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鞠鲜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宁脊,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年贤姆,在試婚紗的時候發(fā)現(xiàn)自己被綠了榆苞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡霞捡,死狀恐怖坐漏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碧信,我是刑警寧澤赊琳,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站砰碴,受9級特大地震影響躏筏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呈枉,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一趁尼、第九天 我趴在偏房一處隱蔽的房頂上張望埃碱。 院中可真熱鬧,春花似錦酥泞、人聲如沸砚殿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓮具。三九已至荧飞,卻和暖如春凡人,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叹阔。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工挠轴, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耳幢。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓岸晦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親睛藻。 傳聞我的和親對象是個殘疾皇子启上,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容