2013-05-28 42 views
0

在models.py的底部我:Django的貝寶IPN信號沒有被接收

from paypal.standard.ipn.signals import payment_was_successful, payment_was_flagged 
import pay 

payment_was_successful.connect(pay.paypal_success) 
payment_was_flagged.connect(pay.paypal_flagged) 

我使用貝寶開發者IPN模擬器,並返回「IPN發送成功」,但代碼pay.paypal_successpay.paypal_flagged未被執行。

被填充paypal_ipn表,但是我注意到flag_info下,每一行都有:

Invalid form. (<ul class="errorlist"><li>payment_date<ul class="errorlist"> 
<li>Enter a valid date/time.</li></ul></li></ul>) 

我不知道這有什麼關係的信號不能正常工作。

回答

6

我遇到了同樣的問題。

顯然,IPN模擬器發送的日期格式與django-paypal軟件包接受的日期格式不同。

轉到paypal.standard.forms.py並添加PayPal發送的'新格式日期'。

PAYPAL_DATE_FORMAT = ("%H:%M:%S %b. %d, %Y PST", 
         "%H:%M:%S %b. %d, %Y PDT", 
         "%H:%M:%S %d %b %Y PST", # note this 
         "%H:%M:%S %d %b %Y PDT", # and that 
         "%H:%M:%S %b %d, %Y PST", 
         "%H:%M:%S %b %d, %Y PDT",) 

我不喜歡這個解決方案,因爲如果PayPal將來會更改日期字符串格式呢?

這實際上是Python的datetime對象的一個​​警告,它不知道如何輕鬆地將字符串輕鬆轉換爲實際時間對象。

但現在工作。

+0

感謝幫助了很多 – soField

+0

這工作謝謝! – amba88

+1

請注意:這實際上是IPN模擬器的一個錯誤!我對PayPal文檔缺乏一致性和混亂感到非常失望,他們確實無法閱讀,並且他們的測試工具被竊聽...... – caesarsol