美文网首页
德邦快递接口开发-java(工具类)

德邦快递接口开发-java(工具类)

作者: 我想你是不知道的 | 来源:发表于2019-10-14 17:24 被阅读0次

德邦快递的接入,关键也是组合数据,提交并处理响应数据,流程和顺丰差不多,工具类比较简单,官方文档都有,在做之前,先把官方文档都读一遍,大概知道要找的内容在什么位置,以及了解流程。

对接规范和流程
◆传输协议
暂时只支持HTTP协议进行通信。
◆数据传输格式
所有接口暂只支持json消息格式。
◆编码格式:UTF-8
交互编码格式统一用UTF-8,避免传递中文数据出现乱码。
◆安全验证
在数据传输过程中,为避免数据被篡改,需要对数据进行加密。入参由四个参数组成:
params(请求参数),digest(密文摘要), timestamp(时间戳),companyCode(第三方接入商的公司编码,双方约定)
参数传递采用http post请求,请求消息头设置("Content-Type","application/x-www-form-urlencoded;charset=utf-8")
在传输的参数中,既要传递原始的json字符串params,又要传输加密后的摘要digest。
设置有效的请求时间戳,当接收端收到请求端的时间差不在有效的时间戳范围内,则认为该订单无效。
德邦开放平台可以根据不同的公司设置不同的时间戳有效时长。调用方在重发消息时时间戳应重新生成,请求报文的摘要也需要重新生成。
timestamp:
13位Unix时间戳 timestamp = System.currentTimeMillis();
digest:
摘要的生成规则是 String plainText = params + appkey + timestamp,注意传递的timestamp要和加密的timestamp值相同。
加密源码如下:

private static String getDigest(String plainText) {
    return Base64.encodeBase64String(DigestUtils.md5Hex(plainText).getBytes());
}

Base64引用 : org.apache.commons.codec.binary.Base64
DigestUtils引用 : org.apache.commons.codec.digest.DigestUtils

然后可以测试一个流程是否可行,比如【新】下单服务接口:

static String params = "{\n" + 
        "    \"companyCode\":\"EWB111\",\n" + 
        "    \"custOrderNo\":\"123456\",\n" + 
        "    \"customerCode\":\"12345678\",\n" + 
        "    \"logisticID\":\"LPEXP33343111111113445\",\n" + 
        "    \"needTraceInfo\":1,\n" + 
        "    \"orderType\":\"1\",\n" + 
        "    \"packageInfo\":{\n" + 
        "        \"cargoName\":\"货物名\",\n" + 
        "        \"deliveryType\":\"9\",\n" + 
        "        \"totalNumber\":2,\n" + 
        "        \"totalVolume\":0.01,\n" + 
        "        \"totalWeight\":1,\n" + 
        "               \"packageService\":\"纸\"\n" + 
        "    },\n" + 
        "    \"receiver\":{\n" + 
        "        \"address\":\"详细地址\",\n" + 
        "        \"city\":\"上海市\",\n" + 
        "        \"companyName\":\"德邦\",\n" + 
        "        \"county\":\"青浦区\",\n" + 
        "        \"mobile\":\"180****2531\",\n" + 
        "        \"name\":\"AAA\",\n" + 
        "        \"province\":\"上海\",\n" + 
        "        \"town\":\"徐泾镇\"\n" + 
        "    },\n" + 
        "\n" + 
        "    \"sender\":{\n" + 
        "        \"address\":\"详细地址\",\n" + 
        "        \"city\":\"上海市\",\n" + 
        "        \"companyName\":\"德邦\",\n" + 
        "        \"county\":\"青浦区\",\n" + 
        "        \"mobile\":\"180****3451\",\n" + 
        "        \"name\":\"AAA\",\n" + 
        "        \"province\":\"上海\",\n" + 
        "        \"town\":\"徐泾镇\"\n" + 
        "    },\n" + 
        "    \"transportType\":\"PACKAGE\",\n" + 
        "       \"gmtCommit\":\"@time\",\n" + 
        "       \"payType\":\"1\",\n" + 
        "       \"isOut\":\"N\"\n" + 
        "}";

public static void main(String[] args) throws JSONException, Exception {
    long timestamp = System.currentTimeMillis();
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(timestamp);
    
    String _params = params.replaceAll("@time", DateUtils.dateToString(cal, "yyyy-MM-dd HH:mm:ss"));
    String digest = getDigest(_params + 你的appkey + timestamp);
    String companyCode = "你的company code";
    
    Map map = new LinkedHashMap();
    map.put("params", _params);
    map.put("digest", digest);
    map.put("timestamp", String.valueOf(timestamp));
    map.put("companyCode", companyCode);
    
    String response = HttpClientUtils.post(NEW_ORDER_URL, map);
    System.out.println(response);
}

如无意外,应该会收到成功的响应数据,然后你就可以一次性地把你需要的接口都测试一遍,只需要修改一下传入的参数,看到一片绿还是挺爽的。测试完,再慢慢逐个完善业务逻辑吧。


测试通过

相关文章

  • 德邦快递接口开发-java(工具类)

    德邦快递的接入,关键也是组合数据,提交并处理响应数据,流程和顺丰差不多,工具类比较简单,官方文档都有,在做之前,先...

  • 德邦快递接口开发-java(【新】下单服务接口)

    查看文档:德邦文档链接 【新】下单服务接口融合了标准类的散客电子面单,快递电子面单,零担电子面单所有的下单接口;该...

  • 德邦快递接口开发-java(问题简集)

    1、怎么分精准汽运短途 JZQY_SHORT 和 精准汽运长途 JZQY_LONG?省内选短途;省外选长途。 2、...

  • jna

    JNA Java Natice Access ,提供一组Java工具类访问系统本地库。开发人员只需在java接口中...

  • [高德开放平台] 定位对接

    目标 对接高德开放平台的定位接口 依赖 工具类 HttpUtils工具类

  • 德邦开放平台PHP-SDK

    德邦快递的接入,关键也是组合数据,提交并处理响应数据,流程和顺丰差不多,工具类比较简单,官方SDK指给出了JAVA...

  • 学习笔记171009

    java开发规范 接口和实现类 接口定义在类名前加I;例如:ICacheService 实现类在类名后加Impl;...

  • 1.环境配置

    JRE JRE = JVM + 核心类库 JDK JDK = JRE + 开发工具java开发工具: 编译工具, ...

  • Java基础

    JAVA开发六大原则 抽象类和接口的对比 如何去设计类和接口(Effective Java) 1、使类和成员的可访...

  • 50多万名用户信息泄露,德邦快递出大事了!

    德邦快递创建于1996年,总部位于上海市青浦区。德邦快递致力成为以客户为中心,以大件快递为核心业务,业务涉及快运、...

网友评论

      本文标题:德邦快递接口开发-java(工具类)

      本文链接:https://www.haomeiwen.com/subject/zoarmctx.html