取消Stripe订阅

Bre*_*don 11 stripe-payments

假设用户想要取消他们的订阅,所以我发出如下命令:

stripe_subscription.delete(at_period_end: true)
Run Code Online (Sandbox Code Playgroud)

但是,在此期间结束之前,用户会改变主意.是否有我可以发出撤消预定取消的电话?

如果没有,实现这个的最佳方法是什么?我最好的猜测是这样的:

new_subscription = stripe_customer.subscriptions.create(plan: stripe_subscription.plan.id, trial_end: stripe_subscription.current_period_end)
stripe_subscription.delete()   # if permitted
self.stripe_subscription = new_subscription
save!
Run Code Online (Sandbox Code Playgroud)

我能做些什么吗?

koo*_*jah 12

如果订阅仍处于活动状态,您只需更新当前订阅并再次传递计划ID,它将恢复订阅.

在PHP中你会做:

$customer = Stripe_Customer::retrieve("cus_XXX");
$subscription = $customer->subscriptions->retrieve("sub_YYY");
$subscription->plan = "myPlanId";
$subscription->save();
Run Code Online (Sandbox Code Playgroud)

这会在更多的细节条纹的支持文章的一个位置.


sup*_*san 5

不确定接受的答案是否是旧答案,但对于最新版本的 Stripe,您必须这样做(在 PHP 中):

$sub->cancel_at_period_end = false;
return $sub->save();
Run Code Online (Sandbox Code Playgroud)

  • 在我的测试中,我看到订阅一直有效,直到达到续订日期。发生这种情况时,API 会检查这个名为“cancel_at_period_end”的标志是否设置为 true 或 false。如果为 true,则不会更新并取消它。OTOH 如果设置为 false 它会更新。所以 IMO 这只是一个标志,由 API 决定是取消还是续订,它只在实际续订时产生影响。 (2认同)