2013-01-09 14 views
0

我使用貝寶與我的Grails 2.1.1版本。在PayPal成功處理付款後,顯示成功頁面配置了自動返回功能,並且還有一個手動返回按鈕到同一個網址。如果用戶沒有點擊返回按鈕,那麼一切都很好。但是如果用戶點擊返回按鈕,那麼同樣的請求會出現兩次到我的操作(自動返回也發送相同的請求)。 是否有可能過濾這個重複的請求對控制器的操作不做任何事情,因爲它已經在爲手動返回點擊請求而進行,或者如果用戶單擊手動返回按鈕,請設置貝寶不發送該付款的自動返回請求。 或者更好的方法來處理這個問題。貝寶自動返回與手動返回按鈕導致應用程序中的錯誤

回答

0

您可以啓用付款數據傳輸來獲取交易ID。

從文檔在:https://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&content_ID=developer/howto_html_paymentdatatransfer

當客戶支付你,貝寶通過附加事務ID您在您的帳戶配置文件中指定的URL發送支付給您的交易ID。此信息通過HTTP GET作爲此名稱/值對發送:tx = transactionID

然後您可以檢查是否已處理transactionID。

此外,您可以通過將這些參數發送回paypal完成支付驗證,如上面鏈接中所述。

+0

謝謝。我已經實施了它。我的問題是另一個。在成功頁面上,我有一個返回按鈕以及帶返回URL的自動返回啓用。如果用戶等待自動返回,那麼一切正常(我根據返回trnxID驗證付款並基於成功更新付款爲完成)。但是,如果用戶單擊「手動返回」按鈕,則同樣的請求會在幾秒鐘內到達服務器兩次。如果用戶點擊返回按鈕,我該如何停止自動返回? –

+0

貝寶似乎無法處理重複的情況。從paypal文檔:「客戶可能刷新頁面,因此如果您將記錄插入數據庫,則必須檢查重複項」。因此,您可以在第一次請求中將記錄插入到數據庫中,並且如果您獲得具有相同txId和付款狀態的更多請求(您應該在db中檢查,如果該txId已經處理或沒有處理),您可以忽略進一步處理/顯示回用戶。 – user1509437