django-paypal设置paypal网站专业(wpp)信号问题

时间:2010-09-25 07:05:47

标签: django django-signals django-paypal

我正在使用dcramer的django-paypal的分支,我已经成功地将其设置到现在。我试图将'paypal.pro.signals.payment_was_successful'连接到我写的一个监听器,但它多次发送信号,导致我的应用程序出错。我已经尝试将'dispatch_uid'添加到我的连接语句中,但它仍然多次发送...我做错了什么?我应该使用这个信号吗?

2 个答案:

答案 0 :(得分:2)

解决方法是在将句柄连接到信号时添加dispatch_uid关键字arg。有关示例,请参阅http://code.djangoproject.com/wiki/Signals#TipsandTroubleshooting

你的代码看起来像是:

payment_was_successful.connect(paypal_payment_processed, dispatch_uid="something-rational-here")

答案 1 :(得分:1)

目前非常简单明了。 我在我的应用程序的init.py中注册了信号

在init.py中

from paypal.pro.signals import payment_was_successful
from listeners import paypal_payment_processed

payment_was_successful.connect(paypal_payment_processed)

in listeners.py

def paypal_payment_processed(sender, **kwargs):
   print 'signal called'

然后我对django-paypal包装器的看法包含以下内容:

def apartment_store_lease_step_4_content(request, apartment_id, lease_obj):

item = {
    "amt": total,
    "custom": lease_obj.id ,
    "cancelurl" : "OMITTED",
    "returnurl" : "OMITTED"
}

ctx = {        
    "lease_purchase" : lease_obj,
    "contract" : contract
}
ctx.update(locals())


kw = {
    "item" : item,
    "payment_template" : "OMITTED",
    "confirm_template" : "OMITTED",
    "success_url" :  "OMITTED",
    "context": ctx
}

ppp = PayPalPro(**kw)
return ppp(request)