ruby-on-rails - 处理从支付网关重定向的安全问题

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

这是我第一次尝试与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/

相关文章:

ruby - 使用 watir 和 ruby​​ 通过索引选择值

java - 错误 “can' t 创建 Java VM”尝试使用 Ruby Java Bridge (RJB) gem

ruby - 是否有类似 String#scan 的函数,但返回 MatchDatas 数组?

php - 检测到 Paypal 购物车错误

ruby-on-rails - Rails 应用程序崩溃时重定向到 404

javascript - 我的 JavaScript 模式/实践很糟糕。我应该去哪里寻求帮助?

ruby-on-rails - 在 form_for 上设置的 RoR 字段

ruby-on-rails - 属性在belongs_to 对象中的范围

php - 使用 REST api 进行 Paypal 支付处理

php - 如何确认 PayPal 付款已成功执行?