IOS在應用程式內購買(In App Purchase)總結

來源:互聯網
上載者:User

先附上幾篇文章:

1.In App Purchases: A Full Walkthrough

這篇文章裡說的都很詳盡了,代碼什麼的基本可以照搬.

2.Store Kit Guide(In App Purchase)翻譯 

對蘋果文檔的翻譯,如果還不瞭解什麼是IAP需要先看一看

3.蘋果官方文檔

當需要注意細節問題時,要一個字一個字摳這個文檔

4.iPhone,In,App,Purchase購買完成時驗證transactionReceipt

這篇文章教你如何驗證交易收據

 

 

    上面這幾篇文章基本上把IAP的整個流程都涵蓋了。這裡我根據我的經驗(不見得是準確的)進行細節補充:

1、上傳商品資訊(步驟可以參考itunes connect developer guide)。這裡並不一定要先上傳好應用(app),你可以等程式都測試完了在上傳。但是由於每個商品都是跟唯一一個應用掛鈎的,所以要先建立一個應用擷取其app id。也就是說只要有一個app id,就可以添加其商品,並且進行測試。
2、如果你的商品尚未審核通過,經過幾個小時,你的商品就會進入沙箱。這個時候我們就可以用測試帳號對其進行購買測試。沙箱模式進行測試,蘋果是不會真正走信用卡扣款這一步的。

3、測試帳號可以通過itnunes connect來添加,帳號資訊隨便添就行。這裡要注意,這個帳號只能用於我們應用的沙箱測試,不要用於正常商品的購買(比如買個已上架的應用裡面的商品),否則蘋果會禁用這個帳號。

4、當我們購買一個商品,我們會擷取一個SKPaymentTransaction對象,裡面的transactionReceipt是驗證資訊(就是一組json字串),我們對其進行base64加密,然後按照蘋果規定的格式(具體可以參考文檔)發送到驗證地址就可以了。驗證成功後,app store返回的資訊裡麵包含購買商品的具體資訊,可以用於對賬。

5、購買商品後,我們本地的交易隊列中會有一個新的對象,這個交易隊列是儲存在本地硬碟上的,除非我們調用finishTransaction,否則交易對象不會刪除。而程式開啟時(這裡要注意一下,下面會針對這個做詳細說明)如果交易隊列不為空白,則ios會通知我們交易隊列狀態更新,我們就要根據交易對象的狀態進行處理。

SKPaymentTransactionStatePurchased  交易成功,這時已經扣完錢,我們要保證將商品發送給使用者

SKPaymentTransactionStateFailed 交易失敗,原因很多(可以通過SKPaymentTransaction.error.code來查看具體失敗原因),最常見的是SKErrorPaymentCancelled(使用者取消交易),或是未輸入合法的itunes id

SKPaymentTransactionStateRestored  非消耗性商品已經購買過,這時我們要按交易成功來處理。

6、如果交易失敗,我們可以直接將交易從交易隊列中移除。如果成功,則要發起驗證,等待驗證結果來進行處理。其結果無非三種,驗證成功、驗證非法、驗證錯誤。

成功和非法我們都要講交易對象從交易隊列中移除,驗證錯誤則可能是驗證伺服器出現故障,我們不應該刪除該交易對象,待程式重新開啟後,再一次進行驗證,直到成功或者失敗。

7、有的文章有提到這個觀點,“我們應該在程式開啟的時候調用addTransactionObserver,來添加觀察者,否則可能會遺漏交易對象”

個人認為,這種說法不正確。IOS調用paymentQueue來通知我們交易狀態更新是在添加觀察者之後,如果沒有添加觀察者,IOS不會對交易隊列做任何處理。我們要確保我們的程式有能力處理所有交易了(比如說登陸伺服器成功)才添加觀察者,否則反而會出現IOS調用回呼函數更新交易隊列狀態,但是我們的程式卻沒有辦法處理這個交易。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.