2-服务端接口对接说明
#
1、京东请求合作方服务【java接入方式】,合作方提供可访问的接口地址使用提供的jar包,接收京东测调用,接口提供方式为http接口,Accept为text/html,text/javascript,text/html,注意produces配置; 简单例子,入参使用HttpServletRequest接收,返回使用jar包中工具类 ResultBuilder.buildSuccessResult
@RequestMapping("/test")@ResponseBodypublic Map<String, JosResult> index(HttpServletRequest req) { try { //获取调用参数 String body = RequestUtil.getBody(req); //鉴权 boolean isLegal = SignUtils.checkSign(req, body, "申请宙斯后的appSecret"); //body json字符串中获取信息,做业务 todo //合作方业务处理 //返回结果 return ResultBuilder.buildSuccessResult("根据接口说明返回的结果,比如布尔类型 true "); } catch (Exception e) { return ResultBuilder.buildErrorResult("错误码","错误描述"); }}
#
2、 京东请求合作方服务【非java接入方式】合作方提供可访问的接口地址,并按照说明进行参数签名鉴权,并返回规定格式数据;京东测调用时,会使用以下方式进行调用,链接上可获取到的参数如下表
字段名 | 类型 | 备注 |
---|---|---|
app_key | String | 宙斯申请应用的key |
method | String | 京东侧调用方法名 |
v | String | 版本号 |
sign | String | 签名 |
timestamp | String | 时间字符串,格式为:2020-06-29 16:54:41 |
链接格式如下:
https://www.demo.com/methodName?app_key=D0AAAXXXXX41177CB9A9F6707455CC27&method=jingdong.health.methodName&v=2.0&sign=F692ADA8386C42B41CDD5640711DBAD3×tamp=2020-06-29+16%3A42%3A40
参数举例:
360buy_param_json:{"column1":1,"column2":1,"column3":"123321","column4":"1,2,3"}
通过上述字段进行签名,具体对接流程如下
a、提供post接口,接口路径
例如:https://www.demo.com/jdnotify
b.处理接入合作方自己的业务
c.返回京东最终处理结果
d.接口进行签名验证接口获取参数,一种参数从链接上获取5个固定参数,另一种参数从parameter中获取参数,key为360buy_param_json;
获取全部参数后,进行签名验证操作,将获取到的所有参数放入有序map,包含从链接和param中获取的所有参数,map根据key升序排列,map需要排除掉sign参数【sign不参与签名】;
拼接字符串,字符串方式为app_secret+ 上一步所有参数排序key+value +app_secret;
拼接结果如下:e2180c50df99488badbc7a64qqqqqqqq360buy_param_json{"column1":1,"column2":1,"column3":"123321","column4":"1,2,3"}app_keyD0AAAXXXXX41177CB9A9F6707455CC27methodjingdong.health.methodNametimestamp2020-06-29 16:54:41v2.0e2180c50df99488badbc7a64qqqqqqqq;
对字符串进行md5加密转大写后得到签名sign;
使用得到的签名与传递过来的签名字段进行对比,若相同,则签名验证通过
#
3、参数说明a.入参由2部分组成,链接上获取的5个固定参数,和params中获取的由json串组成的360buy_param_json
b.合作方调用京东侧的相关参数,统一通过宙斯文档查看;京东侧调用合作方的参数通过本文档进行查看
c.所有接口参数均会包含统一入参,统一出参,后续文档只会说明放入360buy_param_json中的业务入参,与放入data中的业务出参
d.京东侧调用合作方需要合作方返回固定参数格式如下
参数名 | 下级参数 | 类型 | 描述 |
---|---|---|---|
reponse | 返回结果 | ||
--- | code | String | 错误码,0000时为正确,京东侧通过0000判断成功 |
--- | data | object | 返回数据 |
--- | uuid | String | 日志id,方便双方对接时获取日志 |
--- | errMsg | String | 错误描述,当code不等于0000时,给出错误描述,方便对接查找问题 |
正确结果:
{"response":{"code":"0000","data":{\"column1\":1,\"column2\":1,\"column3\":\"123\"}}
错误结果:
{"response":{"code":"错误码","errMsg":"错误描述","uuid":"1ded1b62-c60f-4e4f-9620-a78a16b8f284"}}