微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在条带中更新信用卡付款

如何解决如何在条带中更新信用卡付款

我有一个使用 nodejs 和 reactjs 的流程,让用户订阅我的网站。 所以当用户登录时,他可以看到一些包。 当用户选择一个包并输入卡详细信息时,我执行以下操作:

1 - 根据用户详细信息(姓名、电子邮件等,自用户登录获取)创建新客户

2 - 根据选择的 price_id 为新创建的客户创建订阅

3 - 在前端收集卡号/cvc/到期日期:

const cardElement = elements.getElement(CardElement);

4 - 从前端调用 Stripe:

const { error,paymentIntent } = await stripe.confirmCardPayment(clientSecret,{
    payment_method: {
        card: cardElement,billing_details: {
            name: name,}
    }
}); 

我不确定这是否是最佳流程。但是,它正在起作用。 我还设法更新订阅并取消订阅。 但是,我很难更改信用卡详细信息。 我从文档中了解到,我应该使用与创建卡付款时相同的调用。 所以我再次收集信用卡号并再次调用相同的函数

const { error,}
    }
}); 

但是,调用是为了:

https://api.stripe.com/v1/payment_intents/pi_XXXX/confirm        

并返回带有此信息的 400:

type: "invalid_request_error",code: "payment_intent_unexpected_state",doc_url: "https://stripe.com/docs/error-codes/payment-intent-unexpected-state"

我应该使用其他东西来更新信用卡信息吗?还是我调用方式不对?

解决方法

您调用 confirmCardPayment() 的初始流程是正确的,这也是 Stripe 文档中推荐的:https://stripe.com/docs/payments/accept-a-payment?platform=web&ui=elements

很难更改信用卡详细信息。我从文档中了解到,我应该使用与创建卡付款时相同的调用。

要仅收集卡详细信息并创建 PaymentMethod,您应该从 Stripe.js 调用 createPaymentMethod() [0]。这会将客户的卡转换为像 pm_123 这样的 PaymentMethod。

然后您将该 PaymentMethod 发送到您的后端服务器,在那里(使用您的服务器端 Stripe API 库,如 stripe-node)您将它附加到 Stripe 客户 [1] 并更新为客户的默认 PaymentMethod定期付款 [2]。

[0] https://stripe.com/docs/js/payment_methods/create_payment_method

[1] https://stripe.com/docs/api/payment_methods/attach

[2] https://stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。