[英]Cannot update credit card using session
我正在尝试使用StripeCheckout
更新credit-card
,我看到另一个用户在这里提出了类似的问题。
问题是我无法在不传递任何数量的情况下复制会话对象,我做到了:
const domainURL = process.env.APP_DOMAIN;
let opts = {
payment_method_types: ["card"],
mode: 'setup',
success_url: `${domainURL}/pay/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${domainURL}/pay/cancel`
};
// Make session
let session = await stripe.checkout.sessions.create(opts);
let url = `${domainURL}/pay/checkout-session?sessionId=${session.id}`;
return url;
上面的代码生成了Stripe
会话的 url,并打开了以下窗口:
所以这似乎显然有效,但是当我点击“萨尔瓦卡塔”保存卡片时,我得到:
UnhandledPromiseRejectionWarning: Error: Stripe: Argument "id" must be a string, but got: null (on API request to
GET /customers/{id}
)
我也试过:
let opts = {
payment_method_types: ["card"],
mode: 'setup',
setup_intent_data: {
metadata: {
'customer_id': 'customer id',
}
},
success_url: `${domainURL}/pay/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${domainURL}/pay/cancel`
};
描述在这里
但同样的问题
我能够使用以下会话选项解决此问题:
let opts = {
payment_method_types: ["card"],
mode: 'setup',
setup_intent_data: {
metadata: {
'customer_id': customerData.stripe_id,
}
},
success_url: `${domainURL}/pay/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${domainURL}/pay/cancel`
};
// Create session
let session = await stripe.checkout.sessions.create(opts);
本质上,为了更新信用卡而不收取任何费用,您必须使用作为setup_intent_data
一部分的metadata
对象指定customer_id
参数。
一个重要的注意事项是会话mode
,实际上必须setup
的值,希望这会对某人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.