I have written an IPN following the django-paypal IPN tutorial, however mine does not seem to work. It works no problem on the PayPal IPN Simulator, and I receive the IPN and the code executes, however when I try to do it in Sandbox mode, the payment goes through by no response.
Views:
from django.core.urlresolvers import reverse
from django.shortcuts import render
from paypal.standard.forms import PayPalPaymentsForm
def view_that_asks_for_money(request):
# What you want the button to do.
paypal_dict = {
"business": "receiver_email@example.com",
"amount": "100.00",
"item_name": "Product",
"invoice": "100",
"notify_url": "http://myip/paypal/",
"return_url": "https://www.example.com/your-return-location/",
"cancel_return": "https://www.example.com/your-cancel-location/",
"custom": "Upgrade all users!", # Custom command to correlate to some function later (optional)
}
# Create the instance.
form = PayPalPaymentsForm(initial=paypal_dict)
context = {"form": form}
return render(request, "payment.html", context)
from paypal.standard.models import ST_PP_COMPLETED
from paypal.standard.ipn.signals import valid_ipn_received
def show_me_the_money(sender, **kwargs):
ipn_obj = sender
category = Category(name="Got IPN")
category.save()
if ipn_obj.payment_status == ST_PP_COMPLETED:
category = Category(name="Good Buzz, complete")
category.save()
else:
category = Category(name="Bad Buzz, not complete")
category.save()
valid_ipn_received.connect(show_me_the_money)
invalid_ipn_received.connect(show_me_the_money)
URLS:
etc etc etc...
url(r'^paypal/', include('paypal.standard.ipn.urls')),
url(r'^test/$', views.view_that_asks_for_money, name='ask')
]
When I send my IPN to : http://myip/paypal/ it works but not through sandbox.