在没有 webhook 的情况下,我如何知道 Stripe 试用订阅是否已结束?

How can I know if a Stripe trial subscription has ended without a webhook?

我正在创建一个 Stripe 客户和一个具有 7 天试用期的订阅:


    const stripeCustomer = await stripe.customers.create({
        email: req.body.email
    });

    await stripe.subscriptions.create({
        customer: stripeCustomer.id,
        items: [{
            price: process.env['STRIPE_PRICE_ID']
        }],
        trial_period_days: 7
    })

当我查看状态时,它显示为 trialing。试用结束后,如果我检索订阅,它会给出 active 的状态。但这并不准确,因为客户尚未支付订阅费用。

我想要的是一个状态,告诉我试用已经结束但客户尚未付款,这样我就可以在客户登录时将其引导至 Stripe 门户。我知道有一个网络钩子我可以听,但我不想在试验结束的那一刻担心它。相反,我想在客户下次登录时处理它。

您希望以 payment_behavior'default_incomplete' 开始订阅:https://stripe.com/docs/api/subscriptions/create#create_subscription-payment_behavior

这样订阅的状态将在试用结束后变为 incomplete,只有在支付了第一张发票后才会过渡到 active