2011-03-25 23 views
3

我有一個沙箱PAYPAL區, 我的語言是Python - Django和我用我的服務器的作品,但 Django的貝寶 IPN TES當有人試圖買東西,在貝寶處理後沙箱我沒有收到信號,並在我的paypal_ipn我沒有看到交易。 所以問題是我沒有收到信號。 這是models.pyDjango的貝寶不接收信號

from paypal.standard.ipn.signals import payment_was_successful 

def show_me_the_money(sender, **kwargs): 
    code = sender.item_number 
    type, number_product, pagamento_corso_id = code.split('_') 
    obj = get_object_or_404(PagamentoCorso, int(pagamento_corso_id)) 
    obj.pagamento = True 
    obj.save() 

payment_was_successful.connect(show_me_the_money) 

我的信號代碼,請幫助我,因爲是7天... ...,我很沮喪! :-)

+0

有幾個想法浮現在腦海中: 1)您是否在您的PayPal表單上設置了通知/返回網址? 2)您是否在防火牆之後並且正確地轉發了端口? 3)表單提交給貝寶沙箱服務器還是真實的? 4)您是否從PayPal獲得了http請求? – pyeleven 2011-03-25 18:41:52

+0

嗨...終於我找到了問題。只有現在我看到我不發送截取返回信號的notify_url :-)感謝Pyeleven – robin 2011-03-26 09:48:43

回答

5

我認爲你可以使用貝寶測試工具僞造notifactions發送給您的通知的URL。這可能會使調試更容易。

http://www.friendly-stranger.com/pictures/paypal.jpg

你也可以做的是運行什麼附帶Django的貝寶測試。它應該像

python manage.py test paypal 

您還可以看看測試代碼,並創建自己的測試調試您的問題。

如果您仍然無法弄清楚後您的網址配置和傳遞IPN表單模板中的視圖。

3

我也有類似的問題。就我而言,我可以從訪問日誌,貝寶訪問我的付款通知的網址看到,而這些要求是200行,但引發了Django的一側沒有信號。

原來,支付了「待定」狀態,而不是「完成」(我沒有聽上paypal.standard.ipn.signals.payment_was_flagged信號)。

我的款項被標記的原因,是不正確的settings.PAYPAL_RECEIVER_EMAIL和不正確的paypal_dict["business"]電子郵件地址。完全相同的問題as for this guy

+0

還值得注意的是,如果您在Django Admin視圖中查看PayPalIPN表,「Flag info」列將顯示錯誤。 – 2012-09-17 01:07:05

0

在我的情況下,原因很簡單 - 我已經將信號處理程序代碼添加到views.py,它不會自動加載,因此處理程序從未真正使用並連接到信號。最簡單但很難看的解決方案是將它們移動到models.py,建議使用Django的ready()方法。