【问题标题】:Stripe subscription web hook not adding to database条纹订阅网络挂钩未添加到数据库
【发布时间】:2021-03-11 07:57:37
【问题描述】:

我只是想在成功的 web hook 调用后将用户的条带订阅信息添加到 SQLlite db。然而,尽管每个条带仪表板的网络挂钩成功,但最终结果始终是“没有被存储”。有谁知道为什么以及我该怎么做?

@blueprint.route('/Dashboard') #change it to calendar retrieve
def test_api_request():
    user = User.query.filter_by(email=UserEmail).first()
    session['id'] = user.id

@blueprint.route("/stripe_webhook", methods=["POST"]) 
def stripe_webhook():
    payload = request.get_data(as_text=True)
    sig_header = request.headers.get("Stripe-Signature") #previous doc     
    event = None
    try:
        event = stripe.Webhook.construct_event(
            payload, sig_header, stripe_keys["endpoint_secret"] 
        )
    except ValueError as e:
        return "Invalid payload", 400
    except stripe.error.SignatureVerificationError as e:
        # Invalid signature
        return "Invalid signature", 400

    if event["type"] == "checkout.session.completed":
        stripeData = event["data"]["object"]      
        stripe_customer_id = stripeData['customer']
        stripe_subscription_id = stripeData['subscription']
        user = User.query.filter_by(id=str(session['id'])).first()
        user = User(stripeSubscripstionId= stripe_subscription_id, stripeCustomerId= stripe_customer_id)
        db.session.add(user)
        db.session.commit()
        return {}


    @blueprint.route("/success")
    def success():
    user = User.query.filter_by(id=str(session['id'])).first()
    if user.stripeSubscriptionId:
        return render_template("/General/success.html")
    return "didn't get stored"

【问题讨论】:

    标签: python sqlite flask stripe-payments webhooks


    【解决方案1】:

    在数据库操作中也添加一个try except

    不知道你是怎么得到stripe_subscription_idstripe_customer_id

    尝试将session 重命名为stripeData,然后尝试将子ID 和客户ID 与对象中的数据一起放入,例如stripeData['customerId'],因为您将条带数据分配给session 并执行db.session这是行不通的。

    【讨论】:

    • 抱歉,我忘了添加 stripe_subscription_idstripe_customer_id 变量。现在添加了。那是个很好的观点。不幸的是,尽管没有调用异常,但这并不是解决方案:(
    • 您正在从条带数据中设置会话,并且执行 db.session.add 会话对象将没有函数添加。将会话词从条带对象更改为其他内容。
    • 感谢您回来。我实际上确实尝试了您的建议(只是没有在 SO 的代码中更新)。现在更新了。尽管如此,如前所述,这并没有帮助:(
    • 可以分享stripe返回的对象吗?同时分享用户模型。
    • 感谢您回来。我不确定您所说的用户模型是什么意思。除了 sessionID 之外,我没有得到任何对象,否则我不会有问题。我假设您以前使用过 stripe,并且很想知道您如何以不同的方式构建它。
    猜你喜欢
    • 2012-09-26
    • 2019-04-28
    • 2020-08-17
    • 2016-03-29
    • 2016-06-07
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多