C#如何监听并捕获Webhook发送的JSON POST请求
最简可运行ERP Webhook监听方案(Python实现,无额外复杂依赖)
1. 安装基础依赖
只需要安装轻量Web框架Flask即可:pip install flask
2. 编写监听代码
直接复制以下代码可直接运行,支持单路由接收所有事件、多路由分事件接收两种模式:
from flask import Flask, request, jsonify app = Flask(__name__) # 模式1:统一路由接收所有ERP推送事件 @app.route('/erp/webhook/all', methods=['POST']) def all_event_receiver(): # 解析ERP推送的JSON数据 try: push_data = request.get_json() except: # 非JSON格式请求直接返回错误,避免服务报错 return jsonify({"code": 400, "msg": "invalid json format"}), 400 # 此处替换为你自己的业务逻辑:比如打印日志、存数据库、触发后续操作 print(f"收到ERP推送事件,数据内容:{push_data}") # 必须返回200状态码,否则ERP会认为推送失败触发重试机制 return jsonify({"code": 200, "msg": "received"}), 200 # 模式2:分路由单独监听指定事件,示例:单独监听采购单创建事件 @app.route('/erp/webhook/purchase_order_create', methods=['POST']) def purchase_order_receiver(): push_data = request.get_json() print(f"收到采购单创建事件:{push_data}") return jsonify({"code": 200, "msg": "received"}), 200 if __name__ == '__main__': # 监听所有网卡请求,端口可自行修改,测试阶段可开debug模式 app.run(host="0.0.0.0", port=5000, debug=True)
3. 本地测试验证
运行代码后,用curl命令模拟ERP推送,验证服务是否正常:curl -X POST http://127.0.0.1:5000/erp/webhook/all -H "Content-Type: application/json" -d '{"event":"test","data":{"id":123,"content":"测试数据"}}'
正常情况下服务终端会打印你发送的测试内容,curl会收到成功响应。
4. 对接ERP配置
- 测试阶段可使用内网穿透工具将本地5000端口暴露到公网,生产环境直接部署到公网服务器即可
- 进入ERP后台的webhook订阅配置页,将对应事件的推送地址填写为你的公网访问地址+路由,推送格式选择JSON
- 若ERP要求签名校验,可在代码中新增请求头签名比对逻辑,和本地用约定密钥计算的签名一致再处理数据,不一致直接返回403即可。
内容的提问来源于stack exchange,提问作者Brent Allison
相关产品推荐
相关产品推荐

