Django-Paypal IPN 403错误

时间:2011-09-06 18:41:27

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

我正在使用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

正如你所看到的,所有应该发生的事情都是一些调试,但它没有达到目的。

4 个答案:

答案 0 :(得分:2)

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

需要将@csrf_exempt添加到django-paypal包中。

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

from django.views.decorators.csrf import csrf_exempt

位于其他导入的顶部,

@csrf_exempt

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

答案 1 :(得分:0)

这是一个非常晚的答案,但我有完全相同的问题。事实证明我们没有关闭我们服务器上的apache基本身份验证(在开发过程中就位)。 PayPal无法通过该身份验证层,因此获得403响应。这可能是另一个问题,但这肯定是我们的问题!

答案 2 :(得分:0)

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

我希望它有所帮助!

答案 3 :(得分:0)

也可能是因为你的urls.py布局。我愚蠢到有一个'^'正则表达式用于默认的主页登陆页面。当我将ipn url切换到该语句之前一切正常。