【问题标题】:How to pass information to the stripe.checkout.sessions.create() function如何将信息传递给 stripe.checkout.sessions.create() 函数
【发布时间】:2021-09-04 10:47:26
【问题描述】:

我想做什么: 我使用firebase,因此一旦有人购买了条纹产品,我想将其写在购买它的用户的文档上。 我想为此使用条纹网络钩子。这个 webhook 看起来像这样:

它本质上是在付款通过后立即向 firebase 功能发出 https 请求。它触发了一个 https 函数,该函数应该写入用户已购买产品的文档。但要做到这一点,webhook 需要包含购买产品的用户的 firebase 用户 uid。

但要将用户 uid 传递给 webhook,我需要将其传递给如下所示的 stripe.checkout.sessions.create() 函数:

    exports.createCheckoutSession = functions.https.onCall(async(data, context) => {
    const YOUR_DOMAIN = 'http://localhost:4242';
    const session = await stripe.checkout.sessions.create({
        payment_method_types: ['card'],
        line_items: [{
            price_data: {
                currency: 'usd',
                product_data: {
                    name: 'Stubborn Attachments',
                    images: ['https://i.imgur.com/EHyR2nP.png'],
                },
                unit_amount: 2000,
            },
            quantity: 1,
        }, ],
        mode: 'payment',
        success_url: `${YOUR_DOMAIN}/success.html`,
        cancel_url: `${YOUR_DOMAIN}/cancel.html`,
    });
    console.log(session.id)
    return session.id
})

(用户调用此云函数以返回结帐会话) 但是我怎样才能将用户 uid (context.user.uid) 传递进去,以便稍后通过 webhook 发送它。

我希望很清楚我想做什么,如果不是请询问。感谢您的宝贵时间。

【问题讨论】:

    标签: javascript firebase google-cloud-functions stripe-payments


    【解决方案1】:

    您可以像这样在条带结帐会话的元数据中添加用户的 Firebase UID 或任何其他信息:

    const session = await stripe.checkout.sessions.create({
            payment_method_types: ['card'],
            // line items and other stuff
            metadata: {firebaseUID: uid, product_id: "ProductID"},
        });
    

    您可以在结帐会话完成的 webhook 或任何成功的 webhook 中阅读它们。

    【讨论】:

    • 我收到此错误:stripe.error.InvalidRequestError: Request req_Gqmo1HoMRF7GgE: Invalid object 添加具有此值的行元数据时:{'items': {'id': 1, 'quantity': 2}}
    • @rever 我不确定您要添加什么对象。我建议提出一个新问题,因为这似乎是一个不同的问题。
    • 好的,我解决了使用其中只有简单数据的对象,嵌套对象不起作用。我的目的是传递购买的物品的 id 来更新我的数据库,所以我会像这样扁平化数组:{'items':2, 'id0':1, 'id1':2}
    • @rever 刚刚在documentation 中发现了这一点。元数据只能有键值对。此外,您最多可以指定 50 个键,键名最长为 40 个字符,值最长为 500 个字符。
    猜你喜欢
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2013-11-09
    • 2013-11-06
    • 2013-05-21
    • 2016-01-01
    相关资源
    最近更新 更多