2016-08-23 215 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总是明智的。