版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于java的快递查询API接口调用代码示例· 1、应用场景· (1)电商网站用户打开“我的订单”时调用此API显示物流信息详情。(2)电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题。(3)每日调用次数限制不超过3000次,如超过该限制,请对接订阅推送API。· 2、是否需要授权· 要Free申请服务· 3、接口描述/说明· (1)查询接口支持按照运单号查询(单个查询)。(2)接口需要指定快递单号的快递公司编码,格式不对或则编码错误都会返失败的信息。如:EMS物流单号应选择快递公司编码(EMS)查看快递公司编码
2、(3)返回的物流跟踪信息按照发生的时间升序排列。(4)接口指令1002。(5)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。(6)请求系统级参数说明:参数名称类型说明必须要求RequestDataString请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。REBusinessIDString商户ID,请在我的服务页面查看。RRequestTypeString请求指令类型:1002RDataSignStri
3、ng数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后进行URL(utf-8)编码。详细过程请查看Demo。RDataTypeString请求、返回数据类型:2-json;O· 备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)。(7)接口地址:API ID:点击申请API Key:点击申请API地址:http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx· 4、接口参数· (1)请求内容字段
4、定义参数类型说明必须要求OrderCodeString订单编号OShipperCodeString快递公司编码RLogisticCodeString物流单号R· (3)返回参数定义参数名称类型说明必须要求EBusinessIDString用户IDROrderCodeString订单编号OShipperCodeString快递公司编码RLogisticCodeString物流运单号RSuccessBool成功与否RReasonString失败原因OStateString物流状态:2-在途中,3-签收,4-问题件RTracesTraceAcceptTimeString时间RAcceptS
5、tationString描述RRemarkString备注O· 5、示例· (1)请求示例JSON格式show sourceview sourceprint?1 2 "OrderCode": "", 3 "ShipperCode": "SF", 4 &q
6、uot;LogisticCode": "118650888018"5(2)返回示例JSON格式show sourceview sourceprint?01没有物流轨迹的0203 "EBusinessID": "1109259",04 "Traces": ,05 "OrderCode": "",06
7、; "ShipperCode": "SF",07 "LogisticCode": "118461988807",08 "Success": false,09 "Reason": null1011有物流轨迹的1213 "EBusinessID": "1109
8、259",14 "OrderCode": "",15 "ShipperCode": "SF",16 "LogisticCode": "118461988807",17 "Success": true,18 "S
9、tate": 3,19 "Reason": null,20 "Traces": 21 22 "AcceptTime": "2014/06/25 08:05:37",23 &
10、#160; "AcceptStation": "正在派件.(派件人:邓裕富,电话深圳 市",24 "Remark": null25 ,26
11、; 27 "AcceptTime": "2014/06/25 04:01:28",28 "AcceptStation": "快件在 深圳集散中心 ,准备送往下一站 深圳 深圳市
12、",29 "Remark": null30 ,31 32 "AcceptTime&quo
13、t;: "2014/06/25 01:41:06",33 "AcceptStation": "快件在 深圳集散中心 深圳市",34 "Remark": null35
14、 ,36 37 "AcceptTime": "2014/06/24 20:18:58",38 "AcceptStation": "
15、已收件深圳市",39 "Remark": null40 ,41 42 "AcceptTi
16、me": "2014/06/24 20:55:28",43 "AcceptStation": "快件在 深圳 ,准备送往下一站 深圳集散中心 深圳市",44 "Remark": null45
17、 ,46 47 "AcceptTime": "2014/06/25 10:23:03",48 "AcceptSta
18、tion": "派件已签收深圳市",49 "Remark": null50 ,51 52
19、 "AcceptTime": "2014/06/25 10:23:03",53 "AcceptStation": "签收人是:已签收深圳市",54 "Remark": null55 &
20、#160; 56 57· 6、单号识别接口Demo工具.JAVA版DEMOimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;
21、import .URLEncoder;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map; /* * * 快递鸟单号识别接口 * * 技术QQ群: 456320272 * copyright: 深圳市快金数据技术服务有限公司 * * * ID和Key请到官网申请: */public class KdApiOrderDistinguish /DEMOpublic static void main(String args) KdApiOrderDistinguish api = new K
22、dApiOrderDistinguish();try String result = api.getOrderTracesByJson("3967950525457");System.out.print(result); catch (Exception e) e.printStackTrace();/电商IDprivate String EBusinessID="请到快递鸟官网申请/电商加密私钥,快递鸟提供,注意保管,不要泄漏private String AppKey="请到快递鸟官网申请/请求urlprivate String ReqURL=&quo
23、t;http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx" /* * Json方式 单号识别 * throws Exception */public String getOrderTracesByJson(String expNo) throws ExceptionString requestData= "'LogisticCode':'" + expNo + "'"Map<String, String> params = new HashMa
24、p<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8");params.put("EBusinessID", EBusinessID);params.put("RequestType", "2002");String dataSign=encrypt(requestData, AppKey, "UTF-8");params.put("DataSign&qu
25、ot;, urlEncoder(dataSign, "UTF-8");params.put("DataType", "2");String result=sendPost(ReqURL, params);/根据公司业务处理返回的信息.return result; /* * MD5加密 * param str 内容 * param charset 编码方式 * throws Exception */SuppressWarnings("unused")private String MD5(String str, Str
26、ing charset) throws Exception MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes(charset); byte result = md.digest(); StringBuffer sb = new StringBuffer(32); for (int i = 0; i < result.length; i+) int val = resulti & 0xff; if (val <= 0xf) sb.append("
27、0"); sb.append(Integer.toHexString(val); return sb.toString().toLowerCase();/* * base64编码 * param str 内容 * param charset 编码方式 * throws UnsupportedEncodingException */private String base64(String str, String charset) throws UnsupportedEncodingExceptionString encoded = base64Encode(str.getBytes(c
28、harset);return encoded; SuppressWarnings("unused")private String urlEncoder(String str, String charset) throws UnsupportedEncodingExceptionString result = URLEncoder.encode(str, charset);return result;/* * 电商Sign签名生成 * param content 内容 * param keyValue Appkey * param charset 编码方式 * throws
29、UnsupportedEncodingException ,Exception * return DataSign签名 */SuppressWarnings("unused")private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exceptionif (keyValue != null)return base64(MD5(content + keyValue, charset), charset);retur
30、n base64(MD5(content, charset), charset); /* * 向指定 URL 发送POST方法的请求 * param url 发送请求的 URL * param params 请求的参数集合 * return 远程资源的响应结果 */SuppressWarnings("unused")private String sendPost(String url, Map<String, String> params) OutputStreamWriter out = null; BufferedReader in = null; Stri
31、ngBuilder result = new StringBuilder(); try URL realUrl = new URL(url); HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection(); / 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); / POST方法 conn.setRequestMethod("POST"); / 设置通用的请求属性 conn.setRequestProperty("
32、accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setRequestProperty("Content-Type", "application/x-www-form
33、-urlencoded"); conn.connect(); / 获取URLConnection对象对应的输出流 out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); / 发送请求参数 if (params != null) StringBuilder param = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet() if(param.length()>0) param.
34、append("&"); param.append(entry.getKey(); param.append("="); param.append(entry.getValue(); /System.out.println(entry.getKey()+":"+entry.getValue(); /System.out.println("param:"+param.toString(); out.write(param.toString(); / flush输出流的缓冲 out.flush(); / 定义B
35、ufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream(), "UTF-8"); String line; while (line = in.readLine() != null) result.append(line); catch (Exception e) e.printStackTrace(); /使用finally块来关闭输出流、输入流 finally try if(out!=null) out.close(); if(in!=null
36、) in.close(); catch(IOException ex) ex.printStackTrace(); return result.toString(); private static char base64EncodeChars = new char 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'
37、, 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人工智能试题及答案详解
- 2025年科技小知识竞赛题库及答案
- 2025年继续教育公需课必修题库及参考答案
- 风电考试试题及答案
- 温室气体审核员年度工作计划与目标设定
- 城市设计工程师面试常见问题
- 心理咨询师中级成长计划及实践指南
- 2025-2026学年上海市杨浦区初三语文第一学期期中考试试卷及答案
- 鉴定人资产评估面试高频问题
- 城市更新老旧小区改造方向规划与实施方案
- 二十届四中全会测试题及参考答案
- GB/T 9254.1-2021信息技术设备、多媒体设备和接收机电磁兼容第1部分: 发射要求
- GB/T 31349-2014节能量测量和验证技术要求中央空调系统
- 风电机组现场安装验收报告
- 生产安全风险评估报告
- FDP对各疾病保护机制课件
- 提升基层应急能力筑牢防灾减灾救灾人民防线课件
- 2021年信阳市第六人民医院医护人员招聘笔试试题及答案解析
- 建筑消防设施故障维修记录表
- 地下连续墙施工记录表
- 国家开放大学金融本科《成本管理》章节测试参考答案
评论
0/150
提交评论