PHP中使用Stripe API在指定日期取消订阅的技术咨询
在PHP中使用Stripe API指定日期终止客户订阅
嘿,很高兴能帮你梳理这个问题!你已经了解了两种基础的订阅取消方式,那咱们直接切入指定日期终止订阅的实现方案👇
基础取消方式回顾(你已掌握的)
先快速确认下你提到的两种方法,方便对比理解:
- 立即取消订阅:调用
cancel()方法不带额外参数,订阅会立刻终止,客户无法再使用服务$subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a'); $subscription->cancel(); - 计费周期结束时取消:通过
at_period_end参数,订阅会在当前付费周期到期时自动终止,客户仍可使用服务到周期结束
这种方式本质是让Stripe自动将取消时间设置为当前周期的结束时间,无需手动计算。$subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a'); $subscription->cancel(['at_period_end' => true]);
指定自定义日期取消订阅
如果你需要在任意未来指定日期终止订阅,要用到Stripe API的cancel_at参数,它接受一个Unix时间戳作为取消时间。
代码实现示例
// 1. 先获取目标订阅对象 $subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a'); // 2. 定义你想要的取消日期,转换为Unix时间戳 // 比如设置为2024年12月31日0点0分 $targetCancelDate = strtotime('2024-12-31 00:00:00'); // 3. 调用cancel方法并传入cancel_at参数 $subscription->cancel(['cancel_at' => $targetCancelDate]);
关键注意事项
cancel_at只接受未来的Unix时间戳,如果传入过去的时间,API会返回错误- 如果你同时设置了
cancel_at和at_period_end,cancel_at会优先生效 - 后续如果需要修改或取消这个预定的取消计划,可以通过更新订阅来重置
cancel_at:// 取消预定的取消操作 $subscription->update(['cancel_at' => null]); - 可以用PHP的
DateTime类更灵活地处理日期转换,比如:$date = new DateTime('2024-12-31'); $targetCancelDate = $date->getTimestamp();
内容的提问来源于stack exchange,提问作者Clément Andraud
相关产品推荐
相关产品推荐

