如何将信息传递给 stripe.checkout.sessions.create() 函数

How to pass information to the stripe.checkout.sessions.create() function

我想做的事情: 我使用 firebase,所以只要有人通过 stripe 购买产品,我就想把它写在购买它的用户的文档上。 我想为此使用条纹 webhook。这个 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 发送它。

我希望清楚我想做什么,如果不清楚请询问。谢谢你的时间。

您可以在条带结账会话的元数据中添加用户的 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 中阅读它们。