开放平台-京东调用外部
概述#
京东提供两种方式供开发者(ISV)接收数据同步请求:使用开放平台提供的SDK(目前仅支持Java语言)或根据协议规则自定义HTTP请求处理。应用审核通过后,可在应用详情中查看 AppKey 和 AppSecret ,用于请求的签名和验签操作。双方敏感信息的交互请参考加解密说明章节进行处理。
一、SDK-Java接入方式#
接口实现#
外部三方需提供可访问的HTTP接口地址,使用京东提供的SDK包接收调用。以下是一个简单的实现示例:
@RequestMapping("/test")public Map<String, JosResult> index(HttpServletRequest req) { try { // 获取调用参数 String body = RequestUtil.getBody(req); // 鉴权 boolean isLegal = SignUtils.checkSign(req, body, appSecret); // 业务处理 - 开始
// 业务处理 - 结束 // 返回结果 return ResultBuilder.buildSuccessResult(true); } catch (Exception e) { return ResultBuilder.buildErrorResult("0001", "未知异常"); }}关键步骤#
- 获取参数:使用
HttpServletRequest获取请求参数。 - 鉴权:使用
SignUtils.checkSign方法进行签名验证。 - 业务处理:实际业务参数放在
RequestUtil.getBody中,根据业务需求进行处理。 - 返回结果:使用
ResultBuilder工具类返回处理结果。
二、自定义HTTP接入方式#
请求接收和处理#
公共参数说明#
| 参数名 | 类型 | 描述 |
|---|---|---|
| app_key | String | 宙斯申请应用的key |
| method | String | 京东侧调用方法名 |
| v | String | 版本号 |
| sign | String | 签名 |
| timestamp | String | 时间字符串,格式为:YYYY-MM-DD HH:MM:SS |
实现步骤#
- 提供POST接口:例如
http://www.myh.com/beneficialChange。 - 获取参数:从链接获取公共参数,从
parameter中获取业务参数,key 为360buy_param_json。 - 签名验证:
- 将所有参数放入有序Map,按key升序排列,排除
sign参数。 - 拼接字符串:
app_secret + 排序后的key+value + app_secret。 - 对字符串进行MD5加密并转为大写,得到签名
sign。 - 比较计算出的签名与传递的签名,验证通过则继续处理。
- 将所有参数放入有序Map,按key升序排列,排除
- 业务处理:根据业务需求进行处理。
- 返回结果:返回京东侧调用结果。
请求响应处理#
业务参数说明#
一般都是json格式,具体接口具体分析
返回结果格式#
| 参数名 | 下级参数 | 类型 | 描述 |
|---|---|---|---|
| reponse | |||
| code | String | 响应码,0000-成功,其它-代表失败 | |
| data | Object | 返回数据(根据对接业务不同,返回的数据不同,详细可参考具体接口文档) | |
| uuid | String | 日志ID | |
| errMsg | String | 错误描述 |
正确结果示例:
{"reponse":{"code":"0000","data":true,"uuid":"f602e02e-a8c6-4fed-94f5-d7052d16b033"}}错误结果示例:
{"reponse":{"code":"0001","errMsg":"请求参数错误","uuid":"1ded1b62-c60f-4e4f-9620-a78a16b8f284"}}
通过以上指南,开发者可以有效地接收和处理京东侧的数据同步请求,确保数据的安全和准确传输。