【发布时间】:2021-09-19 08:34:36
【问题描述】:
我有一个使用 nodejs 和 reactjs 让用户订阅我的网站的流程。 因此,当用户登录时,他可以看到一些包。 当用户选择一个包并输入卡详细信息时,我会执行以下操作:
1 - 根据用户详细信息(姓名、电子邮件等,自用户登录后获取)创建新客户
2 - 根据选择的 price_id 为新创建的客户创建订阅
3 - 在前端收集卡号/cvc/到期日期:
const cardElement = elements.getElement(CardElement);
4 - 从前端调用条带化:
const { error, paymentIntent } = await stripe.confirmCardPayment(clientSecret, {
payment_method: {
card: cardElement,
billing_details: {
name: name,
}
}
});
我不确定这是否是最好的流程。但是,它正在工作。 我还管理更新订阅并取消它。 但是,我很难更改信用卡详细信息。 我从文档中了解到,我应该使用与创建卡支付时相同的调用。 所以我再次收集信用卡号码并再次调用相同的功能:
const { error, paymentIntent } = await stripe.confirmCardPayment(clientSecret, {
payment_method: {
card: cardElement,
billing_details: {
name: name,
}
}
});
但是,调用是针对:
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"
我应该使用其他东西来更新信用卡信息吗?还是我叫错了?
【问题讨论】:
标签: node.js reactjs stripe-payments