Stripe Webhook测试问题:页面端测试支付无法触发Webhook回调
排查与解决方法
- 优先用Stripe CLI直接转发实时事件
你之前用Stripe CLI测试是手动触发事件,实际上只要保持CLI的转发进程运行,你在页面发起的真实测试支付产生的所有事件,都会被CLI自动转发到本地的Webhook端点。运行命令:
保持该终端不关闭,再去页面走完整的支付测试流程,就能触发本地的Webhook逻辑。stripe listen --forward-to 你本地Webhook接口的完整路径(比如localhost:8000/webhook/stripe) - 若需要直接对接Stripe后台配置的端点,做内网穿透
Stripe的Webhook事件只能推送到公网可访问的HTTP/HTTPS端点,如果你本地开发环境没有公网地址,可使用内网穿透工具将本地服务端口映射到公网,拿到公网URL后替换Stripe后台的Webhook端点地址,同时将代码里的$endpoint_secret替换为Stripe后台该端点对应的签名密钥(注意不要和CLI生成的临时密钥混淆)。 - 其他常见配置排查项
- 确认Stripe后台对应Webhook端点的事件列表中,已经勾选了
payment_intent.succeeded,未勾选的事件Stripe不会推送。 - 检查Webhook接口路径是否做了CSRF校验、登录权限校验,如有需要将该路径排除,避免Stripe的请求被拦截。
- 可直接在Stripe后台的Webhook日志页面查看所有推送记录,根据返回的状态码(404/400/500/超时等)快速定位问题:如果是400要检查签名密钥是否正确、Payload有没有被服务端框架修改;如果是超时要检查公网地址是否可正常访问。
- 确认Stripe后台对应Webhook端点的事件列表中,已经勾选了
内容的提问来源于stack exchange,提问作者Nikola Pejic
相关产品推荐
相关产品推荐

