未收到django-paypal IPN信号

amb*_*a88 1 django paypal django-paypal paypal-ipn

在models.py的底部,我有:

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)
Run Code Online (Sandbox Code Playgroud)

我正在使用Paypal Developer IPN模拟器并返回"IPN已成功发送",但代码中pay.paypal_success并且pay.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>)
Run Code Online (Sandbox Code Playgroud)

我不知道这是否与信号不起作用有关.

Ami*_*dor 7

我遇到了同样的问题.

显然,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",)
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个解决方案,因为如果PayPal将来更改日期字符串格式怎么办?

这实际上是Python datetime对象的一个警告,它不知道如何轻松地将字符串轻松转换为实际时间对象.

但这暂时有效.