如何以原始顺序获取POST params(使用Rails)?

时间:2010-12-24 09:12:52

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

嘿那里!我正在整合Paypal的IPN系统,他们的身份验证过程要求我的服务器用Paypal响应Paypal请求,其参数与Paypal发送的完全相同(尽管附加了字符串)。所以,我已经将params哈希转换为字符串(格式正确)并将其发回,但看起来结果字符串的顺序与原始POST参数的顺序不同(导致无法进行身份验证)。

任何人都知道如何自己访问实际的POST参数(而不是params哈希),以便我可以将其复制并发送回Paypal?问题是我发送给Paypal的参数顺序需要与命中我的服务器的顺序完全相同。

这有意义吗?有什么想法吗?提前谢谢!

- 贾里德

2 个答案:

答案 0 :(得分:3)

如果我没记错的话,Paypal的IPN可能有点挑剔(你真的必须给他们完全他们发送的内容与你的信息附加或无效)。

您应该抓住控制器中的原始发布数据,向其附加一个字符串,然后在发回原始发布数据之前构建某种HTTP请求。我记得我最后一次使用paypal的IPN时这样做了,而且效果相当好。

我会使用ActionController#raw_post并在将请求发回PayPal之前修改它。另外请记住,IPN响应有超时(我认为),如果Paypal没有收到他们期望的内容,Paypal可能会向您发送包含完全相同数据的多个通知,因此您可能希望立即向他们发送请求你的代码做了其他事情。

答案 1 :(得分:0)

你不能使用params哈希,订单丢失。使用原始请求字符串,例如request.request_urirequest.query_string

相关问题