通用错误解决方案
优质
小牛编辑
137浏览
2023-12-01
- 接口通用问题解决方案
- 通用错误码,错误信息及解决方案
- 400(非法的client_id)
- 400(非法的client_secret)
- 402(未传当前用户手机号)
- 402(手机号不合法)
- 403,10002(IP不在白名单中,本次请求ip:xxx.xxx.xxx.xxx)
- 403(无权访问该接口)
- 406(该用户不存在,请管理员添加后再使用)
- 408(未传timestamp或者timestamp格式错误)
- 410(client_id不一致)
- 412(client_id和access_token为必填项)
- 10001(timestamp过期/请求超时)
- 10003(参数错误xxx)
- 12001(参数错误(未正确传输company_id))
- 12002(该托管关系不存在,无权操作)
- 19999(签名验证失败)
- 通用错误码,错误信息及解决方案
本章内容包含常见错误码及错误信息描述,并给出解决问题的步骤。如果在开发过程中遇到报错,请先在本章中搜索解决方案,谢谢!
通用错误码,错误信息及解决方案
400(非法的client_id)
- client_id是否正确填写
- client_id对应的申请应用是否通过审核
400(非法的client_secret)
- client_secret是否和client_id对应,有可能client_id是A应用的,而client_secret是B应用的
402(未传当前用户手机号)
- 手机号真的没传
- 手机号传了,但是接口要求POST请求而用GET请求
- 手机号传了,请求方式没问题,检查content-type是否为为application/json
402(手机号不合法)
- 检查手机号格式,如不要加“+86”这种前缀的国家码
403,10002(IP不在白名单中,本次请求ip:xxx.xxx.xxx.xxx)
- 添加IP白名单的方法见链接
403(无权访问该接口)
- 检查client_id对应的scope,scope会在获取token接口中返回,如果没有对应的权限,请发邮件找商务开通
- 如果是管理API,则托管关系中的scope也要有对应的权限,需发邮件找商务开通
406(该用户不存在,请管理员添加后再使用)
- 该手机号是否在该企业中
- 该手机对应的员工是否被删除
408(未传timestamp或者timestamp格式错误)
- timestamp是时间戳,即从1970-01-01 00:00:00到现在的的秒数,是一个数字,例如2019-06-04 11:21:54的时间戳是1559618514(附上时间戳计算工具)
410(client_id不一致)
- 通常情况下是获取access_token用的client_id和当前调用接口用的client_id不一致导致
412(client_id和access_token为必填项)
- 这两个字段真的没传
- 传了,没有按照接口的请求方式请求,如接口文档要求POST请求而客户用的是GET请求
- 传了,请求方式没问题,检查content-type是否为为application/json
- 如果确认上述均无问题,请直接使用curl发送请求,如果curl请求没有提示这个错误,请认真检查代码是否哪里把这两个参数过滤了
10001(timestamp过期/请求超时)
- 要求接口参数中的timestamp和请求达到滴滴服务器的时间不超过1分钟,如果遇到这个错误,请检查你们服务器的时间是否准确,具体命令为:date -d @1559618514
10003(参数错误xxx)
- 检查传参是否符合接口文档中的参数说明,如接口要求POST请求而用GET请求
- 如果请求接口传了参数,但是报该参数未传,需要检查请求方式
12001(参数错误(未正确传输company_id))
- 请检查是否传递company_id
- 如果传递了,请检查请求方式是否和API文档一致(GET和POST不要混用)
- 如果确认上述均无问题,请直接使用curl发送请求,如果curl请求没有提示这个错误,请认真检查代码是否哪里把company_id过滤了
12002(该托管关系不存在,无权操作)
- 传参中的company_id和client_id对应的company_id没有从属关系,请将自己的公司授权给第三方费控公司(传参中的company_id对应的公司)
19999(签名验证失败)
- 使用签名验证工具验证代码中的生成的sign和工具中生成的sign是否一致
- 使用方法:将代码中的请求参数(除sign之外)依次填入到相应的位置,再加上sign_key这个字段,点击发送请求
- 名词解释:加密字符串——即用md5算法加密之前按顺序拼接好的字符串(这个字符串特别重要)
- 如果代码中的签名和工具生成的签名不一致,请仔细核查代码中加密前的字符串和工具中加密字符串的区别(必须一模一样)
- 如果一致,请再仔细检查调用接口时传给滴滴侧的请求参数是否和计算sign的参数一样(注意:审批单接口除外)
- 返回值中的params_sign_str是根据请求参数生成的加密前的字符串,sign_key的值用*代替,可以根据您那边生成的加密字符串与该值对比来检查你的签名
- 如果自查未发现问题,请在提问时把md5(str)中的str以及返回值的request_id提供给滴滴同学,滴滴侧把接收到参数拼成的str提供给你们,然后你们可以把比对出不一致的地方