【发布时间】:2020-01-06 16:52:24
【问题描述】:
我正在尝试使用StripeCheckout 更新credit-card,我看到另一个用户提出了类似的问题here。
问题是我无法在不传递任何数量的情况下复制会话对象,我做到了:
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,打开如下窗口:
所以这似乎很有效,但是当我点击“Salva carta”保存卡片时,我得到:
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`
};
如上所述here
同样的问题
【问题讨论】:
-
这个测试是否存在于我们可以尝试复制问题的地方?似乎 Checkout 正在等待客户,但没有通过,但它不应该要求这样做。
-
@w1zeman1p 不幸的是,我现在没有任何测试环境供您使用。我在当地工作。您认为我的会话选项正确吗?我认为我不应该像您所说的那样向客户提供服务。
-
那里的 Checkout 实现实际上已经很老了:/
-
看看这个 repo:github.com/stripe-samples/developer-office-hours/tree/master/… 和这个相关视频:youtube.com/… 虽然不在节点中,但你会了解这个过程。
标签: javascript node.js stripe-payments