Java 快递物流查询 api对接

Java 快递物流查询 api对接

2018年08月24日 09:44:41 我跟吴彦祖四六开 阅读数:73 标签: java 物流查询 更多

个人分类: Java

这里只是记录一下。第三方都会提供很详细的demo和技术文档,或者安排专业人员进行联调。

第三方物流接口对比

快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据。目前常用的有快递鸟快递100聚合数据阿里云物流等。

快递鸟即时API可以查询3000次,3000以上接订阅接口,统一接口模式接入,常用快递均支持查询,还有订阅API、在线下单API、电子面单API,接口均不收取费用,没有要求用户添加外链,支持418家国内外快递物流查询。

快递100每天可以免费查询2000次,超过2000次收费,每次0.06~0.1元不等,如果查询的量大的话可以降低费用,免费的接口有几家常用快递不支持接口模式,只支持htmlAPI,要求用户添加外链,支持300多家国内外快递物流查询。

聚合数据按次数购买,1元100,300元20000次。

阿里云:【快递查询api,快递物流单号识别】近500+家全国快递查询API,1个单号,自动识别,稳定高效,包括:顺丰、申通、圆通、韵达、中通、汇通、EMS、天天、国通、德邦、宅急送等几百家快递物流查询接口。收费标准:按照次数购买。

接口示例

因为公司用的都是阿里云的产品,所以这里最后选择了阿里云的物流API。按照次数为单位购买的,可免费试用100次。
这里写图片描述

JAVA接入

@Controller
@RequestMapping("/api/kdwl")
public class ApiKdwlController {private Logger logger = LoggerFactory.getLogger(ApiKdwlController.class);// 物流信息缓存间隔暂定3个小时private static final Long maxCacheTime = 1000 * 60 * 60 * 3L;/**快递物流查询接口商品购买地址:https://market.aliyun.com/products/56928004/cmapi022273.htmlString host = "http://kdwlcxf.market.alicloudapi.com"; //服务器String path = "/kdwlcx"; //接口地址*/@RequestMapping("/q_wl_info")@ResponseBodypublic Map<String, Object> queryWlInfo(String no, String type) {if (StringUtils.isEmpty(no)) {throw new BusiException(E.INVALID_PARAMETER, "请传入运单号");}// no ="801132164062135036"// String host = "http://kdwlcxf.market.alicloudapi.com";// String path = "/kdwlcx";// String host = "https://wdexpress.market.alicloudapi.com";// String path = "/gxali";String host = "https://wuliu.market.alicloudapi.com";String path = "/kdi";String method = "GET";String appcode = "fadde964aead4dcabfbb7dfac600c4sd";  // !!! 替换这里填写你自己的AppCode 请在买家中心查看Map<String, String> headers = new HashMap<String, String>();headers.put("Authorization", "APPCODE " + appcode); //格式为:Authorization:APPCODE 83359fd73fe11248385f570e3c139xxxMap<String, String> querys = new HashMap<String, String>();querys.put("no", no);  // !!! 请求参数  运单号if (StringUtils.isNotEmpty(type)) {querys.put("type", type);// !!! 请求参数   快递公司}// 物流信息String returnStr = "";Jedis jedis = RedisPool.getJedis();Map<String, Object> returnMap = new HashMap<String, Object>();try {logger.info("---------开始查询运单号为{}的物流信息", no);// 只有当redis里面有缓存,且缓存时间不超过最大缓存时长,直接取缓存数据if (jedis.hexists(Rkey.KDWL_INFO_CACHE, no)) {// redis已经有缓存String kdwlInfo = jedis.hget(Rkey.KDWL_INFO_CACHE, no);if (StringUtils.isNotEmpty(kdwlInfo)) {Map<String, Object> kdwlInfoToMap =  JsonUtils.toBean(kdwlInfo, new TypeReference<Map<String, Object>>() {});Long cacheBeginTime = (Long) kdwlInfoToMap.get("queryTime");// 计算已经缓存时长if (System.currentTimeMillis() - cacheBeginTime < maxCacheTime) {// 直接取缓存// kdwlInfoToMap.remove("queryTime");logger.info("---------此次查询的物流信息来至于Redis缓存");logger.info("---------查询运单号为{}的物流信息结束,物流信息:{}", no, kdwlInfo);return kdwlInfoToMap;} else {// TODO: 2018/8/23 这里已经存过缓存时间 如果缓存数据得到的 物流的状态是已签收,是否需要重新查询??还是直接返回}}}// 重新查询最新物流信息HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);// 从返回信息中拿到returnStr = EntityUtils.toString(response.getEntity());if (StringUtils.isEmpty(returnStr)) {throw new BusiException(E.INVALID_REQUEST, "查询物流信息失败");}// 重新缓存 [这里包含运单号输错 也缓存 避免有人故意调我们物流接口 次数用完]returnMap = JsonUtils.toBean(returnStr, new TypeReference<Map<String, Object>>() {});if (returnMap != null) {returnMap.put("queryTime", System.currentTimeMillis());}jedis.hset(Rkey.KDWL_INFO_CACHE, no, JsonUtils.toJson(returnMap));logger.info("---------此次查询的物流信息来至于重新查询");logger.info("---------查询运单号为{}的物流信息结束,物流信息:{}", no, returnStr);} catch (Exception e) {e.printStackTrace();} finally {RedisPool.returnJedis(jedis);}return returnMap;}
}

