如何在X个月后取消Stripe支付?WordPress双月订阅终止方案
解决方案:WordPress + Stripe 处理特定支付场景
一、自动终止第三种「分两笔支付」订阅
第三种支付本质是仅两期的有限订阅,核心是让Stripe在两笔款项完成后自动终止,无需手动干预。
实现步骤:
Stripe后台配置订阅计划
- 新建月度订阅产品,设置单期金额为X欧元,在「计费周期」选项中开启限制计费次数,输入
2。这样订阅只会触发2次扣费,完成后自动终止,不会产生后续账单。
- 新建月度订阅产品,设置单期金额为X欧元,在「计费周期」选项中开启限制计费次数,输入
WordPress端适配
- 若使用WooCommerce + Stripe插件:
在产品编辑页选择「订阅产品」,关联上述Stripe两期计划即可。插件会同步Stripe的计费次数限制,到期自动终止订阅。 - 若自定义开发:
调用Stripe API创建订阅时,直接关联已设置好的两期计划ID即可,无需额外参数。示例代码片段:$stripe = new \Stripe\StripeClient('你的API密钥'); $subscription = $stripe->subscriptions->create([ 'customer' => $customer_stripe_id, 'items' => [['price' => '你的两期计划价格ID']], ]);
- 若使用WooCommerce + Stripe插件:
二、X个月后自动取消Stripe订阅
针对需要在指定时长后终止的长期订阅,有两种可靠实现方式:
方式1:通过Stripe API设置自动取消时间
直接给目标订阅设置cancel_at参数,指定X个月后的时间戳,Stripe会自动在该时间点取消订阅。示例代码:
$stripe->subscriptions->update( '目标订阅ID', ['cancel_at' => strtotime("+X months")] );
方式2:WordPress定时任务触发取消
若需要在WordPress端控制流程,可借助WP Cron添加定时任务,到期后调用Stripe API取消订阅:
// 注册定时任务 function schedule_stripe_subscription_cancel($subscription_id, $months) { $cancel_timestamp = strtotime("+$months months"); wp_schedule_single_event($cancel_timestamp, 'trigger_stripe_subscription_cancel', [$subscription_id]); } // 执行取消操作的回调 function trigger_stripe_subscription_cancel($subscription_id) { $stripe = new \Stripe\StripeClient('你的API密钥'); $stripe->subscriptions->cancel($subscription_id); } add_action('trigger_stripe_subscription_cancel', 'trigger_stripe_subscription_cancel');
注意:WP Cron依赖网站访问触发,若站点流量较低,建议搭配服务器级定时任务(如Linux Cron)确保执行。
关键注意事项
- 确保Stripe API密钥拥有订阅读写权限。
- 测试阶段使用Stripe测试模式,模拟扣费和取消流程验证逻辑。
- 分两笔支付的场景务必设置计费次数限制,避免误设为无限续费订阅。
内容的提问来源于stack exchange,提问作者Roland Iordache
相关产品推荐
相关产品推荐

