Django-Paypal Ошибка IPN 403 - PullRequest
       6

Django-Paypal Ошибка IPN 403

0 голосов
/ 06 сентября 2011

Я работал над слушателем paypal ipn - он, похоже, не «слышал» сигналы, хотя база данных была обновлена, поэтому я знаю, что ipn был принят пакетом paypal.standard.ipn.

Теперь я получаю ошибку 403 от симулятора ipn. Кто-нибудь знает, почему это происходит? Когда я перехожу непосредственно к 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 ]

2 голосов
/ 05 апреля 2013

Я просто столкнулся с той же проблемой снова.Вот решение, если у кого-то еще есть эта проблема:

Необходимо добавить @csrf_exempt в сам пакет django-paypal.

В paypal / standard / ipn / views.py add:

from django.views.decorators.csrf import csrf_exempt

вверху, среди остальных импортов, и

@csrf_exempt

над @require_POST над объявлением функции.

0 голосов
/ 23 декабря 2014

Это также может быть связано с вашим макетом urls.py. Я был достаточно глуп, чтобы иметь регулярное выражение '^' для домашней целевой страницы по умолчанию. Когда я переключил ipn url, чтобы быть до этого утверждения, все работало.

0 голосов
/ 14 декабря 2013

У меня была такая же проблема.Оказывается, в моем virtualenv я установил django-paypal, а в моем проекте у меня было приложение paypal .Когда я добавил @csrf_exempt в мое приложение, оно не работало, потому что django всегда вызывал пакет paypal в моем Virtualenv.Я сделал pip uninstall django-paypal, и все идет хорошо (возможно, другое решение - это изменить вид пакета)

Надеюсь, это поможет!

0 голосов
/ 08 ноября 2012

Это очень поздний ответ, но у меня была точно такая же проблема. Оказывается, мы не отключили базовую аутентификацию apache на нашем сервере (которая была в процессе разработки). PayPal не может пройти через этот уровень аутентификации, поэтому получает 403 в ответ. Возможно, это была другая проблема, но это была наша проблема!

...