我正在创建一项服务,用户必须为某些产品付费。现在,我正在努力处理交易部分。
如果用户进入结帐页面,我正在创建一个交易。支付网关具有以下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的令牌发送给我的支付提供商,这意味着如果他们知道发送GET请求的URL与令牌en transaction_id等所有信息,他们可以浏览那里而不实际支付并欺骗我的服务器认为请求来自我的付款处理商。
我将如何正确地做到这一点?
答案 0 :(得分:0)
至少你应该验证服务器到服务器呼叫的来源(IP地址或域名),以确保它是发出请求的支付处理者。
某些支付处理器(multisafepay)只是向NotifyUrl发送唤醒消息,只是声明支付状态已发生变化。然后,您的服务器可以向支付处理器发出安全呼叫,请求确切的详细信息并相应地更新本地状态。
此外,在这些场景中使用ssl总是明智的。