大家好,我是Stripe的新手,所以我有一个关于如何通过Firebase云功能创建Stripe客户的问题。我已经阅读了Stripe标准集成和一些教程。 This example teaches you how to set up the firebase cloud function.问题在于该示例在处理费用或输入金额时就创建了客户。 Stripe文档说,可以创建没有付款信息的客户用户。所以我的想法是,每当我为Firebase创建用户时,我都会触发云功能来同时创建条带化客户。谁能教我如何正确执行此操作,并且还可以向我展示如何更新绑定到该客户的付款信息。非常感谢。
答案 0 :(得分:0)
这实际上是一个分为两部分的问题,但是我认为这比您想象的要容易得多。这是有关如何解决打字稿中问题的一些指导。
创建客户
要创建客户,请通过create-auth-trigger执行以下操作:
export const syncUserToStripe = functions.auth.user().onCreate(async (data, context) =>
const stripe = new Stripe(<stripe-token>); // Initialize the stripe SDK
const stripeCustomer = await stripe.customers.create({
email: data.email
}); // Now you have the stripe customer. Maybe you would like to save the stripeCustomer Id to database/firestore
console.log(`Done syncing firestore user with id: ${data.uid} to Stripe. The stripe id is ${stripeCustomer.id}`);
);
更新付款信息
更新付款是两步走的火箭。首先,您需要从客户端收集数据条令牌。这很容易通过条纹上的checkout.js
之类的东西来获得(让我们安全地收集信用卡)。实际的实现很容易,但是根据您的前端框架而有所不同。重要的是,一旦有了令牌,就可以在后端更新付款信息,即云https函数(当您拥有条带令牌时调用此函数)。代码的重要部分如下所示:
export async function updateStripePayment(req: Request, res: Response): Promise<any> {
const stripe = new Stripe(<stripe-token>); // Initialize the stripe SDK
// Extract the stripe token from the header
const stripeToken = req.header('StripeToken');
// You also need to get the stripe customer id. Here I will get it from the header, but maybe it makes more sense for you to read it from firestore/realtime db.
const stripeCustomerId = req.header('stripeCustomerId');
// Now you can create a new payment source
const newSource = await stripeAPI.customers.createSource(stripeCustomerId, {source: stripeToken});
// And you can now optionally set it as default
await stripeAPI.customers.update(stripeCustomerId, {default_source: newSource.id});
res.status(200).json(`Sucessfully updated stripe payment info`);
}
一般注意事项
try catch
,以捕获意外错误