Django-stripe 集成在付款后给出 403 Forbidden
Django-stripe Integration give 403 Forbidden after payment
下面是我在 Django 中设置的 stripe,
view.py
def charge(request):
if request.method == 'POST' :
resp = " Payment Successful !"
try:
token = request.POST['stripeToken']
charge = stripe.Charge.create(
amount=2000, # amount in cents, again
currency="usd",
source=token,
description="Example charge"
)
print >>sys.stderr, 'Success Logger !'
except stripe.error.CardError as e:
resp = str(e)
urls.py
urlpatterns = patterns('',
url(r'^$', views.home, name='home'),
url(r'^sign_in$', views.sign_in, name='sign_in'),
url(r'^sign_out$', views.sign_out, name='sign_out'),
url(r'^register$', views.register, name='register'),
url(r'^edit$', views.edit, name='edit'),
url(r'^charge$', views.charge, name='charge'),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
user.html
{% extends "page.html" %}
{% block main %}
<div class="row">
<div class="span6 columns">
</div>
</div>
<p>Welcome {{ user.name }}.</p>
<p>Your credit card ends with {{ user.last_4_digits }} (<a href="{% url edit %}">change</a>)</p>
<form action="/charge" method="POST" id="payment_form">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_xFLF8rLaykv0tiGXFkhMj5XF"
data-amount="2000"
data-name="Vevanesca"
data-description="2 widgets (.00)"
data-image="/128x128.png"
data-locale="auto">
</script>
</form>
{% endblock %}
我使用的是 stripe 提供的默认值 checkout.js。付款叠加层弹出后,我输入测试详细信息。接下来,几秒钟后它使用 Error 403 Forbidden CSRF verification failed. Request aborted
重定向到 /charge
。
我该如何解决这个问题?我只想使用 stripe 设置一个简单的测试网关。
要快速修复,只需从 settings.py
中的 MIDDLEWARE_CLASSES
条目中删除 'django.middleware.csrf.CsrfViewMiddleware'
。
有关详细信息,请参阅 https://docs.djangoproject.com/en/1.9/ref/csrf/。
请在视图顶部添加@csrf_exempt或尝试在调用末尾添加/url。
@csrf_exempt
def view(request):
return httpresponse('done')
下面是我在 Django 中设置的 stripe,
view.py
def charge(request):
if request.method == 'POST' :
resp = " Payment Successful !"
try:
token = request.POST['stripeToken']
charge = stripe.Charge.create(
amount=2000, # amount in cents, again
currency="usd",
source=token,
description="Example charge"
)
print >>sys.stderr, 'Success Logger !'
except stripe.error.CardError as e:
resp = str(e)
urls.py
urlpatterns = patterns('',
url(r'^$', views.home, name='home'),
url(r'^sign_in$', views.sign_in, name='sign_in'),
url(r'^sign_out$', views.sign_out, name='sign_out'),
url(r'^register$', views.register, name='register'),
url(r'^edit$', views.edit, name='edit'),
url(r'^charge$', views.charge, name='charge'),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
user.html
{% extends "page.html" %}
{% block main %}
<div class="row">
<div class="span6 columns">
</div>
</div>
<p>Welcome {{ user.name }}.</p>
<p>Your credit card ends with {{ user.last_4_digits }} (<a href="{% url edit %}">change</a>)</p>
<form action="/charge" method="POST" id="payment_form">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_xFLF8rLaykv0tiGXFkhMj5XF"
data-amount="2000"
data-name="Vevanesca"
data-description="2 widgets (.00)"
data-image="/128x128.png"
data-locale="auto">
</script>
</form>
{% endblock %}
我使用的是 stripe 提供的默认值 checkout.js。付款叠加层弹出后,我输入测试详细信息。接下来,几秒钟后它使用 Error 403 Forbidden CSRF verification failed. Request aborted
重定向到 /charge
。
我该如何解决这个问题?我只想使用 stripe 设置一个简单的测试网关。
要快速修复,只需从 settings.py
中的 MIDDLEWARE_CLASSES
条目中删除 'django.middleware.csrf.CsrfViewMiddleware'
。
有关详细信息,请参阅 https://docs.djangoproject.com/en/1.9/ref/csrf/。
请在视图顶部添加@csrf_exempt或尝试在调用末尾添加/url。
@csrf_exempt
def view(request):
return httpresponse('done')