ruby-on-rails - 如何按原始顺序获取 POST 参数(使用 Rails)?

标签 ruby-on-rails ruby authentication paypal-ipn

嘿那里!我正在集成 Paypal 的 IPN 系统,他们的身份验证过程要求我的服务器通过 POST 到 Paypal 来响应 Paypal 请求,其参数与 Paypal 发送给我的参数完全相同(尽管带有附加字符串)。因此,我将 params 哈希转换为字符串(适当格式化)并将其发送回,但看起来生成的字符串与原始 POST 参数的顺序不同(导致无法进行身份验证)。

有人知道我如何访问实际的 POST 参数本身(而不是参数哈希),以便我可以复制它并将其发送回 Paypal?问题是我发送到 Paypal 的参数顺序需要与到达我的服务器的请求完全相同。

这有道理吗?有什么想法吗?提前致谢!

--贾里德

最佳答案

如果我没记错的话,Paypal 的 IPN 可能有点挑剔(您确实必须准确地向他们提供他们发送的内容并附加您的消息,否则什么都不起作用)。

您可能应该在 Controller 中获取原始发布数据,向其附加一个字符串,并在将其发回之前使用原始发布数据构建某种 HTTP 请求。我记得上次使用paypal的IPN时就这样做过,效果还不错。

我会使用ActionController#raw_post并在将请求发送回 PayPal 之前对其进行修改。另请记住,IPN 响应有超时时间(我认为),如果 Paypal 没有返回预期的结果,他们可能会向您发送包含完全相同数据的多个通知,因此您可能需要在之前立即向他们发送请求你的代码还可以做其他事情。

关于ruby-on-rails - 如何按原始顺序获取 POST 参数(使用 Rails)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4525324/

相关文章:

ruby-on-rails - 通过设计 : Attempt to send authentication email leads to OpenTimeout error when using Cloud 9 dev environment 发送网格

ruby-on-rails - Rails 3,迁移在本地有效,在 Heroku 中不起作用?

laravel 5.4 : Expected response code 250 but got code "530", 并显示消息“530-5.5.1 需要身份验证。了解更多信息

php - 在 CodeIgniter 中设置一般表单验证错误

java - 我在使用 @AuthenticationPrincipal 的 REST api 端点中显示了不必要的参数

ruby-on-rails - Ruby on Rails 错误 bundler

ruby-on-rails - NameError - 创建用户时常量名称错误(Devise、Rails)

ruby - 将 URL 前缀重写为 HTTP header

ruby - RVM 在 arch linux 上安装 ruby​​ 错误

ruby - 解析 100mb JSON 负载的有效方法