2013-07-22 101 views
1

我在一個網站上使用PHP和HTML/JavaScript實現Google Wallet for Digital Goods。Google電子錢包:如何將訂單ID包含在success_handler中?

Google會等待10秒讓postback.php以200/ok響應並輸出訂單ID。如果發生這種情況,它將收取信用卡並調用success_handler函數。然而,在沒有響應10秒鐘之後,它將取消事務並觸發failure_handler函數。

我想保護自己免受我的服務器速度的影響,並且只有在調用success_handler時纔想提供數字商品。爲了防止欺詐,我需要驗證訂單ID是否正確(因爲成功處理程序是客戶端)。

如何獲取交易的訂單ID到success_handler中,以便我可以在我的系統中驗證它,並且如果所有匹配都確定我收到了這筆錢並交付了數字商品?

回答

2

正如您所指出的,爲了防止欺詐,您需要檢查您的服務器,調用成功處理程序的事務與對您的服務器進行的相應回發呼叫匹配。

您需要匹配兩個回調函數返回的訂單ID。訂單ID是智威湯遜的一部分,在成功處理程序或服務器回發回(「響應」下 - >「訂單ID」):

https://developers.google.com/commerce/wallet/digital/docs/jsreference#successhandler

+0

完美!所以成功/失敗處理函數包含一個結果參數'success_handler = function(result)',它包含所有必要的信息(特別是訂單ID或錯誤類型)。從那裏我可以調用'result ['response'] ['orderId']'以及'result ['request'] ['sellerData']'。說得通! :-)非常感謝 – olli

+0

我相信你給出的關於失敗處理程序信息的鏈接不太準確。從這個文檔說的話我會認爲''failure_handler = function(result)'會給我'result ['request'] ['sellerData']'和'result ['response'] ['errorType']''。後者是正確的,但是對於賣方數據和該對象的「圖層」中的任何值都在result ['request'] ['request'] ['price']'(一個額外的'request'圖層)下面。或者我讀錯了什麼? – olli

相關問題