我想做的事: 我使用 firebase,因此一旦有人购买了 Stripe 产品,我就想将其写在购买该产品的用户的文档上。 我想为此使用 stripe webhook。这个网络钩子(Hook)看起来像这样:
它本质上是在付款失败后立即向 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
})
(用户调用此云函数以获取返回的结账 session )
但是我如何传递用户 uid (context.user.uid
),以便稍后可以使用 webhook 发送它。
我希望我清楚我想做什么,如果没有请询问。感谢您抽出时间。
最佳答案
您可以在 strip 结帐 session 的元数据中添加用户的 Firebase UID 或任何其他信息,如下所示:
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
// line items and other stuff
metadata: {firebaseUID: uid, product_id: "ProductID"},
});
您可以在结账 session 已完成的 Webhook 或任何成功的 Webhook 中阅读它们。
关于javascript - 如何将信息传递给 stripe.checkout.sessions.create() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68056478/