这是我第一次尝试与Paypal付款网关集成(Web应用程序基于Ruby on Rails构建),并且遇到以下情况:
要立即购买某些商品,用户单击贝宝标准按钮,然后重定向到其付款网关,用户可以在该网关进行付款,最后将用户重定向回到第一个站点(启用“自动退货”)
返回URL类似于以下内容:
http://www.sitename.com/student/payment?tx=2HJ8457510872774E&st=Completed&amt=1000.00&cc=USD&cm=&item_number=16&tx=5WJ67200S1135141D&st=Completed&amt=100.00&cc=USD&cm=&item_number=16
然后,此URL触发名为“ record_transaction”的控制器操作,并且如果状态(st)为“已完成”,则将交易记录标记为成功,保存到数据库中,并立即向客户发出购买商品。
因此,现在的安全问题是:
重复交易的可能性;但这可以避免
在数据库中存储“ tx”值并保持其唯一性。
如果用户登录后以某种方式掌握了上述返回网址,
用户只需发出返回网址(带有参数“ tx”的值,
在浏览器的新标签中更改了“ amt”和“ item_number”)。这将
触发控制器动作“ record_transaction”,因此用户可以
即使不付钱也能得到物品;这是可以避免的
如果我们重新验证与交易ID相对应的交易明细
使用paypal进行“ tx”操作,但是此过程将需要时间,而我们
要求是保持瞬时。所以,什么是最好的
处理这个的方法?
使用SSL证书可以帮助我们吗?
我正在寻找建议我最好的方法来解决这些安全问题的人。
最佳答案
我知道,我将不得不使用Paypal classic / REST API(https://developer.paypal.com/webapps/developer/applications),而不是使用返回URL中的交易详细信息,并从中获取交易详细信息以保存到数据库。当前,只有美国企业Paypal帐户可以使用Paypal REST API启用,其他国家/地区则只能使用经典API。
关于ruby-on-rails - 处理从支付网关重定向的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454270/