Stripe API 订阅

Posted

技术标签:

【中文标题】Stripe API 订阅【英文标题】:Stripe API subscriptions 【发布时间】:2017-07-03 05:42:21 【问题描述】:

我在使用新计划更新订阅时遇到了一些困难。 我正在尝试做的是以下内容:

检查订阅是否仍处于试用模式。获取 trial_end 时间戳

    如果 trial_end 尚未发生。创建新计划。为客户订阅新计划。不要按比例分配任何东西。携带新计划的 trial_end。 (换句话说,在试用期结束之前不要向客户收费。)

    如果 trial_end 已经通过,则创建新计划,将客户转入新计划。按比例分配新计划。携带下一个结算日期。 (再次表示,不要立即向客户收费,而是将按比例分配的金额添加到下一张发票中)

这是我目前的代码:

//CREATE NEW PLAN
$plan = \Stripe\Plan::create(array(
      "id" => $usremail.'_'.time(),
      "name" => $usremail.'-'.time(),
      "currency" => "usd",
      "amount" => $totalamount,
      "interval" => "month",
    ));

$planid = $plan->id;
$proration_date = time();

//UPDATE SUBSCRIPTION
$subscription = \Stripe\Subscription::retrieve($subid);
$subscription->plan = $planid;
$subscription->proration_date = $proration_date;
$subscription->save();

当我这样做时,如果客户处于试用订阅状态并注册了新计划,订阅就会生效,并且会立即向客户收取新计划的金额。

我确信这是一件容易的事,只是想不通。 非常感谢任何帮助。

T

【问题讨论】:

【参考方案1】:

您需要保留之前订阅中的 trial_end 日期,并将其包含在您正在进行的更新调用中。

【讨论】:

thx @floatingLomas 我现在让那部分工作了。如果试用期已经结束怎么办?我也需要携带账单日期吗?或者条纹是否通过我上面发布的更新来解决这个问题?另外,他们会将按比例添加到下一个计费日期吗? 如果试用已结束,您可以忽略trial_end 值。如果您按比例分配,最终的结算日期将与您升级/降级的日期相同。 这是我目前所拥有的:$planid = $plan->id; $proration_date = time(); $subscription = \Stripe\Subscription::retrieve($subid); $trial_end = $subscription->trial_end; $subscription->plan = $planid; if($trial_end<time()) $subscription->proration_date = $proration_date; else $subscription->trial_end = $trial_end; //$subscription->proration_date = $proration_date; $subscription->trial_end = $trial_end; $subscription->save(); 我能够确认,在试用期间,携带 trial_end 可以正常工作。仍在等待试用期结束后是否按比例分配到下一个原始计费日期。 我唯一担心的是我不希望立即按比例收取费用

以上是关于Stripe API 订阅的主要内容,如果未能解决你的问题,请参考以下文章

Stripe API 订阅

如何取消 Stripe 计划中的所有订阅?

Stripe:在网络上使用 Apple Pay 进行订阅

带有订阅和试用期的条纹支付元素

Stripe:更新订阅还是取消并创建新订阅?

更新客户的 Stripe 订阅以按比例分配订阅费用的金额(部分金额)