处理来自支付网关的重定向所涉及的安全问题

时间:2013-05-09 04:16:54

标签: ruby-on-rails ruby paypal payment-gateway

这是我第一次尝试与Paypal支付网关集成(Web应用程序基于Ruby on Rails构建),我坚持以下方案:

要立即购买特定商品,用户点击Paypal标准按钮并重定向到其支付网关,用户可在此处进行支付,最后用户被重定向回第一个网站(启用“自动返回”) )

返回网址类似于以下内容:

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”的控制器操作,如果status(st)为“Completed”,则交易记录标记为成功,保存到数据库,并立即向客户发出购买项目。 所以,现在安全问题是:

  1. 重复交易的可能性;但这可以通过以下方式避免 将“tx”值存储在数据库中并保持其唯一性。

  2. 如果用户以某种方式获取上述返回网址,登录后, 用户可以发出返回网址(使用参数'tx'的值, 浏览器的新标签中显示“amt”和“item_number”。这将 触发控制器动作“record_transaction”,因此用户可以 即使不支付相同费用,也可以获得该项目;这可以避免 如果我们重新验证与事务id相对应的事务详细信息 用paypal“tx”,但这个过程需要时间和我们的 要求是保持瞬间。那么,什么才是最好的 处理这个的方法?

  3. 使用SSL证书可以帮助我们吗?
  4. 我正在寻找有人建议我处理这些安全问题的最佳方法。

1 个答案:

答案 0 :(得分:0)

我开始知道,不是使用返回网址中的交易详情,我将不得不使用Paypal classic / REST API(https://developer.paypal.com/webapps/developer/applications),并从中获取交易详情以保存到数据库。目前只有美国商业Paypal帐户可以使用Paypal REST API,只有经典API可用于其他国家/地区。