Django stripe Integration在付款后给予403 Forbidden



下面是我在Django,中的条纹设置

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 ($20.00)"
            data-image="/128x128.png"
            data-locale="auto">
          </script>
    </form>
{% endblock %}

我使用的是stripe提供的默认checkout.js。一旦付款覆盖弹出,我输入测试详细信息。接下来,几秒钟后,它用Error 403 Forbidden CSRF verification failed. Request aborted重定向到/charge

我该如何解决此问题?我只想使用stripe设置一个简单的测试网关。

请在视图顶部添加@csrf_exempt,或尝试在调用url的末尾添加/。

    @csrf_exempt
    def view(request):
        return httpresponse('done')

要获得快速而肮脏的修复,只需从settings.py中的MIDDLEWARE_CLASSES条目中删除'django.middleware.csrf.CsrfViewMiddleware'即可。

请参阅https://docs.djangoproject.com/en/1.9/ref/csrf/了解更多信息。

最新更新