Zoho CRM调用Leads搜索接口报400必填参数缺失问题求助
问题根因
- GET请求错误使用
form_params传参:Guzzle的form_params配置仅适用于POST、PUT等需要在请求体中携带表单参数的请求,GET请求的参数必须通过query配置项拼接到URL中,Zoho CRM的GET接口不会读取请求体内容,因此无法识别你传递的phone参数。 - 不符合Zoho CRM搜索接口的参数规则:Zoho CRM v2的Leads搜索接口必填参数为
criteria,不支持直接传phone作为搜索参数,你需要按照(字段名:匹配规则:匹配值)的格式拼接查询条件。 - 请求头赋值错误:你的代码中已经将完整的鉴权字符串赋值给了
$token['Authorization'],但在headers配置中错误传入了整个$token数组,导致鉴权头格式异常。
修正后代码
public function execute(){ $client = new Client(); // 手机号转为字符串避免长数字出现精度丢失问题 $phone = '9XXXXXXXX9'; $authHeader = 'Zoho-oauthtoken '.'1000.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $deals = $client->request('GET', 'https://www.zohoapis.in/crm/v2/Leads/search', [ // GET请求统一用query传递参数 'query' => [ // 按手机号精确匹配的标准查询条件格式,值包含特殊字符时需要包裹单引号 'criteria' => "(Phone:equals:'{$phone}')" ], 'headers' => [ 'Authorization' => $authHeader ] ]); dd($deals); }
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

