接受来自外部域的POST请求? (Google App Engine)

时间:2012-04-27 03:50:41

标签: python google-app-engine tornado paypal-ipn paypal-subscriptions

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

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

我可以在我的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

提前致谢。

P.S。我正在使用PayPal的Sandbox Test Tool发送IPN

3 个答案:

答案 0 :(得分:2)

我发现了自己的错误。我将处理程序的url与其他url一起放在login: requiredapp.yaml

我已经解决了这个问题,现在PayPal的IPN正在通过。

谢谢大家!

答案 1 :(得分:1)

在这里休息一下。

  1. 可能“/ ipn”未被路由到IPNHandler。也许是另一个弃用的处理程序?

  2. 也许您在日志中查看的应用版本与您拥有的应用版本不同。也许您可以部署新版本的代码并针对新版本进行测试。

  3. 也许PayPal发送给你的POST请求没有参数。

  4. P.S。有关如何从Paypal结束执行测试,显示代码的其他相关部分以及任何其他相关信息的更多信息可以提供帮助。 :)

答案 2 :(得分:0)

只是预感,我可能会离开我的联盟,但对于龙卷风,我似乎无法在docs中找到该名称的方法或属性... < / p>

至少对于webapp,我认为arguments是一种实例方法:

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

查看文档here