Heroku (bamboo-mri-1.9.2) にデプロイされた Rails 3.0.10 アプリケーションに Paypal IPN 通知を統合しようとしています。Rails アプリケーションに IPN を統合するのはこれが初めてではありませんが、気が狂うような問題が発生しており、現時点では何もわかりません。
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
問題は、サーバーが常に 503 エラーで IPN シミュレーターに応答するため、アプリケーションが Heroku にデプロイされると、この URL に IPN 通知を送信できないことです。興味深いのは、CURL または任意のブラウザーを使用して、POST または GET 要求をこの URL に正常に送信できることです。
paypal_ipn
メソッドの内容を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 ) を使用して、ユーザーがログインし、Web ページの iframe 内でセッションを維持できるようにしています。
Rack-iframe をクラッシュさせる原因が Paypal IPN メッセージにあるようです。私はそれをさらに調査し、私の発見を共有します.
それは本当に奇妙なバグでした...
編集 2 この問題を少し修正したプル リクエストを Rack-iframe 作成者に送信したので、この問題は解決したと思います :-) https://github.com/merchii/rack-iframe/pull/1