登录圆通开放平台,根据开发者指南中新手操作指引完成认证,申请测试接口

申请调试成功后,页面如下:

注:接口管理上面注意事项也要知晓哦!!!

准备工作都做完了,接下来进入正题,撸代码

  • 首先我们先将接口的一些信息写进配置文件,方便后续修改(若写死在代码中,后续还要更改代码)
#圆通
#隐私面单下单接口
express.YTO.api=https://openuat.yto56.com.cn:6443/open/privacy_create_adapter/v1/xL4I4D/客户编码
#客户编码
express.YTO.clientId=
#秘钥
express.YTO.secret=
#方法
express.YTO.method=privacy_create_adapter
#版本
express.YTO.edition=v1
  • 建立工具类,将官网给出的签名工具复制粘贴进来
/*** 圆通签名获取* 开放平台公共加密方法-使用commons-codec-1.11.jar进行md5加密,然后对数组进行base64编码* @param data   = param+method+v* @param secret* @return*/
public static String encryptSignForOpen(String data, String secret) {String sign;try {byte[] signByte = DigestUtils.md5(data + secret);sign = Base64.encodeBase64String(signByte);} catch (Throwable e) {log.error("加密失败.e:{}.", e.toString());sign = "ERROR";}return sign;
}

注:一定要注意base64jar包引入问题。

要使用

import com.sun.org.apache.xml.internal.security.utils.Base64;

如果使用了

import org.apache.commons.codec.binary.Base64;

就好报错:Input length must be multiple of 16 when decrypting with padded cipher

  • 接下来进入代码正题
  • 第一步根据官方给的文档设置接口参数(对接面单下单接口)

  • 第二步获取签名,将请求参数转换json字符串与方法名、版本进行拼接,然后和秘钥一起传入官方提供的方法
  • 下面是全部代码
//参数设置
YTOOrder ytoOrder = new YTOOrder();
ytoOrder.setSenderName("张三");
ytoOrder.setSenderProvinceName("江苏省");
ytoOrder.setSenderCityName("苏州市");
ytoOrder.setSenderCountyName("工业园区");
ytoOrder.setSenderAddress("金鸡湖大道88号");
ytoOrder.setSenderMobile("15900521555");ytoOrder.setRecipientName("李四");
ytoOrder.setRecipientProvinceName("江苏省");
ytoOrder.setRecipientCityName("徐州市");
ytoOrder.setRecipientCountyName("泉山区");
ytoOrder.setRecipientAddress("湖中路");
ytoOrder.setRecipientMobile("021-5985121");
ytoOrder.setRemark("测试");List<OrderIncrementDto> increment = new ArrayList<>();
OrderIncrementDto orderIncrementDto = new OrderIncrementDto();
orderIncrementDto.setType(4);
orderIncrementDto.setAmount(new BigDecimal(888));
increment.add(orderIncrementDto);
ytoOrder.setIncrements(increment);
List<OrderGoodsDto> goods = new ArrayList<>();
OrderGoodsDto goodsDto = new OrderGoodsDto();
goodsDto.setName("mobile");
goodsDto.setWeight(new BigDecimal(5));
goodsDto.setLength(new BigDecimal(10));
goodsDto.setWidth(new BigDecimal(20));
goodsDto.setHeight(new BigDecimal(5));
goodsDto.setPrice(new BigDecimal(100));
goodsDto.setQuantity(1);
goods.add(goodsDto);
ytoOrder.setGoods(goods);
//生成7位随机物流单号
ytoOrder.setLogisticsNo(S.newRandomNum(7));
String jsonString = JSON.toJSONString(ytoOrder);
String data = jsonString + PropertiesUtils.get("express.YTO.method") + PropertiesUtils.get("express.YTO.edition");
//签名
String sign = AutographUnits.encryptSignForOpen(data, PropertiesUtils.get("express.YTO.secret"));
//封装参数
Map<String, String> map = new HashMap<>();
//获取时间戳
map.put("timestamp", String.valueOf(System.currentTimeMillis()));
map.put("param", jsonString);
map.put("sign", sign);
map.put("format", "JSON");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json; charset=UTF-8"));
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity(map, headers);
ResponseEntity<Map> response = restTemplate.postForEntity(PropertiesUtils.get("express.YTO.api"), request, Map.class, new Object[0]);
Map order = response.getBody();
return order;
  • 请求结果会将三段码返回出来及快递单号

注:拿到返回结果后就需要自己设计面单了,根据官网面单模板去设计与三段码、单号进行绑定。最后一定要记得要和网点人确认哦!!!(接口管理里会看到注意事项)

 最后大家要是觉得有用的话给博主一个赞哦!!!

