Python 如何使用django paypal获得付款通知
我使用django paypal网站上加密按钮的文档设置了所有内容。我只是没有收到任何付款通知。我知道我一定是错过了什么或做了一些轻微的错误,但我没有得到任何张贴到任何有意见,除非在支付我点击返回到网站。在我继续之前,我需要得到付款通知。谢谢 以下是我的看法:Python 如何使用django paypal获得付款通知,python,paypal,paypal-ipn,paypal-sandbox,django-paypal,Python,Paypal,Paypal Ipn,Paypal Sandbox,Django Paypal,我使用django paypal网站上加密按钮的文档设置了所有内容。我只是没有收到任何付款通知。我知道我一定是错过了什么或做了一些轻微的错误,但我没有得到任何张贴到任何有意见,除非在支付我点击返回到网站。在我继续之前,我需要得到付款通知。谢谢 以下是我的看法: from django.http import HttpResponse from django.template import RequestContext, loader from django.shortcuts import re
from django.http import HttpResponse
from django.template import RequestContext, loader
from django.shortcuts import render, HttpResponseRedirect, render_to_response
from paypal.standard.forms import PayPalEncryptedPaymentsForm
from django.core.urlresolvers import reverse
import eccomerce.settings as settings
from datetime import datetime
from paypal.standard.models import ST_PP_COMPLETED
from django.views.decorators.csrf import csrf_exempt
from paypal.standard.ipn.signals import valid_ipn_received
def show_me_the_money(sender, **kwargs):
ipn_obj = sender
if ipn_obj.payment_status == ST_PP_COMPLETED:
# Undertake some action depending upon `ipn_obj`.
payment = True
else:
payment = False
valid_ipn_received.connect(show_me_the_money)
def index(request):
# What you want the button to do.
paypal_dict = {
"business": settings.PAYPAL_RECEIVER_EMAIL,
"amount": "0.01",
"currency_code": "GBP",
"item_name": "picture01",
"invoice": "unique-%s" % (str(datetime.now())),
"notify_url": "http://127.0.0.1:8000/notify/",
"return_url": "http://127.0.0.1:8000/return/",
"cancel_return": "http://127.0.0.1:8000/cancel/",
}
valid_ipn_received.connect(show_me_the_money)
# Create the instance.
form = PayPalEncryptedPaymentsForm(initial=paypal_dict)
context = {"form": form}
return render_to_response("eccomerce_webapp/index.html", context)
@csrf_exempt
def notify(request):
valid_ipn_received.connect(show_me_the_money)
context = {}
return render_to_response("eccomerce_webapp/notify.html", context)
@csrf_exempt
def cancel(request):
valid_ipn_received.connect(show_me_the_money)
context = {}
return render_to_response("eccomerce_webapp/cancel.html", context)
@csrf_exempt
def return_view(request):
valid_ipn_received.connect(show_me_the_money)
context = {}
return render_to_response("eccomerce_webapp/return.html", context)
以下是我的网址:
from django.conf.urls import patterns, include, url
from eccomerce_webapp import views
urlpatterns = patterns('',
url(r'^notify/$', views.notify, name='notify'),
url(r'^return/$', views.return_view, name='return'),
url(r'^cancel/$', views.cancel, name='cancel'),
url(r'^$', views.index, name='index'),
(r'^something/paypal/', include('paypal.standard.ipn.urls')),
)
PayPal的IPN不会回拨到您的本地URL: 查看他们的文档 PayPal建议使用直接提交给通知端点的表单来编写您自己的测试页面。这可能看起来像(从他们的文档中):
一旦你在某个地方的沙箱环境中启动了你的应用程序,你就可以开始使用IPN模拟器进行测试了
<form target="_new" method="post" action="{% url 'notify' %}">
<input type="hidden" name="SomePayPalVar" value="SomeValue1"/>
<input type="hidden" name="SomeOtherPPVar" value="SomeValue2"/>
<!-- code for other variables to be tested ... -->
<input type="submit"/>
</form>