Skip to main content

开放平台-京东调用外部

概述#

京东提供两种方式供开发者(ISV)接收数据同步请求:使用开放平台提供的SDK(目前仅支持Java语言)或根据协议规则自定义HTTP请求处理。应用审核通过后,可在应用详情中查看 AppKeyAppSecret ,用于请求的签名和验签操作。双方敏感信息的交互请参考加解密说明章节进行处理。

一、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", "未知异常");    }}

关键步骤#

  1. 获取参数:使用 HttpServletRequest 获取请求参数。
  2. 鉴权:使用 SignUtils.checkSign 方法进行签名验证。
  3. 业务处理:实际业务参数放在RequestUtil.getBody中,根据业务需求进行处理。
  4. 返回结果:使用 ResultBuilder 工具类返回处理结果。

二、自定义HTTP接入方式#

请求接收和处理#

公共参数说明#

参数名类型描述
app_keyString宙斯申请应用的key
methodString京东侧调用方法名
vString版本号
signString签名
timestampString时间字符串,格式为:YYYY-MM-DD HH:MM:SS

实现步骤#

  1. 提供POST接口:例如 http://www.myh.com/beneficialChange
  2. 获取参数:从链接获取公共参数,从 parameter 中获取业务参数,key 为 360buy_param_json
  3. 签名验证
    • 将所有参数放入有序Map,按key升序排列,排除 sign 参数。
    • 拼接字符串:app_secret + 排序后的key+value + app_secret
    • 对字符串进行MD5加密并转为大写,得到签名 sign
    • 比较计算出的签名与传递的签名,验证通过则继续处理。
  4. 业务处理:根据业务需求进行处理。
  5. 返回结果:返回京东侧调用结果。

请求响应处理#

业务参数说明#

一般都是json格式,具体接口具体分析

返回结果格式#

参数名下级参数类型描述
reponse
codeString响应码,0000-成功,其它-代表失败
dataObject返回数据(根据对接业务不同,返回的数据不同,详细可参考具体接口文档)
uuidString日志ID
errMsgString错误描述
  • 正确结果示例

    {"reponse":{"code":"0000","data":true,"uuid":"f602e02e-a8c6-4fed-94f5-d7052d16b033"}}
  • 错误结果示例

    {"reponse":{"code":"0001","errMsg":"请求参数错误","uuid":"1ded1b62-c60f-4e4f-9620-a78a16b8f284"}}

通过以上指南,开发者可以有效地接收和处理京东侧的数据同步请求,确保数据的安全和准确传输。