我正在尝试让两个第三方应用程序相互交谈:Django-paypal 和 django-registration。付款成功后,PayPal 会向提供的 URL 发送 IPN 信号。我希望这个信号来验证使用 django-registration 注册的用户。
成功付款后,IPN 似乎不是由 paypal 沙箱发送的,但我不确定这只是我设置信号代码的方式有问题。
信号.py 被导入到init .py 中
import signals
我正在使用 ngrok 允许贝宝沙箱访问我的本地主机。
视图.py:
def payment(request):
"""
This is the view for the page a new user is redirected
to after registering (not activating) a new account.
"""
paypal_dict = {
"cmd": "_xclick-subscriptions",
"business": settings.PAYPAL_RECEIVER_EMAIL,
"a3": "7.99",
"p3": "1",
"t3": "M",
"src": "1",
"sra": "1",
"no_note": "1",
"item_name": "My Item",
"notify_url": "http://localhost:8000/accounts/register/account_activated/",
"return_url": "http://localhost:8000/",
"cancel_return": "http//www.example.com/cancel-location/",
}
form = PayPalPaymentsForm(initial=paypal_dict, button_type="subscribe")
context = {"form": form}
return render_to_response("registration/registration_complete.html", context)
签名.py:
from paypal.standard.models import ST_PP_COMPLETED
from paypal.standard.ipn.signals import valid_ipn_received, payment_was_flagged
from registration.models import RegistrationProfile
from registration.views import ActivationView
def payment_signal(sender, **kwargs):
ipn_object = sender
if ipn_object.payment_status == ST_PP_COMPLETED:
print "payment_status == ST_PP_COMPLETED"
"""
Here use django-registration to authenticate
the User
"""
activate_user(activation_key)
activation_key = ACTIVATED
#ActivationView.activate()
else:
print str(ipn_object.payment_status)
print "error"
valid_ipn_received.connect(payment_signal)
payment_was_flagged.connect(payment_signal)
print "SIGNALS MODULE IMPORTED"
网址.py:
url(r'^accounts/register/account_activated/$', include('paypal.standard.ipn.urls')),