0

アプリが別のドメインからの POST 要求を受け入れるようにできないようです。アプリで PayPal IPN ハンドラを作成しようとしています。

ユーザーがマイ ページの [購読] ボタンをクリックすると、PayPal は IPN (POST) を IPN ハンドラーに送信します。

AppEngine ログで、POST リクエストを受信したことを確認できますが、それは空です (たとえば、引数がない、logging.debug メッセージがログに表示されないなど)。

そのため、アプリ内でPOST を作成してハンドラーをテストすると、ハンドラーは期待どおりに動作します。

外部ソースからの POST を受け入れないのはセキュリティ機能だと思いますか? もしそうなら、私のアプリが PayPal からの POST を受け入れるようにするにはどうすればよいですか?

現時点でのハンドラーは次のようになります (テスト用です)。

class BaseHandler(tornadotoad.mixin.RequestHandler, tornado.web.RequestHandler):
    # ...

class IPNHandler(BaseHandler):
    def post(self):
        if is_ajax(self.request):
            logging.info('AJAX')
        logging.info(self.request.arguments)
        self.write("This is the IPN Handler\n'")
        self.write(self.request.arguments)
        return

前もって感謝します。

PS PayPal のSandbox Test Toolを使用して IPN を送信しています

4

3 に答える 3

2

私は自分の間違いを見つけました。ハンドラーの URL を他の URL と一緒に配置しlogin: requiredましたapp.yaml

これを修正し、PayPal の IPN が通過するようになりました。

みんな、ありがとう!

于 2012-04-27T07:48:44.163 に答える
1

ここでいくつかの予感。

  1. 「/ipn」が IPNHandler にルーティングされていない可能性があります。おそらく別の廃止されたハンドラーですか?

  2. ログで確認しているアプリのバージョンは、使用しているバージョンと同じではない可能性があります。おそらく、コードの新しいバージョンをデプロイして、新しいバージョンに対してテストすることができます。

  3. おそらく、Paypal が送信する POST リクエストには引数がありません。

PS Paypal 側からのテストの実行方法に関する詳細情報、コードの他の関連部分の表示、およびその他の関連情報が役立ちます。:)

于 2012-04-27T06:58:20.367 に答える
0

ただの予感です。私はここで私のリーグから外れているかもしれませんが、トルネードの場合、ドキュメントでその名前のメソッドまたは属性を見つけることができないようです...

少なくともwebappargumentsの場合、インスタンスメソッドだと思います:

 logging.info(self.request.arguments())

こちらのドキュメントを参照してください。

于 2012-04-27T06:23:24.810 に答える