Stripe Checkout 会话中的试用期

Posted

技术标签:

【中文标题】Stripe Checkout 会话中的试用期【英文标题】:trial period in Checkout session in Stripe 【发布时间】:2021-02-20 05:44:48 【问题描述】:

我想创建用于条带结帐会话的试用期:

session = stripe.checkout.Session.create(
            customer=customer.stripe_id,
            payment_method_types=['card'],
            line_items=[
                'price': "price_1HjynjHdAhQwSUAK",
                'quantity': 1,
                'tax_rates': ["txr_1Hkntg4yXtzmX", ],

            ,
            mode='payment',
            allow_promotion_codes=True,
            success_url=request.build_absolute_uri(reverse('thanks')) + '?session_id=CHECKOUT_SESSION_ID',
            cancel_url=request.build_absolute_uri(reverse('index_payment')),
        )

在tripe.Subscription.create 中看起来我们只需要添加 trial_end=1605387163,但它在结帐会话中不起作用。尽管我很确定它是可行的,但我似乎找不到这样做的方法,如demo 所示:

如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

【参考方案1】:

trial_end 的想法是正确的,它只需要成为 subscription_data 下的子参数即可。

// other parameters
subscription_data: 
    trial_end=1605387163

https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-subscription_data-trial_end

【讨论】:

感谢它有效。但是看起来发票中的所有产品都是相同的试用版。换句话说,如果有 3 个产品需要支付,并且每个产品都有不同的试用天数,我们不能为它们分配 3 个不同的试用天数。是这样吗? 这里的问题是:***.com/questions/64745642/…【参考方案2】:

Brendan 的回答为我指明了正确的方向,对于 php,添加 trial_end 的语法例如是:

$session = \Stripe\Checkout\Session::create([
      .......
      Your Other parameters
      .......
      'subscription_data' => ['trial_end' => 1624110173],
        
    ]);

其中 1624110173 是免费期结束的 unix 时间戳。有关结帐流程和代码的一般说明,请参阅此 Stripe 文档:

Stripe Documents

【讨论】:

以上是关于Stripe Checkout 会话中的试用期的主要内容,如果未能解决你的问题,请参考以下文章

Stripe Checkout 会话的有效期是多久?

Stripe:如何更新通过订阅结帐会话创建的发票?

无法将价格传递给 Stripe Checkout nodejs

如何在 Stripe Checkout 中添加增值税?

获取与 Stripe 结帐会话关联的费用 ID

Stripe - 检索结帐会话的 line_items