JAVA对接圆通API相关推荐

  1. JAVA对接百度API提交普通收录/SEO

    JAVA对接百度API提交普通收录/SEO 说明: 为了增加内容的曝光量,除了主动让百度爬虫爬取之外,还有普通收录的API提交,程序主动向百度搜索推送资源,缩短爬虫发现网站链接的时间. 官网地址:ht ...

  2. java对接物联网api对接_一种对接物联网云平台的信息交互方法以及中间件系统与流程...

    本发明涉及物联网技术领域,特别是一种对接物联网云平台的信息交互方法以及中间件系统. 背景技术: 物联网是继计算机.互联网和移动通信之后的又一次信息产业的革命性发展,在互联网和移动互联网高速发展的时代, ...

  3. 基于java的圆通快递单号自动识别api接口代码实例

    一.产品介绍 快递单号识别,输入运单号自动识别物流公司,实时返回对应物流公司编码.查询单号时,返回的结果可能存在一个或多个物流公司编码,快递鸟大数据平台通过智能分析,实时更新单号库,保障物流公司编码准 ...

  4. java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录

    java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录 1.准备工作 1.1 接口调用账户 1.2 下载 金蝶星空云 ...

  5. java对接国内1200家快递公司进行快递寄件示例代码

    通过java对接国内1200家快递公司进行快递寄件操作,该Java寄快递接口支持顺丰.京东.韵达.申通.圆通.邮政.天天.百世等主流快递公司. 以下是寄快递接口的具体示例代码,如果有疑问可以随时联系官 ...

  6. 如何更优雅地对接第三方API

    如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/ ...

  7. JAVA对接支付宝支付(超详细,一看就懂)

    Java对接支付宝支付 更多内容 冷文博客: 传送门 引入 为什么要发这篇帖子呢?原因很简单,就是因为在一个稍稍正规一点的应用上都会有支付这个环节,我们日常的在线支付如今包括支付宝,微信钱包,QQ钱包 ...

  8. java对接天眼查接口,天眼查提供案例方法过期最新案例

    java对接天眼查接口 1.先了解天眼查是用来做什么的 2.确定账号 3.登录账号,找到数据接口,找到token,调用示例 1.先了解天眼查是用来做什么的 天眼查,是中国领先的商业查询平台 ,已收录全 ...

  9. JAVA对接发送SMS短信服务

    JAVA对接发送SMS短信服务 短信服务申请 JAVA对接 代码编写 配置类 SmsComponent nacos配置中心--对应上面读取的参数 调用 Vue前端测试代码 效果 结语 短信服务申请 网 ...

  10. JAVA对接短信通知接口

    JAVA对接验证码短信接口DEMO示例 本文为您提供了JAVA语言版本的验证码短信接口对接DEMO示例 新用户注册·验证码短信.语音解决方案 * 接口类型:触发短信接口,支持发送验证码短信.订单通知短 ...

最新文章

  1. 合肥工业大学—SQL Server数据库实验五:创建和删除索引
  2. 深信服5月26日笔试
  3. php用w获取的星期不对,php获取时间是星期几的方法是什么
  4. mysql保留2位小数字段如何设置 浮点数
  5. AOP||动态代理||AOP专业术语;
  6. cordova 插件开发
  7. js里的面向对象分析-(创建实例化对象)
  8. 使用loadrunner的vb vuser写脚本 运行报错:vbascriptext.dll -25277 -25240
  9. 编程语言对比 字符串
  10. HTML之文本相关标签
  11. 解析oracle的dump文件,使用awk来解析dump文件
  12. 谷歌seo外链Backlinks研究工具推荐
  13. linux服务器安装字体,删除字体,详细步骤
  14. Ocelot.Authorization.Middleware.AuthorizationMiddleware[0] requestId: 0HMJ300E5APNA:00000002...
  15. vue3.2+element-plus+ts节假日管理界面
  16. Node如何去除短视频水印?
  17. rabbitmq添加插件和配置文件的添加
  18. linux中'.'的作用
  19. 走进Vue.js 1.0-姜威-专题视频课程
  20. 【学习机器学习】实验——聚类算法性能度量

热门文章

  1. 你知道这些SOLIDWORKS零件图知识吗?
  2. 计算机网络(一)图解:计算机网络五层体系结构
  3. 常用的浏览器及其内核
  4. 以Maya为引擎的小游戏:是男Yin就坚持2K帧
  5. SAN:存储区域网络及其协议
  6. 关于flash跨域问题
  7. 【JavaSE基础 】Eclipse教程
  8. 我的iPhone桌面
  9. Camera 360使用之坑
  10. 自建电驴服务器,电驴服务器怎么连接 eMule连接服务器教程