IOS內購支付server驗證模式

來源:互聯網
上載者:User

標籤:不同   text   同事   驗證   view   介面   簡單   environ   不能   

IOS 內購支付兩種模式:
  • 內建模式

  • server模式

內建模式的流程:
  1. app從app store 擷取產品資訊

  2. 使用者選擇須要購買的產品

  3. app發送支付請求到app store

  4. app store 處理支付請求。並返回transaction資訊

  5. app將購買的內容展示給使用者

server模式的流程:
  1. app從server擷取產品識別欄位表

  2. app從app store 擷取產品資訊

  3. 使用者選擇須要購買的產品

  4. app 發送 支付請求到app store

  5. app store 處理支付請求,返回transaction資訊

  6. app 將transaction receipt 發送到server

  7. server收到收據後發送到app stroe驗證收據的有效性

  8. app store 返回收據的驗證結果

  9. 依據app store 返回的結果決定使用者是否購買成功

上述兩種模式的不同之處主要在於:交易的收據驗證。內建模式沒有專門去驗證交易收據,而server模式會使用獨立的server去驗證交易收據。

內建模式簡單快捷,但easy被破解。server模式流程相對複雜,但相對安全。

開發之初,蘋果方就非常負責的告知:我們的server不穩定。真正開發之後。發現蘋果方果然是非常負責的,不僅是不穩定,並且足夠慢。app store server驗證一個收據須要3-6s時間。

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

  2. 假設app store server 宕機,怎樣確保成功付費的使用者可以得到正常服務。

對於第一個問題,我們有理由相信使用者全然無法忍受,所以採用非同步驗證的方式,server收到client的請求後,就將請求放到MCQ中去處理。

對於第二個問題,因為蘋果人員非常負責人的告知:我們的server不穩定。所以不排除收據驗證逾時的情況。對於驗證逾時的收據,儲存到資料庫中並標記為驗證逾時。定時任務每隔一定的時間去app store驗證,確保可以擷取收據的驗證結果。

在開發過程中,須要測試應用是否可以正常的進行支付。可是又不能進行實際的支付,因此須要使用蘋果提供的sandbox Store測試。

Store Kit不能在iOS模擬器中使用。測試Store必須在真機上進行。

在sandbox中驗證receipt:
https://sandbox.itunes.apple.com/verifyReceipt

在生產環境中驗證receipt:
https://buy.itunes.apple.com/verifyReceipt

在實際開發過程中,server端通過issandbox欄位標識client傳遞的收據是沙箱環境中的收據還是生產環境中的收據。

在提交蘋果審核前。沙箱測試均無問題。提交蘋果審核後。被告知購買失敗,審核未通過。通過查詢日誌發現,client發送的交易收據為沙箱收據,可是issandbox欄位卻標識為生產環境。

結論:

蘋果審核app時,仍然在沙箱環境下測試。可是client同事在app提交蘋果審核時。將issandbox欄位寫死。設定為生產環境。這樣就導致沙箱收據發送到https://buy.itunes.apple.com/verifyReceipt去驗證。

那麼怎樣自己主動的識別收據是否是sandbox receipt呢?

識別沙箱環境下收據的方法有兩種:

1.依據收據欄位 environment = sandbox。

2.依據收據驗證介面返回的狀態代碼,假設status=21007。則表示當前的收據為沙箱環境下收據, t進行驗證。

蘋果反饋的狀態代碼。
  • 21000App Store無法讀取你提供的JSON資料
  • 21002 收據資料不符合格式
  • 21003 收據無法被驗證
  • 21004 你提供的共用密鑰和賬戶的共用密鑰不一致
  • 21005 收據server當前不可用
  • 21006 收據是有效,但訂閱服務已經到期。

    當收到這個資訊時,解碼後的收據資訊也包括在返回內容中

  • 21007 收據資訊是測試用(sandbox),但卻被發送到產品環境中驗證
  • 21008 收據資訊是產品環境中使用,但卻被發送到測試環境中驗證

先生產驗證後測實驗證,可以避免來回切換介面的麻煩。

測實驗證僅僅要用你自己申請的測試appid的時候才會用到,使用者不會擁有測試appid,所以不會走到測實驗證這一步。

即使生產驗證出錯,應該也不回返回21007狀態嗎。測實驗證通過的username,和儲值金額最好用資料庫記錄下來,方便公司資金核對。

IOS內購支付server驗證模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.