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

PayPal订阅到期/过期时BILLING.SUBSCRIPTION.EXPIRED Webhook未触发咨询

PayPal BILLING.SUBSCRIPTION.EXPIRED 事件未触发问题解答

核心触发规则

这不是你的配置错误,是PayPal Webhook的触发逻辑和多数开发者的默认认知不一致:

  • BILLING.SUBSCRIPTION.EXPIRED 从来不会在订阅自然走完服务周期、无任何主动操作的场景下自动推送,它的合法触发场景只有两个:
    • 商户主动调用取消订阅API,且明确设置取消规则为「当前计费周期结束后生效」,等周期真正结束时会触发该事件
    • 带自动续费的订阅,下一期费用扣款失败后,经过PayPal全流程重试仍然扣款不成功,才会触发该事件
  • 如果你创建的是不带自动续费条款的固定时长订阅,服务周期自然结束时,PayPal不会推送任何到期相关的Webhook,哪怕你在沙盒后台已经看到订阅状态被标记为「已过期」。

沙盒测试的已知问题

沙盒环境对时间驱动的事件支持本身就不稳定:

  • 就算是符合上述触发条件的场景,沙盒也经常出现后台状态已更新、但Webhook完全不推送的情况,这是沙盒的长期已知问题,和你的代码、配置无关,也不代表生产环境会出现同样问题。
  • 测试EXPIRED事件接收逻辑时,不要等沙盒订阅自然走完周期,直接在沙盒后台手动触发订阅过期、模拟连续扣款失败到重试上限的场景,才能稳定收到对应推送。

实际落地建议

绝对不要单靠Webhook维护订阅状态,必须补充主动校验逻辑:

  • 写定时cron任务,固定频率(建议每天1次)调用PayPal订阅查询接口,拉取所有有效订阅的最新状态,和本地存储的订阅状态做对齐同步
  • Webhook只用来做状态变更的实时触发,所有收到的Webhook payload都要和接口查询到的官方状态做二次校验,避免漏推、伪造请求、推送延迟导致的业务状态错乱。

内容的提问来源于stack exchange,提问作者Robin Schambach

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:15:32