【问题标题】:Cannot update credit card using session无法使用会话更新信用卡
【发布时间】: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: 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`
    };

如上所述here

同样的问题

【问题讨论】:

  • 这个测试是否存在于我们可以尝试复制问题的地方?似乎 Checkout 正在等待客户,但没有通过,但它不应该要求这样做。
  • @w1zeman1p 不幸的是,我现在没有任何测试环境供您使用。我在当地工作。您认为我的会话选项正确吗?我认为我不应该像您所说的那样向客户提供服务。
  • 那里的 Checkout 实现实际上已经很老了:/
  • 看看这个 repo:github.com/stripe-samples/developer-office-hours/tree/master/… 和这个相关视频:youtube.com/… 虽然不在节点中,但你会了解这个过程。

标签: javascript node.js stripe-payments


【解决方案1】:

我能够使用以下会话选项解决此问题:

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);

基本上为了更新信用卡而不收取任何费用,您必须使用metadata 对象指定customer_id 参数,该对象是setup_intent_data 的一部分。

关于这一点的重要说明是会话mode,实际上它的值必须是setup,希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2016-07-04
    相关资源
    最近更新 更多