1、常用快递 API 接口方案电商企业从接收订单-配货- 打印快递单到后期的快递员收件-快递配送-轨迹查询- 签收短信通知等,都需要快递接口的接入。整理目前较为常见的接口 demo 如下:对接流程:快递鸟网站申请接口对接联调测试上线预约取件-在线预约寄件import java.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import
2、 .HttpURLConnection;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;import java.security.MessageDigest; public class KdGoldAPIDemo /电商 IDprivate String EBusinessID=“申请“;/电商加密私钥,注意保管,不要泄漏private String AppKey=“
3、申请“;/测试请求 urlprivate string ReqURL = “http:/testapi.kdniao.cc:8081/api/oorderservice“;/正式请求 url/private string ReqURL = “http:/api.kdniao.cc/api/OOrderService“;/* Json 方式 在线下单* throws Exception */public String orderOnlineByJson() throws ExceptionString requestData= “OrderCode: 012657700312,“ +“Shipp
4、erCode:YTO,“ +“PayType:1,“ +“ExpType:1,“ +“Cost:1.0,“ +“OtherCost:1.0,“ +“Sender:“ +“ +“Company:LV,Name:Taylor,Mobile:15018442396,ProvinceName:上海,CityName:上海,ExpAreaName:青浦区,Address:明珠路 73 号,“ +“Receiver:“ +“ +“Company:GCCUI,Name:Yann,Mobile:15018442396,ProvinceName:北京,CityName:北京,ExpAreaName:朝阳区,Ad
5、dress:三里屯街道雅秀大厦,“ +“Commodity:“ +“ +“GoodsName:鞋子,Goodsquantity:1,GoodsWeight:1.0,“ +“AddService:“ +“ +“Name:COD,Value:1020,“ +“Weight:1.0,“ +“Quantity:1,“ +“Volume:0.0,“ +“Remark:小心轻放,“ +“Commodity:“ +“ +“GoodsName:鞋子,“ +“Goodsquantity:1,“ +“GoodsWeight:1.0“ +“;Map params = new HashMap();params.put
6、(“RequestData“, urlEncoder(requestData, “UTF-8“);params.put(“EBusinessID“, EBusinessID);params.put(“RequestType“, “1001“);String dataSign=encrypt(requestData, AppKey, “UTF-8“);params.put(“DataSign“, urlEncoder(dataSign, “UTF-8“);params.put(“DataType“, “2“);String result=sendPost(ReqURL, params);/根据公
7、司业务处理返回的信息return result;/* MD5 加密* param str 内容 * param charset 编码方式* throws Exception */SuppressWarnings(“unused“)private String MD5(String str, String charset) throws Exception MessageDigest md = MessageDigest.getInstance(“MD5“);md.update(str.getBytes(charset);byte result = md.digest();StringBuffe
8、r sb = new StringBuffer(32);for (int i = 0; i params) OutputStreamWriter out = null;BufferedReader in = null; StringBuilder result = new StringBuilder(); try URL realUrl = new URL(url);HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();/ 发送 POST 请求必须设置如下两行conn.setDoOutput(true);con
9、n.setDoInput(true);/ POST 方法conn.setRequestMethod(“POST“);/ 设置通用的请求属性conn.setRequestProperty(“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“, “ap
10、plication/x-www-form-urlencoded“);conn.connect();/ 获取 URLConnection 对象对应的输出流out = new OutputStreamWriter(conn.getOutputStream(), “UTF-8“);/ 发送请求参数 if (params != null) StringBuilder param = new StringBuilder(); for (Map.Entry entry : params.entrySet() if(param.length()0)param.append(“ param.append(en
11、try.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();/ 定义 BufferedReader 输入流来读取 URL 的响应in = new BufferedReader(new InputStreamReader(conn.
12、getInputStream(), “UTF-8“);String line;while (line = in.readLine() != null) result.append(line); catch (Exception e) e.printStackTrace();/使用 finally 块来关闭输出流、输入流finallytryif(out!=null)out.close();if(in!=null)in.close();catch(IOException ex)ex.printStackTrace();return result.toString();电子面单打印import ja
13、va.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import com.sun.org.apache.xerces.inte
14、rnal.impl.dv.util.Base64;import java.security.MessageDigest; public class KdGoldAPIDemo /电商 IDprivate String EBusinessID=“申请“;/电商加密私钥,注意保管,不要泄漏private String AppKey=“申请“;/请求 url, 正式环境地址:http:/api.kdniao.cc/api/Eorderservice 测试环境地址:http:/testapi.kdniao.cc:8081/api/EOrderServiceprivate String ReqURL=“
15、http:/testapi.kdniao.cc:8081/api/Eorderservice“;/* Json 方式 电子面单* throws Exception */public String orderOnlineByJson() throws ExceptionString requestData= “OrderCode: 012657700387,“ +“ShipperCode:SF,“ +“PayType:1,“ +“ExpType:1,“ +“Cost:1.0,“ +“OtherCost:1.0,“ +“Sender:“ +“ +“Company:LV,Name:Taylor,Mo
16、bile:15018442396,ProvinceName:上海,CityName: 上海,ExpAreaName: 青浦区,Address: 明珠路 73 号,“ +“Receiver:“ +“ +“Company:GCCUI,Name:Yann,Mobile:15018442396,ProvinceName:北京,CityName: 北京,ExpAreaName: 朝阳区,Address: 三里屯街道雅秀大厦,“ +“Commodity:“ +“ +“GoodsName:鞋子,Goodsquantity:1,GoodsWeight:1.0,“ +“Weight:1.0,“ +“Quanti
17、ty:1,“ +“Volume:0.0,“ +“Remark:小心轻放,“ +“IsReturnPrintTemplate:1“;Map params = new HashMap();params.put(“RequestData“, urlEncoder(requestData, “UTF-8“);params.put(“EBusinessID“, EBusinessID);params.put(“RequestType“, “1007“);String dataSign=encrypt(requestData, AppKey, “UTF-8“);params.put(“DataSign“,
18、 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, String charset) throws Exception MessageDigest md =
19、MessageDigest.getInstance(“MD5“);md.update(str.getBytes(charset);byte result = md.digest();StringBuffer sb = new StringBuffer(32);for (int i = 0; i params) OutputStreamWriter out = null;BufferedReader in = null; StringBuilder result = new StringBuilder(); try URL realUrl = new URL(url);HttpURLConnec
20、tion conn =(HttpURLConnection) realUrl.openConnection();/ 发送 POST 请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);/ POST 方法conn.setRequestMethod(“POST“);/ 设置通用的请求属性conn.setRequestProperty(“accept“, “*/*“);conn.setRequestProperty(“connection“, “Keep-Alive“);conn.setRequestProperty(“user-agent“
21、,“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)“);conn.setRequestProperty(“Content-Type“, “application/x-www-form-urlencoded“);conn.connect();/ 获取 URLConnection 对象对应的输出流out = new OutputStreamWriter(conn.getOutputStream(), “UTF-8“);/ 发送请求参数 if (params != null) StringBuilder param = new Strin
22、gBuilder(); for (Map.Entry entry : params.entrySet() if(param.length()0)param.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 输
23、出流的缓冲out.flush();/ 定义 BufferedReader 输入流来读取 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 块来关闭输出流、输入流finallytryif(out!=null)out.close();if(
24、in!=null)in.close();catch(IOException ex)ex.printStackTrace();return result.toString();快递查询(小量)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL
25、;import .URLEncoder;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map; public class KdniaoTrackQueryAPI /DEMOpublic static void main(String args) KdniaoTrackQueryAPI api = new KdniaoTrackQueryAPI();try String result = api.getOrderTracesByJson(“ANE“, “210001633605“);Sys
26、tem.out.print(result); catch (Exception e) e.printStackTrace();/电商 IDprivate String EBusinessID=“申请“;/电商加密私钥,注意保管,不要泄漏private String AppKey=“申请“;/请求 urlprivate String ReqURL=“http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx“;/* Json 方式 查询订单物流轨迹* throws Exception */public String getOrderTraces
27、ByJson(String expCode, String expNo) throws ExceptionString requestData= “OrderCode:,ShipperCode:“ + expCode + “,LogisticCode:“ + expNo + “;Map params = new HashMap();params.put(“RequestData“, urlEncoder(requestData, “UTF-8“);params.put(“EBusinessID“, EBusinessID);params.put(“RequestType“, “1002“);S
28、tring dataSign=encrypt(requestData, AppKey, “UTF-8“);params.put(“DataSign“, 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
29、String MD5(String str, String 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 params) OutputStreamWriter out = null;BufferedReader in = null; StringBuilder
30、 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(“accept“, “*/*“);conn.setReque
31、stProperty(“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-urlencoded“);conn.connect();/ 获取 URLConnection 对象对应的输出流out = new OutputStreamWriter(conn.getOutputStre
32、am(), “UTF-8“);/ 发送请求参数 if (params != null) StringBuilder param = new StringBuilder(); for (Map.Entry entry : params.entrySet() if(param.length()0)param.append(“ param.append(entry.getKey();param.append(“=“);param.append(entry.getValue(); /System.out.println(entry.getKey()+“:“+entry.getValue();/Syst
33、em.out.println(“param:“+param.toString();out.write(param.toString();/ flush 输出流的缓冲out.flush();/ 定义 BufferedReader 输入流来读取 URL 的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), “UTF-8“);String line;while (line = in.readLine() != null) result.append(line); catch (Exception e) e.pr
34、intStackTrace();/使用 finally 块来关闭输出流、输入流finallytryif(out!=null)out.close();if(in!=null)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, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c,
35、d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, / ; public static String base64Encode(byte data) StringBuffer sb = new StringBuffer(); int len = data.length; int i = 0; int b1, b2, b3; while (i 2); sb.append(base64EncodeChars(b1 sb.append(base64E
36、ncodeChars(b1 sb.append(base64EncodeChars(b2 sb.append(base64EncodeChars(b1 sb.append(base64EncodeChars(b2 sb.append(base64EncodeCharsb3 return sb.toString(); 快递查询(日查询500)import java.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader;import java.io.OutputStreamWriter;impo
37、rt java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import java.security.MessageDigest; /* 快递鸟订阅推送 2.0 接口* 技术 QQ: 4009633321* 技术 QQ 群 : 200121393* see: http:/ copyright: 深圳市快金数据技术服务有限公司* * ID 和 Key 请到官网申请:http
38、:/ class KdniaoSubscribeAPI /DEMOpublic static void main(String args) KdniaoSubscribeAPI api = new KdniaoSubscribeAPI();try String result = api.orderTracesSubByJson();System.out.print(result); catch (Exception e) e.printStackTrace();/电商 IDprivate String EBusinessID=“申请“;/电商加密私钥,注意保管,不要泄漏private Stri
39、ng AppKey=“申请“;/测试请求 urlprivate String ReqURL = “http:/testapi.kdniao.cc:8081/api/dist“;/正式请求 url/private String ReqURL = “http:/api.kdniao.cc/api/dist“;/* Json 方式 物流信息订阅* throws Exception */public String orderTracesSubByJson() throws ExceptionString requestData=“OrderCode: SF201608081055208281,“ +“
40、ShipperCode:SF,“ +“LogisticCode:3100707578976,“ +“PayType:1,“ +“ExpType:1,“ +“CustomerName:,“+“CustomerPwd:,“ +“MonthCode:,“ +“IsNotice:0,“ +“Cost:1.0,“ +“OtherCost:1.0,“ +“Sender:“ +“ +“Company:LV,Name:Taylor,Mobile:15018442396,ProvinceName:上海,CityName:上海,ExpAreaName:青浦区,Address:明珠路 73 号,“ +“Receiv
41、er:“ +“ +“Company:GCCUI,Name:Yann,Mobile:15018442396,ProvinceName:北京,CityName:北京,ExpAreaName:朝阳区,Address:三里屯街道雅秀大厦,“ +“Commodity:“ +“ +“GoodsName:鞋子,Goodsquantity:1,GoodsWeight:1.0,“ +“Weight:1.0,“ +“Quantity:1,“ +“Volume:0.0,“ +“Remark:小心轻放“;Map params = new HashMap();params.put(“RequestData“, urlE
42、ncoder(requestData, “UTF-8“);params.put(“EBusinessID“, EBusinessID);params.put(“RequestType“, “1008“);String dataSign=encrypt(requestData, AppKey, “UTF-8“);params.put(“DataSign“, urlEncoder(dataSign, “UTF-8“);params.put(“DataType“, “2“);String result=sendPost(ReqURL, params);/根据公司业务处理返回的信息return res
43、ult;/* MD5 加密* param str 内容 * param charset 编码方式* throws Exception */SuppressWarnings(“unused“)private String MD5(String str, String charset) throws Exception MessageDigest md = MessageDigest.getInstance(“MD5“);md.update(str.getBytes(charset);byte result = md.digest();StringBuffer sb = new StringBuf
44、fer(32);for (int i = 0; i params) OutputStreamWriter out = null;BufferedReader in = null; StringBuilder result = new StringBuilder(); try URL realUrl = new URL(url);HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();/ 发送 POST 请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);/
45、 POST 方法conn.setRequestMethod(“POST“);/ 设置通用的请求属性conn.setRequestProperty(“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
46、-urlencoded“);conn.connect();/ 获取 URLConnection 对象对应的输出流out = new OutputStreamWriter(conn.getOutputStream(), “UTF-8“);/ 发送请求参数 if (params != null) StringBuilder param = new StringBuilder(); for (Map.Entry entry : params.entrySet() if(param.length()0)param.append(“ param.append(entry.getKey();param.append(“=“);param.append(entry.getValue(); System.out.println(entry.getKey()+“:“+entry.getValue();System.out.pri