Я пытаюсь заставить два сторонних приложения разговаривать друг с другом: Django-paypal и django-registration. После успешной оплаты PayPal отправляет IPN-сигнал на предоставленный URL-адрес. Я хочу, чтобы этот сигнал аутентифицировал пользователя, зарегистрированного в django-registration.PayPal IPN сигналы для регистрации пользователя
После успешной оплаты выяснилось, что IPN не отправляется в виде песочницы paypal, но я не уверен, что это просто неверно с тем, как я установил свой код.
signals.py импортируется в инициализации .py с
import signals
И я использую ngrok, чтобы позволить PayPal песочнице, чтобы получить доступ к моей Localhost.
views.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)
signlas.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"
urls.py:
url(r'^accounts/register/account_activated/$', include('paypal.standard.ipn.urls')),
Вы можете быть заинтересованы в статье я писал о [как проверить PayPal IPN] (https://www.angelleye.com/test-paypal-ipn/). Если вы выполните эти шаги, я уверен, что вы найдете свою проблему. –