2013-05-09 68 views
1

這是我第一次嘗試使用貝寶支付網關集成(Web應用程序是建立在Ruby on Rails的),我堅持了以下方案:安全問題從支付網關重定向

買某些項目立即,用戶點擊貝寶標準按鈕,並重定向到其支付網關,用戶可以進行支付,最終用戶重定向回第一個站點(因爲「自動返回」已啓用)

返回URL類似於以下內容:

http://www.sitename.com/student/payment?tx=2HJ8457510872774E&st=Completed&amt=1000.00&cc=USD&cm=&item_number=16&tx=5WJ67200S1135141D&st=Completed&amt=100.00&cc=USD&cm=&item_number=16

此URL然後觸發一個名爲「record_transaction」的控制器操作,如果status(st)爲「Completed」,則交易記錄標記爲成功並保存到數據庫,並立即向客戶發出購買項目。 所以,現在的安全問題是:

  1. 重複交易的可能性;但是這可以通過 在數據庫中存儲「tx」值並保持其唯一性來避免。

  2. 如果用戶以某種方式在瀏覽器獲取上述返回URL的保持,登錄, 用戶可以只發出返回URL後(與PARAMS「TX」的價值觀, 「AMT」和「ITEM_NUMBER」改變)新標籤。這將觸發控制器動作「record_transaction」 ,因此用戶可以在沒有支付相同費用的情況下獲得該項目;如果我們用paypal重新驗證與交易編號 「tx」相對應的交易細節,但是這個過程將需要時間,並且我們的 要求是使其保持瞬時,所以可以避免 。那麼,什麼可以是最好的 方法來處理呢?

  3. 可以使用SSL證書幫助我們嗎?

我正在尋找某人建議我最好的方法來照顧這些安全問題。

回答

0

我開始知道,而不是使用來自返回url的交易細節,我將不得不使用Paypal classic/REST API(https://developer.paypal.com/webapps/developer/applications),並從中獲取交易詳情以保存到數據庫。目前只有美國商業Paypal賬戶可以使用Paypal REST API,只有古典API可用於其他國家。