Pipedrive交易更新Webhook PHP端读取返回JSON数据问题求助
解决方案
核心问题原因
- Pipedrive触发Webhook时是直接将JSON数据放在HTTP请求的原始Body中提交,不是常规的表单键值对格式,因此
$_REQUEST/$_POST超全局变量无法读取到对应参数,你标注的那行代码确实是核心问题。 - 你原有代码还有一处语法错误:
$txt = $obj['id']末尾缺少分号,会导致PHP解析报错。
修正后的完整代码
<?php // 读取原始请求体中的JSON数据 $rawBody = file_get_contents('php://input'); // 解析JSON为数组 $payload = json_decode($rawBody, true); // 加层判断防止数据异常报错 if (json_last_error() === JSON_ERROR_NONE && isset($payload['current']['id'])) { $dealId = $payload['current']['id']; $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); fwrite($myfile, $dealId); fclose($myfile); // 给Pipedrive返回200状态码,避免触发重复推送 http_response_code(200); } else { // 数据异常时返回400状态码,也可额外增加日志逻辑排查问题 http_response_code(400); }
补充注意点
- Webhook接收端不需要对单独的
current字段做二次解码,整个请求体就是完整的JSON结构,直接整体解析即可 - 生产环境建议添加签名校验逻辑,验证请求确实来自Pipedrive,防止恶意请求伪造数据
内容的提问来源于stack exchange,提问作者IMO
相关产品推荐
相关产品推荐

