django paypal PDT的实施可以';我不能接收信号

django paypal PDT的实施可以';我不能接收信号,django,django-paypal,Django,Django Paypal,我正在尝试通过订阅使用PDT实现django paypal(git的dcramers版本) 它工作正常(意味着请求并应答返回url),但不会触发信号(放入models.py)。我使用以下信号,连接到两个不同的功能 从paypal.standard.pdt.signals导入pdt\u成功,pdt\u失败 我在浏览我的访问日志时注意到,我确实收到了paypal的POST请求,但被拒绝了 “POST/一个模糊的字符串/pdt/HTTP/1.0”401401“--” 我试图修改/paypal/stan

我正在尝试通过订阅使用PDT实现django paypal(git的dcramers版本)

它工作正常(意味着请求并应答
返回url
),但不会触发信号(放入models.py)。我使用以下信号,连接到两个不同的功能

从paypal.standard.pdt.signals导入pdt\u成功,pdt\u失败

我在浏览我的访问日志时注意到,我确实收到了paypal的POST请求,但被拒绝了

“POST/一个模糊的字符串/pdt/HTTP/1.0”401401“--”

我试图修改
/paypal/standard/pdt/views.py
以接受POST请求,但仍然收到401错误。我认为这就是信号没有被触发的原因

这件事让我很难过。任何帮助都将不胜感激

PS:我正在使用沙盒帐户

编辑这些是我在
conf.py

POSTBACK_ENDPOINT = "https://www.paypal.com/cgi-bin/webscr"
SANDBOX_POSTBACK_ENDPOINT = "https://www.sandbox.paypal.com/cgi-bin/webscr"

您是对的,这就是为什么没有调用信号的原因,因为如果模型的验证成功,信号将在视图的最末端发送

您的解决方案确实是错误的,如果您选择使用PDN,Paypal肯定会向您的应用程序url发送带有事务ID的GET请求

我真的建议你检查你的设置(在贝宝帐户上),因为你可能正在使用IPN,它使用POST请求

另一个可能的原因是,在您收到来自paypal的GET请求后,您的应用程序将POST数据发送到您的应用程序,而不是发送到paypal回发端点。(https://github.com/johnboxall/django-paypal/blob/master/standard/pdt/models.py#L47)


我会查看访问日志,看看POST请求是否在GET请求之后(对于相同的url),如果是,我会检查SANDBOX\u POSTBACK\u端点和POSTBACK\u端点设置的值。

非常感谢。你说的PDN是什么意思?是的,过去我曾尝试建立IPN。我是否应该避免使用PDT解决方案,并尝试只使用IPN?你的意见是什么?我觉得很多开发者出于某种原因更喜欢PDT而不是IPN。我将检查我的paypal设置并在此处报告。我检查了我的paypal设置,IPN已关闭。我还注意到,在PDT部分(我已选择使用PDT并获得我的PDT令牌)上显示:“paypal将发布与交易相关的令牌”,再次感谢。我现在不在我的工作电脑上,但我不必检查访问日志。我清楚地记得是的POST请求在GET请求之后。这也让我感到困惑。我将尽快检查我的设置并报告。我已转到ipn。我还是拿到了401。所以我的问题要么在于paypal设置,要么在于apache设置。有什么想法吗?