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

Laravel Cashier Paddle无法解析指定webhook URL,支付后订阅未生成

问题根因

你遇到的问题核心是Paddle无法访问你本地的内网服务地址:Paddle的webhook事件是从公网服务器发起的POST请求,你本地开发环境使用的localhost、局域网IP都属于内网地址,公网服务无法直接访问,因此会提示「无法解析指定的webhook URL」,Cashier接收不到subscription_created事件自然不会生成订阅记录。

解决步骤

1. 解决公网连通问题

要让Paddle能推送事件到你的服务,需要给你的服务配置公网可访问的HTTPS地址,可选两种方案:

  • 本地开发场景:使用ngrok、钉钉内网穿透等工具,将本地Laravel服务的端口暴露到公网,获取公网HTTPS地址,将webhook地址配置为https://你的穿透域名/paddle/webhook填入Paddle沙箱后台
  • 测试/生产场景:直接使用对应环境的公网域名配置webhook即可,注意Paddle仅支持HTTPS协议的webhook地址

2. 修正Webhook路由配置

你自定义的Webhook路由不符合Cashier的默认要求,按以下步骤调整:

  • 删除你自行编写的Route::post('/paddle/webhook', 'WebhookController')->name('webhook');路由
  • 改为注册Cashier自带的Webhook路由:
Route::paddleWebhooks('paddle/webhook');

该路由会自动完成Paddle签名校验、事件分发,subscription_created事件对应的订阅创建逻辑是Cashier内置实现的,无需自行编写业务代码。

  • 确认app/Http/Middleware/VerifyCsrfToken.php中的$except数组已添加'paddle/*'规则,避免Webhook请求被CSRF中间件拦截。

3. 开启Paddle事件推送

登录Paddle沙箱后台,进入Webhook设置页面,至少勾选subscription_created、subscription_updated、subscription_cancelled三类订阅相关事件,保存配置后用Webhook Simulator测试连通性,返回200状态码即为配置正常。

验证流程

配置完成后重新走支付流程,支付完成后等待1~2分钟(Webhook推送存在秒级延迟),即可在subscriptions表中看到生成的订阅记录。注意不要依赖前台returnTo跳转的逻辑判定支付结果,该跳转仅作为用户操作引导,不可作为支付成功的凭证,所有订单状态变更都以Webhook推送为准。


内容的提问来源于stack exchange,提问作者Connor Leech

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:24:08