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

Laravel Cashier对接Stripe本地Webhook异常,已用Stripe CLI仍报错

解决Laravel Cashier本地测试Stripe Webhook的问题

报错原因

php artisan cashier:webhook 命令的作用是直接在Stripe后台创建公网可访问的Webhook端点,本地环境(如http://localhost:8000)不符合公网可访问的要求,因此即使你登录了Stripe CLI,直接执行该命令仍会触发错误。

正确本地测试步骤

1. 启动本地Laravel服务

确保你的Laravel应用正在本地运行:

php artisan serve

默认本地访问地址为http://localhost:8000,如果修改了端口请对应调整后续命令。

2. 用Stripe CLI转发Webhook事件

Stripe CLI的核心作用就是把Stripe的测试事件转发到本地服务,执行以下命令:

stripe listen --forward-to localhost:8000/stripe/webhook
  • 命令执行后,终端会输出一个Webhook密钥(格式为whsec_xxxxxx),请复制保存。
  • 注意:/stripe/webhook是Laravel Cashier默认的Webhook端点路径,如果你自定义了路径,请替换为对应值。

3. 配置Laravel环境变量

在项目根目录的.env文件中添加刚才获取的Webhook密钥:

STRIPE_WEBHOOK_SECRET=whsec_xxxxxx

4. 测试Webhook事件

用Stripe CLI发送测试事件到本地服务,比如测试支付成功事件:

stripe trigger payment_intent.succeeded

此时你的本地Laravel应用会收到该事件,Cashier会自动处理对应的业务逻辑(如更新订单状态、生成收据等)。

备选方案:用公网代理暴露本地服务(不推荐本地测试用)

如果一定要使用php artisan cashier:webhook命令创建端点,可以用ngrok之类的工具把本地服务暴露为公网URL:

  1. 启动ngrok:ngrok http 8000,得到公网地址(如https://abc123.ngrok.io)
  2. 执行Cashier命令并指定公网URL:
php artisan cashier:webhook --url="https://abc123.ngrok.io/stripe/webhook"

这种方法需要把本地服务暴露到公网,仅适合临时测试,日常本地开发更推荐用Stripe CLI转发。

内容的提问来源于stack exchange,提问作者Shuvo Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:42:38