Stripe payments 取消取消条带订阅

Stripe payments 取消取消条带订阅,stripe-payments,Stripe Payments,假设一个用户想要取消他们的订阅,所以我发出如下命令: stripe_subscription.delete(at_period_end: true) new_subscription = stripe_customer.subscriptions.create(plan: stripe_subscription.plan.id, trial_end: stripe_subscription.current_period_end) stripe_subscription.delete() #

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

stripe_subscription.delete(at_period_end: true)
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!
后来,虽然在这段时间结束之前,用户改变了主意。我可以打电话取消预定的取消吗

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

stripe_subscription.delete(at_period_end: true)
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!

有什么更好的办法吗?

如果订阅仍然处于活动状态,您只需访问当前订阅并再次传递计划id,它就会恢复订阅

在PHP中,您可以执行以下操作:

$customer = Stripe_Customer::retrieve("cus_XXX");
$subscription = $customer->subscriptions->retrieve("sub_YYY");
$subscription->plan = "myPlanId";
$subscription->save();

Stripe的一篇支持文章详细介绍了这一点。

来自仪表板。转到订阅详细信息,然后单击右上角的编辑详细信息。应弹出一个无标题的模式“重新激活订阅”

此订阅设置为在时段结束时取消。你可以 重新激活订阅,订阅将照常继续

单击重新激活

编辑

在取消之前的剩余几天内,鼠标上似乎会出现以下操作:


请注意,它不会显示订阅是否已取消

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


根据Supersan的上述回答,此解决方案也适用于使用最新Stripe.net库21.4.1的C#

 var items = new [] { new SubscriptionItemUpdateOption() { Id = i.Id, PlanId = i.Plan.Id } }.ToList();
 var updateOptions = new SubscriptionUpdateOptions { Items = updatedItems, CancelAtPeriodEnd = false };
 await subscriptionService.UpdateAsync(externalSubscriptionId, updateOptions);

我刚刚将Id和计划Id设置为之前的任何值。如果您不使用多个计划订阅,则不确定这些是否是必需的。

链接的支持文章指出,这也可以通过Stripe仪表板完成,以防它是一次性的,不值得通过API实现。已将permalink更新为Stripe中关于重新激活取消的subs的小节:它出现了(基于我的测试和文档)如果订阅已到达其取消日期的末尾(意味着它要么立即被取消,要么取消日期已过)然后你不能重新激活它,你必须创建一个全新的链接。该链接非常有用。谢谢。值得一提的是,如果你想这样做,你可能不想对条带订阅运行
delete
方法来取消它,而是对条带订阅进行更新,并设置
cancel\u at\u period\u end
参数to
true
。似乎找不到此项。屏幕截图会有所帮助。这似乎并不存在。我添加了一个屏幕截图。请注意,它不会显示订阅是否已取消。在我看来,这意味着订阅将立即取消,而不是在期末取消。这是否准确?您是否可以更详细e关于您所指的“最新版本”的详细信息?在我的测试中,我看到订阅在达到续订日期之前一直处于活动状态。当这种情况发生时,API会检查此标志是否称为“在周期结束时取消”设置为true或false。如果为true,则不会续订并取消它。如果设置为false,则OTOH将续订。因此,在我看来,这只是一个标志,由API决定是取消还是续订,它只会在实际续订时生效。我决不会怀疑您,对于C#解决方案也是如此,我将单独添加它,但您会得到我的建议投票!实际上.C#是相同的().subscriptionService.Update(subscriptionId:ss.Id,newsubscriptionUpdateOptions{CancelAtPeriodEnd=false,});