我正在创建一个服务,其中用户必须为某些产品付费。现在,我正在努力处理事务部分。
我正在创建一个事务,如果用户到达结帐页面。支付网关的URL如下:
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一起发送到我的支付提供商,这意味着如果他们知道要向哪个url发送GET请求以及所有信息,例如token en transaction_id,他们就可以在那里浏览,而无需实际付费,并欺骗我的服务器认为请求来自我的支付处理器。
我该如何正确地做这件事?
发布于 2016-12-01 17:03:48
至少您应该验证服务器到服务器调用的来源(ip地址或域),以确保是支付处理器发出了请求。
一些支付处理商(multisafepay)只是向NotifyUrl发送一个唤醒消息,简单地说明支付某某的状态已经改变。然后,您的服务器可以对支付处理器进行安全调用,请求确切的详细信息,并相应地更新本地状态。
此外,在这些场景中使用ssl总是明智的。
https://stackoverflow.com/questions/39097333
复制相似问题