gpt4 book ai didi

javascript - 使用 NodeJS 将卡添加到 Stripe 客户

转载 作者:行者123 更新时间:2023-12-02 20:54:44 24 4
gpt4 key购买 nike

我正在 NodeJS 应用程序中构建 addCard Controller ,以向现有的 stripe 客户添加卡。目前我让它与以下代码一起工作:

const user = await User.findById(req.params.user_id)

//Send error if user is not found
if(!user){
return next(new ErrorResponse('Resource not found', 404))
}
await Stripe.customers.retrieve(
user.stripe.customer_id,
async function(err, customer) {
if (err){
return next(new ErrorResponse(err.message, err.statusCode))
} else{
if(customer.sources.data.length > 0){
return next(new ErrorResponse('User already has a card on file', 403));
} else{
//If no card on file, create a new card for the user
await Stripe.customers.createSource(
user.stripe.customer_id,
{source: req.body.cardtok}, //card token generated by client
async function(err, card) {
if(err){
return next(new ErrorResponse(err.message, err.statusCode));
} else{
res.status(200).json({
success: true,
data: card
});
}
}
);

}
}
}
);

还有更好的办法吗?虽然我的代码确实按预期工作,但我无法避免认为有点困惑。我正在使用 Node、express 和 mongodb。

最佳答案

看起来你在这里混淆了异步/等待和回调;我认为你可以这样做:

const user = await User.findById(req.params.user_id);

//Send error if user is not found
if (!user) {
return next(new ErrorResponse("Resource not found", 404));
}

let customer;
try {
customer = await Stripe.customers.retrieve(user.stripe.customer_id);
} catch (err) {
return next(new ErrorResponse(err.message, err.statusCode));
}

if (customer.sources.data.length > 0) {
return next(new ErrorResponse("User already has a card on file", 403));
}

//If no card on file, create a new card for the user
let card;

try {
card = Stripe.customers.createSource(
user.stripe.customer_id,
{ source: req.body.cardtok } //card token generated by client
);
} catch (err) {
return next(new ErrorResponse(err.message, err.statusCode));
}

res.status(200).json({
success: true,
data: card,
});

关于javascript - 使用 NodeJS 将卡添加到 Stripe 客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61515094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com