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

如何接收Webhook消息?WooCommerce对接Heroku Flask应用无日志排查

排查WooCommerce Webhook无法触发Heroku Flask应用日志输出的问题

我来帮你一步步定位问题,我之前在对接WooCommerce Webhook到Flask应用时也踩过类似的坑😉

先检查WooCommerce端的Webhook配置

  • 确认Webhook的URL完全匹配:你的Flask路由是/hook/,所以Webhook的URL必须是https://你的Heroku应用名称.herokuapp.com/hook/(注意末尾的斜杠不能少,Flask的路由是严格匹配的)。
  • 检查Webhook的状态与触发事件:在WooCommerce后台→高级→Webhooks里,找到你创建的Webhook,确保状态是「活跃」,并且已经选择了正确的触发事件(比如「订单创建」「产品更新」等)。
  • 查看Webhook的发送日志:点击对应Webhook的「日志」选项,看看有没有发送失败的记录——如果返回码是404,说明URL有误;如果是500,说明Flask应用内部出错;如果是200但还是没日志,那问题大概率在代码或者Heroku日志查看方式上。

排查Flask代码的核心问题

你当前代码里的request.get_json()很可能是问题所在!WooCommerce Webhook默认发送的是application/x-www-form-urlencoded格式的 payload,不是JSON格式,所以request.get_json()会返回None,自然不会有任何输出。

你可以二选一解决这个问题:

  1. 修改WooCommerce Webhook的交付格式:在Webhook设置里,把「交付方式」改成「JSON」,这样你的现有代码就能正常获取到数据了。
  2. 修改Flask代码适配默认格式:把print(request.get_json())改成print(request.form),这样就能获取到WooCommerce发送的表单格式数据。

另外还有两个小细节要注意:

  • 确保Heroku上的Flask应用是用生产级服务器启动的:比如在Procfile里配置web: gunicorn app:app,而不是用flask run(后者只适合开发环境,生产环境下可能无法正确处理请求)。
  • 正确查看Heroku日志:要用heroku logs --tail命令实时追踪日志,普通的heroku logs可能只会显示旧日志,看不到最新的请求输出。

验证与测试方法

你可以手动发送请求来测试Flask应用是否正常接收数据:

  • 用curl命令发送表单请求:
    curl -X POST -d "test_data=hello_world" https://你的Heroku应用名称.herokuapp.com/hook/
    
  • 或者用Postman发送POST请求,选择form-data格式,添加几个键值对,然后查看Heroku日志是否有输出。

如果手动测试能看到日志,说明Flask应用没问题,再回头检查WooCommerce的Webhook配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:03:26