接口说明:

########################################## 物流查询 #########################################################
1.根据运单号查询物流信息
url:api/kdwl/q_wl_infoparam:no: 801132164062135036       // 运单号  (必传)type: zto        // 快递公司代码: 可不填自动识别,填了查询更快 (可不传) return://  错误码 错误信息    描述201 快递单号错误  快递单号错误203 快递公司不存在 快递公司不存在204 快递公司识别失败    快递公司识别失败205 没有信息    没有信息207 该单号被限制,错误单号 该单号被限制,错误单号;一个单号对应多个快递公司,请求须指定快递公司// 订单号错误 或者其他情况{"status": "203","msg": "快递公司不存在","result": "","queryTime": 1535013305603}// 正确结果{"status": "0",  // 请求状态码"msg": "ok",   // 返回信息"result": {"number": "801132164062135036",   // 运单号"type": "YTO",   // 快递公司代码"list": [{ //物流信息"time": "2018-03-09 11:59:26","status": "【石家庄市】 快件已在 【长安三部】 签收,签收人: 本人, 感谢使用中通快递,期待再次为您服务!"}, {"time": "2018-03-09 09:03:10","status": "【石家庄市】 快件已到达 【长安三部】(0311-85344265),业务员 容晓光(13081105270) 正在第1次派件, 请保持电话畅通,并耐心等待"}, {"time": "2018-03-08 23:43:44","status": "【石家庄市】 快件离开 【石家庄】 发往 【长安三部】"}, {"time": "2018-03-08 21:00:44","status": "【石家庄市】 快件到达 【石家庄】"}, {"time": "2018-03-07 01:38:45","status": "【广州市】 快件离开 【广州中心】 发往 【石家庄】"}, {"time": "2018-03-07 01:36:53","status": "【广州市】 快件到达 【广州中心】"}, {"time": "2018-03-07 00:40:57","status": "【广州市】 快件离开 【广州花都】 发往 【石家庄中转】"}, {"time": "2018-03-07 00:01:55","status": "【广州市】 【广州花都】(020-37738523) 的 马溪 (18998345739) 已揽收"}],"deliverystatus": "3",  /*  1.在途中 2.正在派件 3.已签收 4.派送失败  */"issign": "1",    /*  是否签收  1:已签收 0:未签收*/"expName": "圆通速递",   // 快递名称"expSite": "www.yto.net.cn ",    // 快递公司网址"expPhone": "95554"     // 快递公司联系电话 },"queryTime": 1535012513032   //请求时间 不管}###############################################################################################################
  •  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25210.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eBay API文档

1.创建eBay接入API教程网址 https://developer.ebay.com/api-docs/static/creating-edp-account.html 前言&#xff1a;API参考&#xff1a;资源 该分析API检索呼叫限制和数据被用于RESTful API中及其关联的资源设置配额。对getRateLimits和getUserRateLimits进行的调用的响应…

Java对接外部API这个问题

java对接外部api 需求提出解决思路编码测试 总结 差不多有一个多月没有更新blog&#xff0c;也是出于工作原因以及最近搬家在看合适的窝点导致断更。今天有一个小学妹来问我可以将我其他项目的api接入到我现在的项目中吗&#xff1f;我回答“可以”&#xff01;我今天就写一篇关…

Midjourney API 接口对接历程

Midjourney是一个基于Discord环境的画图工具&#xff0c;它提供API接口用于扩展功能。对于程序开发者来说&#xff0c;Midjourney只能在Discord环境下使用&#xff0c;这限制了它的使用范围。本文将介绍使用Midjourney的API接口进行开发发过程中遇到的一些问题。 内测地址&…

JAVA对接亚马逊SPAPI

亚马逊官方文档Amazon-Services-APIAmazon API Services for Selling Partners and Shippers.https://developer-docs.amazon.com/ 1注册AWS账号&#xff0c;填写个人信息&#xff0c;填写银行信息&#xff0c;手机验证&#xff08;AWS网址&#xff09; 2在AWS里面创建IAM用户…

深信服防火墙API对接

深信服防火墙千呼万唤的API终于在8.0.35版本实现了。具体的API文档可以登录防火墙的后台WEB界面上的右上角点开即可查看&#xff1a; 根本api文档&#xff0c;首先先新建一个api账号&#xff0c;“用户可以登录WebUI通过"系统->管理员账号"栏将默认的账户勾上WEBA…

