Oro*_*vid 4 node.js stripe-payments reactjs payment-method
我正在研究与 React Node.js 的条带集成
在无需试用的情况下创建订阅时,我没有遇到任何问题,并且所有用例都非常简单。
但是,我正在尝试创建免费试用版而不收集信用卡详细信息,稍后当试用期结束时,我想收集信用卡详细信息
服务器端:创建无付款方式的试用订阅:
const subscription = await stripe.subscriptions.create({
customer: customer.id,
items: [{ price: priceId }],
trial_end: expiredAt.unix(),
expand: ['latest_invoice.payment_intent'],
});
Run Code Online (Sandbox Code Playgroud)
客户端:稍后当试用期满时,我想收集信用卡详细信息( paymentMethod ),检查是否由于故障或 3ds 需要用户操作,并通过更新客户的默认 payment_method 来更新订阅:
const updateCustomerDefaultPaymentMethod = await stripe.customers.update(
customerId,
{
invoice_settings: {
default_payment_method: req.body.paymentMethodId,
},
}
);
Run Code Online (Sandbox Code Playgroud)
如何更新订阅以执行 paymentIntent 或向用户收费,并向客户端返回状态为“in_complete”的相同订阅对象,与创建没有试用期的订阅时相同?目前,在运行我的代码时,我不断收到 status='active',因为第一张发票的状态='paid',价格为'0$'。
小智 5
在免费试用的情况下,创建订阅不会导致初始付款,Stripe 会自动在后台为您创建一个SetupIntent 。此SetupIntent旨在收集客户的付款方式时使用。因此,在试用期间的任何时候,客户都需要返回到您的应用程序以输入他们的信用卡详细信息,然后您将使用 SetupIntent 保存这些详细信息:
设置付款方式并将其保存给客户后(作为发票的默认付款方式),它将用于在试用结束时支付订阅的第一张发票。试用后的第一笔付款被视为会话外付款(最后一个常见问题解答),因此如果付款失败,Stripe 将尝试使用通常的智能重试和催款功能重新收取付款。
简而言之,您需要使用创建的(并附加到订阅)的SetupIntent 来保存用户的付款信息。
| 归档时间: |
|
| 查看次数: |
1549 次 |
| 最近记录: |