Я создаю свой контроллер addCard в своем приложении NodeJS, чтобы добавить карту существующему клиенту полосы. В настоящее время он работает со следующим кодом:
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.