繁体   English   中英

无法使用会话更新信用卡

[英]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: E​​rror: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM