德邦快递接口开发-java(工具类)
德邦快递的接入,关键也是组合数据,提交并处理响应数据,流程和顺丰差不多,工具类比较简单,官方文档都有,在做之前,先把官方文档都读一遍,大概知道要找的内容在什么位置,以及了解流程。
对接规范和流程
◆传输协议
暂时只支持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(【新】下单服务接口)
查看文档:德邦文档链接 [新]下单服务接口融合了标准类的散客电子面单,快递电子面单,零担电子面单所有的下单接口: 该接口提供的服务: (1)快递电子面单,零担电子面单和散客电子面单下单,并支持预埋单号 ...
- 德邦快递接口开发-java(问题简集)
1.怎么分精准汽运短途 JZQY_SHORT 和 精准汽运长途 JZQY_LONG? 省内选短途:省外选长途. 2.快递业务,一单里面有多个件的,子母单是怎么体现的,[新]下单服务接口,返回结果 cu ...
- 德邦快递接口开发-php(亲测有效)
德邦快递的接入,关键也是组合数据,提交并处理响应数据,流程和顺丰差不多,工具类比较简单,官方SDK指给出了JAVA的demo,对于PHP来说的话就有点难度了,博主研究这个代码也是研究了半个小时之久的, ...
- java 实现限流器,可用于Rest接口请求处理 | Java工具类
目录 前言 Maven依赖 代码 总结 前言 在工作中是否会碰到这样的场景,高并发的请求但是无法全部执行,需要一定的限流.如果你是使用的微服务框架,比如SpringCloud,可以使用Gateway增 ...
- 网络请求以及网络请求下载图片的工具类 android开发java工具类
2019独角兽企业重金招聘Python工程师标准>>> package cc.jiusan.www.utils;import org.apache.http.HttpEntity; ...
- java escape工具类_java开发常用工具类
在Java中,,工具类定义了一组公共方法.你把你的类继承这些类或者实现这些接口,就可以使用这些类的方法了.下面给大家介绍一下十六种最常用的java开发常用工具类. 一. org.apache.comm ...
- java时间随机数_java开发代码工具类(时间戳/随机数/日期等)
简介 java开发代码工具类,提高开发效率,持续更新~ 实践 package com.springboot.sixmonth.common.util; import java.math.BigInte ...
- java开发工具排名_干货:排名前16的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
最新文章
- centos yum mysql-devel 5.5_CentOS 6.5下yum安装 MySQL-5.5全过程图文教程
- python 3.5-python3.5
- linux 命令之电子书chm格式下载
- Spring5参考指南:IOC容器
- 漫画:什么是人工智能
- 大数据时代下,App数据隐私安全你真的了解么?
- k8s通过yaml创建pod_Kubernetes根据yaml创建pod的时候8080访问被拒绝报错
- 「新手向」koa2从起步到填坑
- Android心电图动画效果,手把手教你打造一个心电图效果View Android自定义View
- 14.2 movielens
- Visio 下载,及密钥
- 智遥工作流为Sap报工时(实例)
- 到底什么样的网站才需要办理ICP许可证?
- 新手做seo该怎么做?seo新手入门基础教程
- HTTP,TCP,UDP常见端口对照表大全
- 如何写出好文案,不妨看看这篇(上)
- Forexclub:澳元陷入美元漩涡
- facebook-pop 概述
- vulnhub——Bulldog2
- 海思高校合作——QA培训资料
热门文章
- 企业开发:选Flex?还是HTML5?
- C# 7. ShowDialog与Form.Show区别
- Bootstrapbxslider
- C++学习之 编程基础(中国科学院大学)
- FJNU2019级第二场排位赛D题Nim题解
- 2017杭电ACM集训队单人排位赛 - 2 饶学妹的比赛
- Initializing Spring DispatcherServlet dispatcherServlet
- ES6基础:变量的解构赋值
- COM 组件设计与应用
- c#创建画布_C# – 调整图像画布大小(保留源图像的原始像素尺寸)