将付款方式分条添加到试用订阅中,稍后验证信用卡



我正在与react node.js 进行条带集成

虽然创建了一个没有试用版的订阅,但我没有任何问题,而且所有的用例都很简单。

但是,我正试图在不收集信用卡详细信息的情况下创建免费试用版,稍后试用期到期时,我想收集信用卡的详细信息

服务器端:创建无需付费的试用订阅方法:

const subscription = await stripe.subscriptions.create({
customer: customer.id,
items: [{ price: priceId }],
trial_end: expiredAt.unix(),
expand: ['latest_invoice.payment_intent'], 
});

ClientSide:稍后试用期到期时,我想收集信用卡详细信息(paymentMethod(,检查是否由于故障或3ds而需要用户操作,并通过更新客户的默认付款来更新订阅_方法:

const updateCustomerDefaultPaymentMethod = await stripe.customers.update(
customerId,
{
invoice_settings: {
default_payment_method: req.body.paymentMethodId,
},
}
);

如何更新订阅以执行paymentIntent或向用户收费,并将状态为"in_complete"的订阅对象返回到客户端,与创建没有trial_period的订阅时相同?目前,当运行我的代码时,我一直得到状态="活动",因为第一张发票的状态="援助",价格为"0美元"。

在免费试用的情况下,创建订阅不会导致初始付款,Stripe会自动为您创建一个SetupIntent。此SetupIntent旨在收集客户的付款方式时使用。因此,在试用期间的任何时候,客户都需要返回您的应用程序输入他们的信用卡详细信息,然后您将使用SetupIntent:保存这些信息

  • 订阅.pending_setup_content
  • 使用收集的卡详细信息确认SetupIntent

一旦设置了付款方式并将其保存给客户(作为发票的默认付款方式(,它将在试用结束时用于支付订阅的第一张发票。试用后的第一次付款被视为非会话付款(最后一个常见问题解答(,因此,如果付款失败,Stripe将尝试使用通常的智能重试和催款功能来收回付款。

简而言之,您需要使用创建的(并附加到订阅的(SetupIntent来保存用户的付款信息。

最新更新