如何解决如何在条带中更新信用卡付款
我有一个使用 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 举报,一经查实,本站将立刻删除。