You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中使用Stripe API在指定日期取消订阅的技术咨询

在PHP中使用Stripe API指定日期终止客户订阅

嘿,很高兴能帮你梳理这个问题!你已经了解了两种基础的订阅取消方式,那咱们直接切入指定日期终止订阅的实现方案👇

基础取消方式回顾(你已掌握的)

先快速确认下你提到的两种方法,方便对比理解:

  • 立即取消订阅:调用cancel()方法不带额外参数,订阅会立刻终止,客户无法再使用服务
    $subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a');
    $subscription->cancel();
    
  • 计费周期结束时取消:通过at_period_end参数,订阅会在当前付费周期到期时自动终止,客户仍可使用服务到周期结束
    $subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a');
    $subscription->cancel(['at_period_end' => true]);
    
    这种方式本质是让Stripe自动将取消时间设置为当前周期的结束时间,无需手动计算。

指定自定义日期取消订阅

如果你需要在任意未来指定日期终止订阅,要用到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:29:21