【问题标题】:Django-Paypal IPN 403 ErrorDjango-Paypal IPN 403 错误
【发布时间】:2011-11-11 13:55:40
【问题描述】:

我正在研究 paypal ipn 监听器 - 它似乎没有“听到”信号,尽管数据库已更新,所以我知道 ipn 已被 paypal.standard.ipn 包接受。

现在我从 ipn 模拟器收到 403 错误 - 有人知道为什么会发生这种情况吗?当我直接导航到监听器 url 时没有错误。

我向侦听器添加了@csrf_exempt,但这没有帮助。

欢迎提出任何建议。

Listeners.py:

from django.dispatch import receiver
from django.contrib.sites.models import Site

from django.views.decorators.csrf import csrf_exempt
from paypal.standard.ipn import signals as paypal_signals
from messaging import send
from utests.models import Test
 import logging


@csrf_exempt
@receiver(paypal_signals.payment_was_successful)
def payment_was_succesful_listener(sender, **kwargs):
     #:sender is the PayPalIPN model instance
    logging.debug("in payment successful listener")
    ... the rest of the code is commented out while I debug...


@receiver(paypal_signals.payment_was_flagged, dispatch_uid="dl-payment_was_flagged")
def payment_was_flagged_listener(sender, **kwargs):
    #:sender is the PayPalIPN model instance
    pass

如您所见,所有应该发生的只是一些调试,但它并没有到达那里。

【问题讨论】:

  • 检查您的错误日志/权限。由于某种原因,脚本返回 403(禁止)。我们不会真正知道为什么,因为这取决于您的脚本/环境。
  • @Robert 是正确的,没有日志(也许看到相关代码),这个问题无法回答,并且接近于过于本地化。我(还)没有关闭它,因为如果改进它可能对其他人有用,尤其是如果您向我们展示相关代码。
  • 错误日志不显示任何内容 - 访问日志只显示远程 ip、url 和 403。在出现 403 错误之前我没有更改任何权限,但只是为了确保我仔细检查了所有权限,它们都很好。我会发布日志以防万一......
  • 访问日志:173.0.82.126 - - [06/Sep/2011:18:01:56 +0000] "POST /billing/something/hard/to/guess/HTTP/1.0" 403 2488

标签: django paypal http-status-code-403 paypal-ipn


【解决方案1】:

我又遇到了同样的问题。以下是其他人遇到此问题的解决方案:

@csrf_exempt 需要添加到 django-paypal 包本身。

在 paypal/standard/ipn/views.py 添加:

from django.views.decorators.csrf import csrf_exempt

在顶部,在其余的导入中,以及

@csrf_exempt

在函数声明上方的@require_POST 上方。

【讨论】:

    【解决方案2】:

    这是一个很晚的答案,但我遇到了完全相同的问题。原来我们没有关闭我们服务器上的 apache 基本身份验证(在开发过程中已经到位)。 PayPal 无法通过该身份验证层,因此得到 403 作为响应。这可能是另一个问题,但这肯定是我们的问题!

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。 事实证明,在我的 virtualenv 中我安装了 django-paypal,在我的项目中,我有应用程序 paypal。 当我将@csrf_exempt 添加到我的应用程序时不起作用,因为 django 总是在我的 Virtualenv 中调用 paypal 包。 我做了一个 pip uninstall django-paypal 并且一切顺利(另一个解决方案可能是修改包视图)

      希望对你有帮助!

      【讨论】:

        【解决方案4】:

        这也可能是由于您的 urls.py 布局。我很愚蠢,可以为默认主页登录页面添加一个 '^' 正则表达式。当我将 ipn url 切换到该语句之前时,一切正常。

        【讨论】:

          猜你喜欢
          • 2015-11-30
          • 2012-08-02
          • 2017-01-02
          • 2012-07-21
          • 2014-02-02
          • 2012-10-17
          • 2020-03-16
          • 2012-04-09
          • 2011-05-07
          相关资源
          最近更新 更多