2016-08-23 133 views
0

我正在創建一項服務,用戶必須爲某些產品付款。現在,我正忙於交易部分。如何安全處理交易

如果用戶進入結帳頁面,我將創建一個事務。支付網關具有以下網址:

ReturnUrl -> The URL the costumer is being redirected to after a succesfull payment (after clicking "Back to Webshop") 
NotifyUrl -> The URL (server-to-server call) thats being called when the user finishes his payment, when the costumer is being redirected back via ReturnUrl 
CallbackUrl -> The URL thats being called when the user closes his browser after a succesfull payment, without clicking the "Back to Webshop" button, and hence not being redirected via ReturnUrl 

現在,我與如何當他們回到要麼NotifyUrl或CallbackUrl交易安全設置爲已完成掙扎。 我將事務處理到數據庫時會生成令牌,以便未經授權的用戶無法修改/更改任何內容。但是我使用POST將令牌發送給我的支付提供商,這意味着如果他們知道通過令牌和交易ID等所有信息發送GET請求的網址,他們可以在那裏瀏覽,而無需實際支付和欺騙我的服務器,請求來自我的付款處理器。

我該如何正確地做到這一點?

+0

我不確定我可以按照你的邏輯。什麼人可以瀏覽和在哪裏?並且重申您的說法,即您的交易ID是連續的(所以有人可以弄清楚),並且您沒有檢查請求是否來自您的付款提供商? – Shadow

回答

0

至少您應該驗證服務器到服務器調用(IP地址或域)的來源,以確保它是提出請求的支付處理器。

一些支付處理器(multisafepay)只是發送一個喚醒消息給NotifyUrl,只是簡單地說明付款狀態如此變化。然後,您的服務器可以向支付處理器發出安全呼叫,請求確切的詳細信息並相應地更新本地狀態。

此外,在這些場景中使用ssl總是明智的。