用于处理Stripe请求的烧瓶视图找不到stripeToken

呵呵

我正在尝试将Stripe与Flask集成,但是页面加载后会出现以下错误。

The browser (or proxy) sent a request that this server could not understand.

为什么会出现此错误,我该如何解决?

@store.route('/payment',methods=['GET', 'POST'])
def payment():
    stripe.api_key = "test_key"
    token = request.form['stripeToken']

    try:
        charge = stripe.Charge.create(
            amount=1000,
            currency="cad",
            source=token,
            description="Example charge"
        )
    except stripe.error.CardError, e:
        pass

    return render_template("payment_form.html")
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript">
    Stripe.setPublishableKey('test_key');

    jQuery(function($) {
        $('#payment-form').submit(function(event) {
            var $form = $(this);
            $form.find('button').prop('disabled', true);
            Stripe.card.createToken($form, stripeResponseHandler);
            return false;
        });
    });

    function stripeResponseHandler(status, response) {
        var $form = $('#payment-form');

        if (response.error) {
            $form.find('.payment-errors').text(response.error.message);
            $form.find('button').prop('disabled', false);
        } else {
            var token = response.id;
            $form.append($('<input type="hidden" name="stripeToken" />').val(token));
            $form.get(0).submit();
        }
    };
</script>
大卫主义

页面加载后立即失败的原因是因为加载页面是一个GET请求。request.form会根据POST要求填写,只有在您提交表格时才会出现。request.form是一种特殊的字典,它引发400错误而不是KeyError

仅在POST请求期间处理表单数据还请记住,之后进行重定向,POST以使浏览器不会停留在过时的表单数据上。

from flask import request, redirect, flash, render_template

stripe.api_key = 'test_key'

@store.route('/payment', methods=['GET', 'POST'])
def payment():
    if request.method == 'POST':
        token = request.form['stripeToken']

        try:
            charge = stripe.Charge.create(amount=1000, currency="cad", source=token, description="Example charge")
            return redirect(request.path)
        except stripe.error.CardError, e:
            flash('Error processing payment.', 'error')

    return render_template('payment_form.html')

如果在开发期间启用调试模式,您会发现调试应用错误会容易得多app.run('localhost', debug=True)当出现应用错误时,这将在浏览器中为您提供交互式回溯调试器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

找不到烧瓶路线

来自分类Dev

找不到针对Portlet请求的处理程序:模式“视图”,阶段“ RENDER_PHASE”

来自分类Dev

找不到用于记录程序请求的处理程序。packages.urllib3.connectionpool

来自分类Dev

找不到合适的URL请求处理程序?

来自分类Dev

找不到用于片段交易的视图?

来自分类Dev

找不到用于ShooksFragment的ID的视图

来自分类Dev

找不到用于处理意图动作的活动。

来自分类Dev

找不到用于处理Intent异常的活动

来自分类Dev

startActivityForResult:找不到用于处理Intent的活动

来自分类Dev

找不到python烧瓶404

来自分类Dev

FileNameController 在 Yii 1 中找不到请求的视图“创建”

来自分类Dev

找不到请求类型“ GET”的http处理程序

来自分类Dev

找不到请求类型“ GET”的http处理程序

来自分类Dev

处理“在DispatcherServlet中找不到HTTP请求的映射”情况

来自分类Dev

PHP/JS 处理请求失败,我找不到原因

来自分类Dev

处理片段列表视图时出错,找不到符号“列表”

来自分类Dev

ActivityNotFoundException:找不到用于处理Intent的活动(RECOGNIZE_SPEECH)

来自分类Dev

找不到烧瓶路径变量404

来自分类Dev

找不到GET请求

来自分类Dev

找不到名称“视图”

来自分类Dev

找不到视图目录

来自分类Dev

Django找不到视图

来自分类Dev

视图找不到字段

来自分类Dev

找不到库处理

来自分类Dev

Restlet:找不到请求的资源

来自分类Dev

找不到Laravel 5视图

来自分类Dev

找不到片段ID的视图

来自分类Dev

InvalidArgumentException-找不到视图

来自分类Dev

Grails 3.1.10找不到视图