2013-05-28 82 views
1

摘要:我想使用returnUrl作爲交易已被PayPal接受的證明。PayPal returnURL安全

我正在實施基於PayPal的非常基本的購買工作流程。

一切工作不錯,用戶點擊工資,用戶去貝寶,貝寶將用戶帶到我RETURNURL ...,我接受在最後一步付款。

我知道我必須實現一個IPN端點並接受付款,但這個項目是非常基本的,我太老了或懶得實現所有這種異步行爲,這可能是一個邊緣-cases。

會很好,如果我只是使returnUrl更有信心,很難僞造。

我想會有,在RETURNURL有將包括基於存儲在PayPal賬戶一密鑰並在實際交易令牌校驗簽名的可能性

我不知道這是否存在,我沒有找到任何這方面的文件,任何建議使returnUrl更有信心是值得歡迎的。

另外如果有人認爲我完全錯了,returnUrl永遠不會成爲交易已被接受的證明,請表達自己。

回答

2

當您剛剛完成返回URL時,您需要再次發送到PayPal以使用您的PDT令牌驗證交易。

說你的返回URL是Thanks.aspx:

「從Thanks.aspx的代碼隱藏,你會解析tx值,使HTTP POST將https://www.paypal.com/cgi-bin/webscr以下參數:CMD = _notify -synch & tx = [TransactionID] & at = [PDTIdentityToken]。「

這將回應該請求是否有效。

問題是這個網頁不能保證被打中。用戶可能會關閉他們的瀏覽器,或者他們的互聯網可能會被切斷,或者其他任何事情。

IPN將從PayPal服務器中擊中,你真的無法擊敗。

設置起來相當簡單,但我建議閱讀本文檔,它將解釋PDT和IPN方法,並提供了一種簡單的方法來找出您需要的東西。

http://www.codeproject.com/Articles/42894/Introduction-to-PayPal-for-C-ASP-NET-developers?msg=4382854#xx4382854xx

+0

你是對的,僞造_returnUrl_將不驗證交易。我嘗試過,並且當我嘗試爲此事務執行_express checkout_時出現錯誤。 – fguillen

0

地完成安裝的快速結賬後,我意識到它是如何被利用。

即使我創建了一個唯一的發票號碼並返回以標記爲已付款,但我發現它仍然可以被用戶更改返回鏈接中的發票參數所利用。當然,已經有檢查確保任何發票只能支付一次,但我需要做出黑客證明。

因此,我完成的工作是添加一些額外的檢查,以確保問題發票是分配給該用戶的最後一張發票。是的,在拜訪PayPal並返回之後,仍然保留相同的會話ID。