Laravel Cashier Stripe生产环境订阅查询返回Null问题求助
Laravel Cashier Stripe生产环境订阅返回Null排查思路
- 检查Stripe Webhook配置:生产环境必须正确配置Webhook,Cashier依赖它同步订阅状态到数据库。确认
.env里的STRIPE_WEBHOOK_SECRET和Stripe后台的签名密钥一致,Webhook端点指向生产环境正确地址,且订阅了customer.subscription.created、customer.subscription.updated等关键事件。 - 验证用户模型关联:确保User模型正确使用
Billabletrait,没自定义覆盖subscriptions()关联方法。可以在生产环境tinker里执行auth()->user()->subscriptions(),查看原始查询结果是否有异常条件。 - 核对Stripe客户与本地用户绑定:虽然客户数据更新正常,但要确认Stripe返回的客户ID和
users表的stripe_id完全匹配(Stripe ID大小写敏感)。调用auth()->user()->stripeCustomer(),对比本地存储的ID和Stripe端的客户信息。 - 手动触发订阅同步:订阅完成后,执行
$user->syncStripeSubscriptions(),如果执行后能获取到订阅数据,说明Webhook未触发或处理失败,去Stripe后台看Webhook日志,同时检查Laravel日志里的相关错误。 - 确认环境与密钥配置:检查
.env的APP_ENV是否为production,STRIPE_KEY和STRIPE_SECRET确实是生产环境密钥,没和测试环境混淆。 - 查看Laravel错误日志:搜索生产环境日志中Stripe、Cashier相关的报错,比如Webhook处理异常、API调用失败信息,这些可能是订阅数据未写入的隐藏原因。
- 检查Stripe后台订阅状态:确认该用户在Stripe后台的订阅是否真实存在且处于活跃状态,如果Stripe端订阅本身未创建成功,本地自然拉取不到数据。
内容的提问来源于stack exchange,提问作者Bk256
相关产品推荐
相关产品推荐

