1

我正在尝试将 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 请求。

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

我在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

4

1 回答 1

1

“未定义的方法‘包括?’ 对于 nil:NilClass" 很好奇,我会将日志记录级别提升到 DEBUG 并查看其他情况:

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

于 2012-05-20T18:16:11.303 回答