博客> 圆通快递快速免费对接快递鸟单号查询api接口
圆通快递快速免费对接快递鸟单号查询api接口
2小时前 评论:0 阅读:131 爱微影
电子面单接口 快递鸟接口 圆通电子面单 中通电子面单

 Enter your image description here:

快递查询API接口是使用的物流单 号即可实现查询物流信息。主要应用在电商商城、ERP系统商、WMS系统商、快递柜、银行等企业。多家快递物流公司接口统一接入,建议对接接口提供商,一次性可以接入多家快递,在后期的技术维护也会省下很多工作。

目前快递查询API接口有两种实现方式,一种是主动查询,一种是订阅接口推送数据。以快递鸟接口为例(接口对接需要接口秘钥,这里用的是测试的,不能够正式使用,可以到 快递鸟 官网申请,是免费申请秘钥的)最后附有一个的demo,更多demo可登陆快递鸟网站查询。

一.主动查询(即时查询API) 1)接口规则 a、查询接口支持按照运单号查询(单个查询,并发不超过10个/S)。 b、指定的物流运单号选择相应的快递公司编码,格式不对或则编码错误都会返失败的信息。如圆通快递物流单号应选择圆通快递公司编码(YTO) c、返回的物流跟踪信息按照发生的时间升序排列。 d、接口指令1002。 e、请求地址:快递鸟注册 2)系统级和应用级输入参数系统级输入参数  Enter your image description here:

3)返回结果参数  Enter your image description here:

4)JSON请求示例

{ “OrderCode”: “”, “ShipperCode”: “SF”, “LogisticCode”: “118650888018” } // "YTO"为圆通快递公司编码,其他编码可在快递鸟官网下载 5)JSON返回示例 //没有物流轨迹的 { “EBusinessID”: “1109259”, "Traces":[], “OrderCode”: “”, “ShipperCode”: “SF”, “LogisticCode”: “118461988807”, “Success”: true, “Reason”: null } //有物流轨迹的 { “EBusinessID”: “1109259”, "OrderCode":"", “ShipperCode”: “SF”, “LogisticCode”: “118461988807”, “Success”: true, "CallBack":"", “State”: 3, “Reason”: null, "Traces":[ { "AcceptTime": "2014/06/25 08:05:37", "AcceptStation": "正在派件..(派件人:邓裕富,电话:18718866310)[深圳 市]", "Remark": null }, { "AcceptTime": "2014/06/25 04:01:28", "AcceptStation": "快件在 深圳集散中心 ,准备送往下一站 深圳 [深圳市]", "Remark": null }, { "AcceptTime": "2014/06/2501:41:06", "AcceptStation": "快件在 深圳集散中心 [深圳市]", "Remark": null }, { "AcceptTime": "2014/06/24 20:18:58", "AcceptStation": "已收件[深圳市]", "Remark": null }, { "AcceptTime": "2014/06/24 20:55:28", "AcceptStation": "快件在 深圳 ,准备送往下一站 深圳集散中心 [深圳市]", "Remark": null }, { "AcceptTime": "2014/06/25 10:23:03", "AcceptStation": "派件已签收[深圳市]", "Remark": null }, { "AcceptTime": "2014/06/25 10:23:03", "AcceptStation": "签收人是:已签收[深圳市]", "Remark": null } ] 二.订阅接口推送数据(物流跟踪API) 订阅查询接口是定制化服务,用户可将订单信息订阅给快递公司,快递公司更新轨迹后,将实时转换成标准接口形式,推送给用户,起到实时推送的作用,提高效率。 同时用户订阅的数据还能选择是否通知快递员上门,实现在线下单功能。另外,快递鸟还有在途监控、电子面单等其他的接口方案,可以根据公司需求来选择。 1)接口规则 a、订单接收的信息(分给了的网点,业务员的信息),会通过推送接口推给客户(订阅并发不超过30次/S)客户需要按要求实现接口。 b、仅支持Json格式。 c、请求指令1008。 d、测试接口地址: e、联调通过后请更换为正式地址: f、分发及订阅接口需要客户方实现回调接口,回调RequestType(1008) 2)系统级和应用级参数

