iOS 內(nèi)購(gòu)漏單問(wèn)題解決參考方案

問(wèn)題:iOS內(nèi)購(gòu)漏單的問(wèn)題

事由:

不久前,有用戶反映,大概意思是這樣:蘋(píng)果扣款成功了,但是沒(méi)有發(fā)放應(yīng)得的內(nèi)購(gòu)產(chǎn)品,這錢(qián)花哪去了?

這是一個(gè)嚴(yán)重的漏單問(wèn)題,已經(jīng)得到了及時(shí)解決,現(xiàn)寫(xiě)篇文章總結(jié)一下。

原理概念:

IAP:是指In-App Purchase,顧名思義,一種應(yīng)用內(nèi)的支付(內(nèi)購(gòu))。但I(xiàn)AP不是特指蘋(píng)果的內(nèi)購(gòu)支付方式,應(yīng)用也可以有其自己的內(nèi)購(gòu)支付方式。

這里來(lái)說(shuō)一下Apple的IAP。下圖是蘋(píng)果內(nèi)購(gòu)的支付流程圖。

支付流程解釋

1.客戶端向Appstore請(qǐng)求購(gòu)買(mǎi)產(chǎn)品,Appstore驗(yàn)證產(chǎn)品成功后,從客戶端的Apple賬戶中扣費(fèi)。

2.Appstore向客戶端返回一段receipt-data(票據(jù)),里面記錄了本次交易的證書(shū)和簽名信息。

3.客戶端向我們可以信任的服務(wù)器(后臺(tái))提供receipt-data

4.服務(wù)器對(duì)receipt-data進(jìn)行一次base64編碼

5.把編碼后的receipt-data發(fā)往itunes.appstore進(jìn)行驗(yàn)證

6.itunes.appstore返回驗(yàn)證結(jié)果給服務(wù)器

7.服務(wù)器對(duì)商品購(gòu)買(mǎi)狀態(tài)以及商品類(lèi)型,向客戶端發(fā)放相應(yīng)的道具與推送數(shù)據(jù)更新通知

問(wèn)題:

以上七個(gè)步驟實(shí)際上是一個(gè)很安全的支付流程了。那問(wèn)題會(huì)出在哪里呢?

出現(xiàn)的兩種驗(yàn)證方式:

IAP built-in Model(本地驗(yàn)證):此種方式跳過(guò)來(lái)3-7步,在第2步中拿到票據(jù)直接向itunes.appstore請(qǐng)求驗(yàn)證票據(jù),根據(jù)票據(jù)的結(jié)果來(lái)修改數(shù)據(jù)。有一些單機(jī)游戲因?yàn)椴簧婕昂笈_(tái)服務(wù)器會(huì)采取此種方式,但由此單來(lái)的不安全也很明顯,比如一些越獄的手機(jī)會(huì)很容易對(duì)此進(jìn)行一些數(shù)據(jù)操作。這里暫不做討論。

IAP Server Model(服務(wù)器驗(yàn)證):如果把數(shù)據(jù)放在服務(wù)器做校驗(yàn)(如實(shí)走完1-7的流程),就不用擔(dān)心客戶端出現(xiàn)偽造票據(jù)等問(wèn)題。但是這樣還會(huì)出現(xiàn)問(wèn)題。

想象一下,如果得到票據(jù)說(shuō)明蘋(píng)果已經(jīng)扣款成功,就在這時(shí)向服務(wù)器發(fā)送票據(jù)驗(yàn)證的時(shí)候出現(xiàn)來(lái)異常,這個(gè)時(shí)候可能網(wǎng)絡(luò)突然斷了,未把票據(jù)發(fā)送的服務(wù)器驗(yàn)證,導(dǎo)致明明已經(jīng)扣了款,卻沒(méi)有收到相應(yīng)的內(nèi)購(gòu)產(chǎn)品,出現(xiàn)了漏單問(wèn)題。

所以如何解決此問(wèn)題?解決流程如下

一:得到票據(jù),立即保存本地,并向服務(wù)器驗(yàn)證

二:驗(yàn)證成功,刪除本地保存數(shù)據(jù)。若未成功,再次驗(yàn)證重試。

三:APP重啟時(shí),如有本地票據(jù)則與服務(wù)器進(jìn)行認(rèn)證,若認(rèn)證成功則刪除票據(jù)。

四:若以上流程還未能解決漏單問(wèn)題,則可在APP增加類(lèi)似找回按鈕,依據(jù)本地保存票據(jù)進(jìn)行找回(流程三)。

注:服務(wù)器需建立表單記錄票據(jù)數(shù)據(jù),避免多次增加內(nèi)購(gòu)產(chǎn)品。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.總說(shuō)內(nèi)購(gòu)的內(nèi)容 協(xié)議、稅務(wù)和銀行業(yè)務(wù) 信息填寫(xiě) 內(nèi)購(gòu)商品的添加 添加沙盒測(cè)試賬號(hào) 內(nèi)購(gòu)代碼的具體實(shí)現(xiàn) 內(nèi)購(gòu)的注...
    默默_David閱讀 3,879評(píng)論 0 6
  • 一.總說(shuō)內(nèi)購(gòu)的內(nèi)容 協(xié)議、稅務(wù)和銀行業(yè)務(wù) 信息填寫(xiě) 內(nèi)購(gòu)商品的添加 添加沙盒測(cè)試賬號(hào) 內(nèi)購(gòu)代碼的具體實(shí)現(xiàn) 內(nèi)購(gòu)的注...
    九洲仙人閱讀 3,032評(píng)論 2 3
  • 在現(xiàn)實(shí)與虛構(gòu)之間 跳躍著不安之書(shū) 所有的靈魂全憑虛構(gòu) 所有的軀殼都是行尸走肉 天空是虛構(gòu)的 都去冒險(xiǎn)吧 不用繩索去...
    租了五顆星閱讀 340評(píng)論 1 4
  • 《青石瓦》 ---無(wú)念 大雪迎面簌簌飄, 漫天飛揚(yáng)靜靜享。 若問(wèn)此刻天尚好, 青石瓦間盡知涼。
    無(wú)念兒閱讀 350評(píng)論 0 0
  • 有一副漫畫(huà)頗有意思,是一個(gè)講述關(guān)于計(jì)劃和過(guò)程的話題。圖中有兩個(gè)場(chǎng)景,第一場(chǎng)景中有一個(gè)我們暫且叫他小光的人,騎著單車(chē)...
    補(bǔ)拙莫如勤LV閱讀 486評(píng)論 0 1

友情鏈接更多精彩內(nèi)容