2010-08-11 43 views
1

閱讀PayPal開發者文檔(這是很多文檔)我不確定IPN是強制還是我可以忽略它。處理PayPal IPN:是否有必要?我可以使用其他方法嗎?

當然,我必須實施一些其他的機制才能知道付款是否正確。我認爲是這樣做的:

  • 在returnUrl和cancelUrl中使用不同的代碼創建一個新的支付(通過web服務)。這些代碼是爲每筆付款隨機生成的,並存儲在數據庫中。

  • 當用戶完成付款(OK或KO)後,PayPal會將其頁面重定向到我的網站,我將能夠知道代碼是否正確。

  • 如果出現問題(用戶關閉窗口,響應未到達,代碼不匹配...)將在PayPal網站上手動處理。

你認爲這樣可以嗎?

謝謝。

+0

用戶通過什麼機制「完成付款?」您是否爲他們啓動付款頁面?在我看來,PayPal會將其視爲收款人在購買前查看returnUrl和cancelUrl的「正確」。 – 2010-08-11 16:14:07

+0

是的,我將啓動PayPal付款頁面。你認爲在源代碼中返回的URL將是可見的嗎?那麼,我會考慮一下。 – sinuhepop 2010-08-11 16:37:22

+0

不僅在源代碼中,而且觀察從Web瀏覽器發出的HTTP請求的人或程序肯定會看到它們。 – 2010-08-13 06:30:33

回答

1

不,我覺得這聽起來很糟糕。

用戶可以跳過付款步驟,只需將所需的URL一起編輯,然後將其粘貼到瀏覽器地址欄中即可。那會給他們免費的產品。

您可以使用PayPal SOAP API在收到URL後驗證事務。你不能盲目地信任那個URL,你只能接受它。

您需要小心,不要讓用戶向您發送其他人的付款網址,並且爲該付款接收產品兩次。 (一次給真正的收款人,一次給欺詐者......)

重要的是你要確認你支付了正確的金額。 (假設你很在意你支付了正確的金額)。

一般來說,當你使用PayPal接口時,無論你使用什麼方法,重要的是你要了解軟件安全和威脅建模。否則,只有很少的機會可以避免欺詐。

+0

不,我承認它很醜,但我認爲它不容易被破解。但我喜歡使用PayPal SOAP服務的想法。我必須使用一項服務(https://svcs.sandbox.paypal.com/AdaptivePayments/Pay/)才能將信息發送至PayPal並生成PayKey,另一項服務(https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails)當用戶回到我的網站。可以嗎? – sinuhepop 2010-08-11 15:50:16

1

貝寶設計了他們的系統,儘可能在邏輯上是安全的,因爲他們認爲它可以。我不會開始重新設計他們花費很長時間開發和思考的系統。你只是忽略了那麼多的安全功能,爲你的利益。

對於其中一種情況,如果這兩個密鑰在原始格式客戶端在任何時候都可以訪問,那麼您就有一個易於破解的系統。只需點擊Paypal付款頁面,然後在瀏覽器中輸入退貨地址,而無需實際付款,系統會將其視爲有效的交易,除非您在派發商品之前手動檢查自己(對於例如它太遲了雖然)。

或者黑客可以猜測返回鍵。這將會持續很長時間,並且是高度隨機化的,如果這是一個遞增的關鍵,那麼您又會擁有一個超級簡單易用的系統。

驗證付款IPN是必不可少的。不要採取捷徑,在涉及金錢的情況下做對。

+0

實際上IPN是異步的。 SOAP API可以用來代替。 – 2010-08-11 15:26:27

+0

用戶永遠不會知道我的隨機生成的代碼。但我不得不承認它的醜陋。 – sinuhepop 2010-08-11 15:43:58

+0

@Heath:那麼,您認爲我可以使用PayPal SOAP服務獲得相同(以及更多)的信息? – sinuhepop 2010-08-11 15:46:09

相關問題