RequestData(必填参数,请求内容,JSON格式,须和DataType一致)) 用户自定义回调信息 WareHouseID 邮费支付方式: 1-现付,2-到付,3-月结,4-第三方支付 ExpType String O 快递类型:1-标准快件 Cost Double O 寄件费(运费) OtherCost Double O 其他费用 Receiver Company String O 收件人公司 Name String O 收件人 Tel String O 电话 Mobile String O 手机 PostCode String O 收件人邮编 ProvinceName String O 收件省(如广东省,不要缺少“省”) CityName String O 收件市(如深圳市,不要缺少“市”) ExpAreaName String O 收件区(如福田区,不要缺少“区”或“县”) Address String O 收件人详细地址 Sender Company String O 发件人公司 Name String O 发件人 Tel String O 发件人电话 Mobile String O 发件人手机 PostCode String O 发件人邮编 ProvinceName String O 发件省(如广东省,不要缺少“省”) CityName String O 发件市(如深圳市,不要缺少“市”) ExpAreaName String O 发件区(如福田区,不要缺少“区”或“县”) Address String O 发件详细地址 StartDate String O 上门取货时间段: "yyyy-MM-dd HH:mm:ss"格式化,本文中所有时间格式相同 EndDate String O Weight Double O 物品总重量kg Quantity Int O 件数/包裹数 Volume Double O 物品总体积m3 Remark String O 备注 IsNotice Int O 是否分发到快递公司:1-不分发;0-分发.默认为0 IsSendMessage Int O 是否订阅短信 0-不需要;1-需要 AddService Name String 0 增值服务名称 Value String 0 增值服务值 CustomerID String 0 客户标识(选填) Commodity GoodsName String O 商品名称 GoodsCode String O 商品编码 Goodsquantity Int O 件数 GoodsPrice Double O 商品价格 GoodsWeight Double O 商品重量kg GoodsDesc String O 商品描述 GoodsVol Double O 商品体积m3 EBusinessID String R 商户ID RequestType String R 请求指令类型:1008 DataSign String R 数据内容签名 DataType String R 请求、返回数据类型:2-json; 物流跟踪APIdemo import java.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder; import java.util.HashMap;import java.util.Map;import java.security.MessageDigest; /*快递鸟订阅推送 2.0接口ID和Key请到官网申请:快递单号查询接口

//DEMO public static void main(String[] args) { KdniaoSubscribeAPI api = new KdniaoSubscribeAPI(); try { String result = api.orderTracesSubByJson(); System.out.print(result);

} catch (Exception e) {
    e.printStackTrace();
}

}

//电商ID private String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx"; //电商加密私钥,快递鸟提供,注意保管,不要泄漏 private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx"; //测试请求url private 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 Exception{ String requestData="{'OrderCode': 'SF201608081055208281'," + "'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号'}," + "'Receiver':" + "{" + "'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", urlEncoder(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 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(); StringBuffer sb = new StringBuffer(32); for (int i = 0; i < result xss=removed xss=removed xss=removed xss=removed xss=removed> 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); // 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-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.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.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally{ try{ if(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', '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 < len xss=removed xss=removed>>> 2]); sb.append(base64EncodeChars[(b1 & 0x3) << 4 xss=removed xss=removed>>> 2]); sb.append(base64EncodeChars[((b1 & 0x03) << 4>>> 4)]); sb.append(base64EncodeChars[(b2 & 0x0f) << 2 xss=removed>>> 2]); sb.append(base64EncodeChars[((b1 & 0x03) << 4>>> 4)]); sb.append(base64EncodeChars[((b2 & 0x0f) << 2>>> 6)]); sb.append(base64EncodeChars[b3 & 0x3f]); } return sb.toString(); }

收藏
0
sina weixin mail 回到顶部