我在如何组织代码方面遇到了问题,并且在过去 48 小时内无法弄清楚如何解决此问题。我的大脑基本上被卡住了,我想帮助如何找出解决方案。我在服务器端使用 expressjs,在前端使用 Svelte。
问题: 我可以创建客户、paymentMethods、paymentIntents 并将paymentMethod 附加到客户,将所述paymentMethod 设置为其客户的默认paymentMethod...等
要显示客户支付方法,我必须使用 Stripe.paymentMethods.list 返回一组卡片。卡对象不包含任何表明该卡是客户默认付款方式的字段。
存储默认支付方式的 default_payment_method 位于客户对象中。所以我需要获取客户对象,这就是我需要帮助的地方。我该如何解决这个问题,如何访问 Stripe.paymentMethods.list() 以获取卡片列表和 stripe.customer.retrieve() 以便我可以访问服务器句柄中的 defaultpaymentmethod 以便我可以返回所有这些信息到前面?
// get cards
stripe.paymentMethods.list({
customer: customer,
type: 'card'
}).then(cards => {
//I can return cards but not customer
return res.end(JSON.stringify({ cards: cards}));
}).catch(err => { console.log("err message :", err.message)});
});
// now get customer
stripe.customers.retrieve(
'cus_Ib01d7QtMdz2ez'
).then(customer=>{
// I can return customer but not cards
return res.end(JSON.stringify({customer : customer}));
});
// next step, send customer and cards to the frontst
return res.end(JSON.Stringfy({cards : cards; customer : customer}))
?????
如何返回“卡片和客户”对象,以便我可以向客户展示他/她的卡片以及哪一种是默认付款方式。如何使用 res.end(JSON.stringfy({})) 两个独立的函数,我可以将它们结合起来返回一个吗?
答案 0 :(得分:1)
看起来您已经完成了 80% 的工作。您绝对可以返回这两个对象,但我可能建议只返回您需要的特定信息位。不要在 .then()
块中响应,而是使用 async/await
来获得两个响应。
const cards = await stripe.paymentMethods.list({
customer: 'cus_123',
type: 'card'
})
const customer = stripe.customers.retrieve(
'cus_123'
)
return res.send(JSON.Stringify({cards : cards, customer : customer}))
// or, send json directly
// return res.json({cards : cards, customer : customer})
(另外,请注意我用逗号 ;
替换了分号 ,
并更正了错字):
return res.end(JSON.String**i**fy({cards : cards**,** customer : customer}))