【问题标题】:Paypal IPN 503 error with Rails 3.0.10 and HerokuRails 3.0.10 和 Heroku 的 Paypal IPN 503 错误
【发布时间】:2012-05-27 09:33:48
【问题描述】:

我正在尝试将 Paypal IPN 通知集成到部署到 Heroku (bamboo-mri-1.9.2) 的 Rails 3.0.10 应用程序中。这不是我第一次将 IPN 集成到 Rails 应用程序中,但我遇到了一个让我发疯的问题,此时我一无所知。

我在 config/routes.rb 中为 IPN 定义了一个特殊的路由:

match "/paypal_ipn" => "registrations#paypal_ipn", :as => :paypal_ipn

而我在RegistrationController中有相应的动作:

class RegistrationsController < ApplicationController
  include ActiveMerchant::Billing::Integrations
  ...
  def paypal_ipn
    // Notification management stuff...
  end
end

问题是,一旦应用程序部署到 Heroku,我就无法向此 URL 发送 IPN 通知,因为服务器总是以 503 错误响应 IPN 模拟器。奇怪的是,我可以使用 CURL 或任何浏览器成功地向该 URL 发送任何 POST 或 GET 请求。

我什至用raise "It exploded!" 替换了paypal_ipn 方法的内容,没有任何异常出现在日志中,并跳过了我见过的所有之前的过滤器,结果相同。

我只能在 heroku 日志上看到这些,但这对我没有多大帮助...

2012-05-20T17:32:47+00:00 heroku[router]: Error H13 (Connection closed without response) -
> POST reddeportiva-sta.heroku.com/paypal_ipn dyno=web.1 queue= wait= service= status=503 
bytes=2012-05-20T17:32:47+00:00 app[web.1]: !! Unexpected error while processing request: 
undefined method `include?' for nil:NilClass
2012-05-20T17:32:47+00:00 heroku[nginx]: 173.0.82.126 - - [20/May/2012:17:32:47 +0000] 
"POST /paypal_ipn HTTP/1.0" 503 607 "-" "-" reddeportiva-sta.heroku.com

有人知道 Paypal IPN 通知消息是否有任何与简单 CURL POST 请求不同的特殊内容,而这可能会导致这场噩梦?

编辑 好吧,我已经找到了问题的根源,但我仍在调查解决方案。

我正在使用 rack-iframe (http://rubygems.org/gems/rack-iframe) 让我的用户在其网页上的 iframe 内登录和维护会话。

Paypal IPN 消息中似乎有些东西导致 rack-iframe 崩溃。我会进一步调查并分享我的发现。

这是一个非常奇怪的错误......


编辑 2 我已经向 rack-iframe 创建者发送了一个带有这个问题的小修复的拉取请求,所以我认为这个问题已经解决了 :-) https://github.com/merchii/rack-iframe/pull/1

【问题讨论】:

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


    【解决方案1】:

    “未定义的方法 `include?'对于 nil:NilClass" 很好奇,我会将日志记录级别提升到 DEBUG 并看看还有什么情况:

    https://devcenter.heroku.com/articles/logging#logging_in_rails

    【讨论】:

    • loggin级别已经是DEBUG了,但是logs上什么都没有显示,这个错误很奇怪,就好像请求没有到达Rails应用一样,因为任何其他异常都写了很多日志中的内容并触发 exception_notification gem,它会向我发送电子邮件报告。
    • 感谢您的回答,让我重新思考,终于找到了问题所在:-)
    猜你喜欢
    • 2013-02-11
    • 2017-07-07
    • 2012-07-21
    • 2011-11-11
    • 1970-01-01
    • 2012-08-02
    • 2017-01-02
    • 2017-01-21
    • 2012-01-08
    相关资源
    最近更新 更多