2013-03-24 77 views
7

我剛剛用IAP製作iOS應用程序購買虛擬硬幣(消費品)。後端是Ruby on Rails。現在我對整個解決方案有一些擔憂。IAP後端最佳做法

我現在的IAP過程描述如下:

  • STEP 1 - iOS的客戶端發送請求給我們的後端,並獲得產品ID。
  • STEP 2 - 客戶端通過商店套件檢索產品列表與步驟1 IDS
  • 第3步 - 用戶點擊購買和客戶端發送支付請求到商店套件
  • 第4步 - 當完成交易的客戶端發送回執令牌我們的後端
  • 第5步 - 服務器首先驗證收據,以確保它是一個有效的驗證
  • 第6步 - 服務器調用應用程序商店,以驗證接收和處理交換(充值賬戶DB)
  • STEP 7 - 客戶獲得迴應並顯示帳戶餘額

我之前從事電子商務/支付解決方案,IAP採取其他方式,但通常支付網關會發送收據服務器到服務器進行驗證。我們總是有消息隊列的解決方案,以確保所有交易穩定和可維護。

我的問題是:

  1. 什麼是驗證IAP收到最佳做法?如何避免我們的服務器驗證中斷? (例如,用戶花錢在客戶端上完成交易,但在驗證服務器上的收據時失敗,沒有IAP恢復交易支持。)

  2. Apple IAP更可能是一個完美的客戶端解決方案。特別是在我的情況下,用戶付款後,他想立即收到硬幣,而不是我們告訴他交易正在處理的情況,他的賬戶很快就會兌現。優先考慮在移動設備上使用響應式用戶體驗。你還在服務器上使用消息隊列嗎?

謝謝你的時間。

回答

1

問題1:根據Apple's docs here,您應該始終驗證服務器上的收據。有一對夫婦紅寶石的寶石可以用說話的蘋果的服務器上的後臺幫助:

https://github.com/gabrielgarza/monza

託管:https://getmonza.com

https://github.com/nomad/venice

https://github.com/nov/itunes-receipt

問題2:這取決於你對欺詐有多擔心。如果你沒有驗證收據,那麼你暴露自己的欺詐行爲。我強烈建議在服務器端進行驗證。

結帳this WWDC video這是一個很好的基礎應用程序內購買。