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

如何在Stripe中区分订阅取消与试用取消状态?

区分Stripe中试用结束与订阅结束触发的customer.subscription.deleted事件

要区分这两种触发场景,核心是解析webhook返回的Subscription对象里的关键字段,以下是具体判断逻辑:

  • 查看subscription.cancel_details.reason字段

    • 如果值为"trial_end",说明是免费试用到期后自动取消订阅触发的事件;
    • 如果值为"cancel_at_period_end",则是订阅周期结束(无自动扣款)导致的订阅删除,这种情况一般是用户提前设置了到期不续费,或者订阅本身是无自动续费的一次性周期。
  • 对比时间戳辅助验证

    • 检查subscription.trial_end和subscription.status_transitions.canceled_at的时间是否一致:如果一致,可确认是试用结束触发;
    • 如果subscription.current_period_end和canceled_at时间一致,则是订阅正常周期结束后触发的删除。
  • 额外验证订阅是否存在试用阶段
    查看subscription.trial_start和subscription.trial_end是否有有效值(非null),如果这两个字段存在,说明该订阅曾设置过试用,结合前面的字段判断更准确。

举个简单的判断逻辑伪代码:

def determine_deletion_reason(subscription):
    cancel_reason = subscription.get('cancel_details', {}).get('reason')
    if cancel_reason == 'trial_end':
        return "试用结束自动取消"
    elif cancel_reason == 'cancel_at_period_end':
        return "订阅周期结束无续费"
    # 其他情况可补充判断
    return "其他原因取消"

内容的提问来源于stack exchange,提问作者Harshil Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:07:07