0

我似乎无法让我的应用程序接受来自不同域的 POST 请求。我正在尝试在我的应用程序中创建一个 PayPal IPN 处理程序。

当用户单击我页面上的“订阅”按钮时,PayPal 会向我的 IPN 处理程序发送一个 IPN(一个 POST)。

我可以在我的 AppEngine 日志中看到收到了一个 POST 请求,但它是空的(例如,没有参数,我的 logging.debug 消息没有出现在日志中等)

因此,我通过在我的应用程序中对其进行 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 的沙盒测试工具发送 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

只是一种预感,我可能在这里出类拔萃,但是对于龙卷风,我似乎无法在文档中找到该名称的方法或属性...

至少对于 webapp 我相信arguments是一个实例方法:

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

请参阅此处的文档。

于 2012-04-27T06:23:24.810 回答