2011-09-06 92 views
0

我正在使用paypal ipn監聽器 - 它似乎沒有「聽到」信號,雖然數據庫已更新,因此我知道ipn已被paypal.standard.ipn包。Django-Paypal IPN 403錯誤

現在我從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 

正如你所看到的,一切是應該發生的一些調試,但它並沒有到達那裏。

+0

檢查您的錯誤日誌/權限。出於某種原因,腳本正在返回403(禁止)。我們不會真正知道爲什麼這取決於您的腳本/環境。 – Robert

+0

@羅伯特是正確的,沒有日誌(也許看到相關的代碼),這個問題是不可能回答,並且過於侷限於本地化。我還沒有完成它,因爲如果改進了,它可能對其他人有用,特別是如果您向我們顯示相關代碼。 –

+0

錯誤日誌沒有顯示任何內容 - 訪問日誌只顯示遠程IP,URL和403.在403錯誤出現之前,我沒有更改任何權限,但只是爲了確保所有權限都被雙重檢查並且他們很好。我會發布日誌以防萬一... – hgolov

回答

2

我剛剛遇到同樣的問題了。以下是解決其他人有此問題的解決方案:

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

在貝寶/標準/ IPN/views.py添加:

from django.views.decorators.csrf import csrf_exempt 

在頂部,所述的進口的其餘部分之間,和

@csrf_exempt 

函數聲明上述@require_POST上述。

0

這是一個非常晚的答案,但我有完全相同的問題。原來,我們並沒有關閉我們服務器上的apache Basic Authentication(這是在開發過程中)。 PayPal無法通過該認證層,因此得到403響應。這可能是另一個問題,但這當然是我們的問題!

0

我有同樣的問題。 事實證明,在我的virtualenv我已安裝 django-paypal和在我的項目中,我有應用程序貝寶。 當我將@csrf_exempt添加到我的應用程序時無法正常工作,因爲django總是在我的Virtualenv中調用PayPal包。 我做了一個點卸載django-paypal和一切順利(另一種解決方案也許是修改包視圖)

我希望它有幫助!

0

這也可能是由於您的urls.py佈局。我很笨,有一個'^'正則表達式的默認主頁登錄頁面。當我切換IPN網址之前,該聲明一切工作。