使用Swagger作API接口对接

1、当前项目中存在的问题 在前后端分离的项目中&#xff0c;如手机端与接口端对接、WEB项目调用API&#xff0c;进行接口对接的方式一般是先创建WORD文档&#xff0c;然后把各个接口的链接、参数、访问方式、说明等信息粘贴进去。在制作文档的过程中&#xff0c;如果稍有不注意…

API对接实战

目录 一 背景 二 了解B公司接口的基础约定 三 基础域名 四 请求及相应格式说明 五 确定要对接哪些API 六 根据API文档&#xff0c;编写一些基础工具类。 七 根据API文档&#xff0c;编写必要的DTO 八 针对每个API方法&#xff0c;进行对接 九 对接代码结构 十 一些对…

企业微信api对接

用的是wxJava&#xff0c;但是wxJava文档真滴不清楚&#xff0c;都是jar全局搜索url/看方法试的。 坑0&#xff1a; 通讯录不仅要开通api&#xff0c;还得开通是“可编辑”不然是“只读”&#xff08;然后还可以设置人员自己编辑后推动事件服务器&#xff09;挺不错的 坑一&a…

WebAPI接口对接

WebAPI接口对接&#xff1a; 提示&#xff1a;此片文章是总结接口对接经验其中包括模型的建立以及统一的调用 学习内容&#xff1a; 数据对象模型的建立如何规范定义模型统一的请求方法系统中model的命名 数据对象的建立 接口的数据传输对象包括Request对象和Response对象 …

百度翻译API对接

百度翻译开发平台&#xff1a;http://api.fanyi.baidu.com/api/trans/product/index 打开如上链接&#xff1a; 下载SDK 导入SDK 新建一个工程&#xff08;zyq-translate&#xff09;&#xff0c;并新建包&#xff08;com.zyq.translate&#xff09; 解压SDK&#xff0c;得…

对接海康ISC平台API

开发文档&#xff1a;海康开放平台。&#xff08;视频预览、抓图等能力&#xff09;

Unity Layer(图层)简介

图层基础 1. 当一个项目或者场景中包含很多对象时&#xff0c;通常难以组织。有的时候&#xff0c;希望一些游戏对象只能被某些摄像机看到或者只会被某些灯光照亮&#xff1b;有时&#xff0c;你可能希望只让某些类型的对象之间发生碰撞&#xff1b;在Unity中用图层处理上述需求…

【闲玩】看看ChatGpt认为的各级别Unity程序该掌握哪些技术

1.初级Unity开发 2.中级Unity开发 3.高级Unity开发 4.资深Unity开发 结语&#xff1a; 仅供娱乐哈&#xff0c;不过还是可以参考的。 不得不说。。。ChatGpt是真的强啊。。。

图形学之Unity渲染管线流程分析

文章来源&#xff1a; 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程http://www.tpyjn.cn/ 学习通http://www.tsgmyy.cn/ 下图是《Unity Shader 入门精要》一书中的渲染流程图&#xff1b; ApplicationS…

Unity渲染工程收集

NPR 非真实渲染 UnityURP-AnimeStyleCelShader SSR 屏幕空间反射 UnitySSReflectionURP Skin 皮肤 Unity-URP-SkinSSSLUTGenerator

art-template渲染大坑,从后台接受到的数据正确,但渲染出来的都是空白

问题描述 后台使用的是art-template模板引擎和express // 部分代码如下 router.get(/advert/add, (req, res, next) > {res.render(advert_add.html); });前端使用的art-template 重点看下面画着的部分 // 代码如下 {{ extend ./layout.html }}{{ block style }} {{ /blo…

[Unity3D热更框架] LuaMVC简介

1.什么是LuaMVC 从工作以来一直从事工业三维仿真软件/AR软件的开发&#xff0c;每个项目开发周期短&#xff0c;项目从Demo到完(huang)结(le)时间较为紧凑&#xff0c;因此需要一个便捷的开发框架作为支撑&#xff0c;以适应不同的项目需求&#xff0c;而且需要尽可能覆盖多个终…

一张图了解OpenGL的渲染架构

初学者在初学OpenGL时&#xff0c;很多时候会对OpenGL的渲染架构感到困惑&#xff0c;不清楚它是怎么一个渲染流程&#xff0c;常将Arributes直接传递到片元着色器&#xff0c;或者为了将属性直接传递到片元着色器&#xff0c;而通过uniform传递到片元着色器等&#xff0c;这样…

GacUI:跨平台和渲染器

GacUI&#xff1a;跨平台和渲染器 https://github.com/vczh/GacUIBlog UI库跨平台的方法无非就是每个平台写一次。而如何把更多的共同点抽取出来&#xff0c;尽量的减少每个平台写一次的部分&#xff0c;是每一个跨平台的UI库的重点之一。GacUI的设计比较直接&#xff0c;所有…