Skip to main content

常见问题

1. 接到多次相同请求怎么办?#

消息同步一般都会做重试处理,保证在网络不佳,接收消息服务器出现问题等情况多次通知,此时合作方需要进行幂等处理。

返回方式有2种方案,一种是合作方按照接口要求的正确的消息体进行返回,第二种是给出固定的错误码1021,当京东接收到1021错误码以后也会认为合作方消息已经处理成功,不再重试。注意1021错误码不要与其他错误码混淆,此处只做判断是否处理成功过。

2. 联调过程中,京东侧一直接收到合作方返回415报错是什么问题?#

接收同步消息时,未按照要求规则指定相关配置,处理方式如下:

外部三方可尝试更换post请求,或由于请求contentType 问题导致, 可参考 controller 增加 method = RequestMethod.POST,produces = {MediaType.TEXT_HTML_VALUE}

JAVA代码示例:

@RestController@RequestMapping("/member")@Slf4jpublic class TestController {@RequestMapping(value = "/jd/notify/create" ,method = RequestMethod.POST,produces = {MediaType.TEXT_HTML_VALUE})    public Map<String, JosResult> jdNotifyCreate(HttpServletRequest request) {        log.info("fffff");        String method = request.getMethod();        String body = RequestUtil.getBody(request);        // SignUtils.checkSign(request,body,s)        return ResultBuilder.buildSuccessResult("chenggong");    }
}
3. 联调过程中,京东侧一直接收到合作方返回406报错是什么问题?#

接收消息处理完毕返回给京东侧时,json转换存在问题,处理方式如下:

外部三方由于未配置json转换器,参考 springboot 启动类 ,实现 WebMvcConfigurer 后 重写 configureMessageConverters 方法。如果是配置文件形式的,可自行配置json转换字符串。

JAVA代码示例:

@SpringBootApplication@ComponentScan(basePackages = "com.example")@PropertySource("classpath:application.properties")@Configuration@EnableWebMvcpublic class DemoApplication implements WebMvcConfigurer {
    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }
     @Bean     public HttpMessageConverter responseBodyConverter() {            MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();            List<MediaType> mediaTypeList = new ArrayList<>();            //如果有需要指定默认的格式,请放在第一位,按需修改这行MediaType            mediaTypeList.add(MediaType.APPLICATION_JSON);            //京东侧实际使用的是MediaType.TEXT_HTML方式            mediaTypeList.add(MediaType.TEXT_HTML);            jackson2HttpMessageConverter.setSupportedMediaTypes(mediaTypeList);            return jackson2HttpMessageConverter;        }
     @Override     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {            converters.add(responseBodyConverter());        }}
4. java方式进行加解密时报错,java.security.InvalidKeyException: Illegal key size,如何处理?#

产生问题的原因是密钥长度受限制。AES 加密使用的是 256位,Java 默认使用的解密包是 local_policy.jar 和 US_export_policy.jar,但是这个默认的只支持 128位的解密(java 版本在 1.8.0_161之后就没有这个问题了,默认是支持)

解决方案有2种,一种是升级jdk到1.8.0_161,第二种是沟通京东侧,将加密的key截取一半以后使用

5. 聊天过程中发送的图片医生端接不到是什么原因?#

京东侧在展示外部渠道图片时,首先需要把外部的图片转存到京东的图片服务器,京东侧会根据合作方的图片地址去下载图片,然后上传到京东的图片服务器,在京东的后续各个系统中展示的是京东侧图片地址。

如果合作方发送的图片过大,或者合作方的图片服务器性能较低,都会导致从合作方服务器下载图片并上传到京东图片服务器的流程过长,由于接口有超时设置,往往会导致图片转存超时,消息发送失败。

一方面消息发送失败以后,合作方要进行重试,另一方面在传递给京东的图片需要合作方内部在保证图片清晰的前提下进行压缩,发送的图片大小尽量在2M以内,最大不要超过5M。

6. 流量不够用怎么办?每日次数已经超了,为什么充值按钮依旧是灰色的?#

新创建应用未发布情况每天500次调用,发布应用以后每天30W次

APPKEY流量自助调整规则和操作指南:应用流量自助调整规则和操作指南

调用次数未达到总流量的60%之前所有按钮为灰色

重置流量次数:①当天流量超过60%时,可使用该功能快速恢复证书流量。②重置之后,计数器从零开始计算,api总访问量还会继续累加。 ③一天只有三次重置机会。三次之后提工单提升流量。

7. accesstoken有效期是多久?#

应用未发布之前的测试阶段,token有效期是24小时。应用发布以后,有效期是365天。

时间这么长到时候忘了怎么办?宙斯提供了token刷新的接口,具体请看获取accesstoken并刷新

token没有过期,怎么突然不可用了?如授权账号(商家为主账号)修改密码则授权码(Access token)随之失效,需重新授权。

8. 接口有超时设置吗,超时时间是多少?#

宙斯接口是由超时时间的,超时时间为10s

9. 返回的错误码,提示信息以及解决方案#
返回码具体提示信息解决方案
0调用成功
8{"error_response": {"code":"8","zh_desc":"时间戳参数与服务器时间差异大于设定值timestamp=2021-02-20 14:15:38.709+0800(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"Invalid Timestamp(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}访问url中的timestamp参数与当前时间差值不能大于10min
12{"error_response": {"code":"12","zh_desc":"无效签名(解决方案参考:https://jos.jd.com/commondoc?listId=171)","en_desc":"Invalid Signature(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}①签名必须根据正确的算法算出来的, 算法请见https://jos.jd.com/commondoc?listId=33②请检查输入appkey,app secret,token三者是否正确且对应
15{"error_response": {"code":"15","zh_desc":"不存在的方法名(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"Invalid Method(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}接口未发布,或接口名错误
19{"error_response": {"code":"19","zh_desc":"token已过期或者不存在,请重新授权,access_token:72e93a8ceaf143e38a872e1e0823a376zjlo(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"Invalid access_token(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}您传入的token不正确或已过期,请确认您的token值与您使用商家账号和appkey应用获取到的token参数一致。
24{"error_response": {"code":"24","zh_desc":"该appKey=XXXXXX无权调用(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"cannot use a API(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}请联系我们申请该接口
61{"error_response": {"code":"61","zh_desc":"type=java.lang.Integer,value=[20不支持的数据类型(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"parameter null value is not valid ,please refer to the help document and confirm(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}去掉[]
62{"error_response": {"zh_desc": "json转换时错误(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc": "json conversion error(Solution reference: https://jos.jd.com/commondoc?listId=171)","code": "62"}}格式化校验一下json串:https://www.bejson.com/ 如果是标准的json串仍然报错,请将json串中的双引号变为单引号尝试
80{"error_response": {"code":"80","zh_desc":"所使用的APP的IP:x.xx.xxx.xxxx, 不在APP设置的IP白名单中,没有权限访问(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"null(Solution reference: https://jos.jd.com/commondoc?listId=171)"}}将ip配置到ip白名单里面
92{"code":"92","zh_desc":"该appKey=XXX超过三月未上线,请操作上线后调用。(解决方案参考: https://jos.jd.com/commondoc?listId=171)","en_desc":"The application is in the testing state and not been online for more than 3 months.(Solution reference: https://jos.jd.com/commondoc?listId=171)"}appkey对应的应用审核成功后三个月内需要对应用做上线操作
301返回了html,显示301 Moved Permanently检查域名:正式环境域名:https://api.jd.com/routerjson 预发环境域名:https://api-dev.jd.com/routerjson 测试环境域名:https://api-test.jd.com/routerjson (请复制粘贴过去)
302返回了html,显示302 Found检查域名:正式环境域名:https://api.jd.com/routerjson 预发环境域名:https://api-dev.jd.com/routerjson 测试环境域名:https://api-test.jd.com/routerjson (请复制粘贴过去)
304{"code":304,"msg":"当前会话没有做过授权,请先授权","requestId":"ffd7be00b56241fcafdcb9618f9bf667"}在获取token之前需要获取code,该code只可以使用一次,若code已经被使用过,请重新获取code,如果回调地址是自己的域名,可以先将应用中的回调地址改成https://www.baidu.com 尝试成功获取token,待成功后再尝试用自己的域名,自己排查错误的地方
20012{"code":20012,"msg":"refresh_token 无效","requestId":"ce9aa275fe2c4584a05e7709afb100fa"}refresh_token已过期,请重新授权