日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快递物流查询接口介绍

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快递物流查询接口介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快遞查詢接口是指快遞查詢網對外開放的應用程序接口,開發人員能夠通過調用該接口與快遞查詢網進行交互,并基于該接口開發自己的快遞查詢應用程序。目前比較常用的接口有快遞鳥、快遞100、快遞網等。

?

應用場景

?

??? ? ? 電商網站用戶打開“我的訂單”時調用此API顯示物流信息詳情;或者是電商管理后臺的物流系統,客服在對賬前查詢所有運單的簽收狀態,并追蹤問題。

?

快遞查詢接口分類

? ? ? ? 物流軌跡查詢接口有即時查詢和訂閱查詢兩種,即時是請求即返回數據,訂閱則是訂閱快遞單號到接口,有物流軌跡更新則全量返回數據。

?

? ? ? ? 快遞鳥即時接口可以查詢3000次,3000以上接訂閱接口,統一接口模式接入,常用快遞均支持查詢,還有訂閱接口、在線下單接口、電子面單接口,接口均不收取費用, ? ? ? ?沒有要求用戶添加外鏈,支持418家國內外快遞物流查詢。

? ? ? ? 快遞100每天可以免費查詢2000次,超過2000次收費,每次0.06~0.1元不等,如果查詢的量大的話可以降低費用,免費的接口有幾家常用快遞不支持接口模式,只支持 ? htmlAPI,要求用戶添加外鏈,支持300多家國內外快遞物流查詢。

? ? ? ? 快遞網每天可以免費查詢500次,超過500次收費,每次0.05元,只有即時查詢和訂閱推送接口,要求用戶添加外鏈,支持395家國內外快遞物流查詢。

?

對接說明

? ? ? ? ?不同公司的快遞查詢接口接入類似,都需要注冊http://www.kdniao.com/ServiceApply.aspx?,申請賬號獲取KEY和ID,如果是訂閱接口需要技術聯調。以快遞鳥及時查詢接口接入為例。

? ? ? 根據快遞單號和快遞公司編碼查詢物流軌跡信息。接口需要指定快遞單號的快遞公司編碼,格式不對或則編碼錯誤都會返失敗的信息。如:EMS物流單號應選擇快遞公司編碼(EMS)查看快遞公司編碼返回的物流跟蹤信息按照發生的時間升序排列。

? ? ? ? 接口支持的消息接收方式為HTTP POST

? ? ? ? 請求方法的編碼格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"

? ? ? ? API地址:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx

?

?

請求系統級參數

參數名稱類型說明必須要求
RequestDataString請求內容需進行URL(utf-8)編碼。請求內容JSON或XML格式,須和DataType一致。R
EBusinessIDString商戶ID,請在我的服務頁面查看。R
RequestTypeString請求指令類型:1002R
DataSignString數據內容簽名:把(請求內容(未編碼)+AppKey)進行MD5加密,然后Base64編碼,最后進行URL(utf-8)編碼。詳細過程請查看Demo。R
DataTypeString請求、返回數據類型:1-xml,2-json;默認為xml格式O

?

?

請求內容字段定義

參數類型說明必須要求
OrderCodeString訂單編號O
ShipperCodeString快遞公司編碼R
LogisticCodeString物流單號R

?

返回參數定義

參數名稱類型說明必須要求
EBusinessIDString用戶IDR
OrderCodeString訂單編號O
ShipperCodeString快遞公司編碼R
LogisticCodeString物流運單號R
SuccessBool成功與否R
ReasonString失敗原因O
StateString物流狀態:2-在途中,3-簽收,4-問題件R
Traces
TraceAcceptTimeString時間R
AcceptStationString描述R
RemarkString備注O

?

?

Java調用示例

?

  • import java.io.BufferedReader;
  • import java.io.IOException;
  • import java.io.InputStreamReader;
  • import
  • java.io.OutputStreamWriter;
  • import
  • java.io.UnsupportedEncodingExcept
  • ion;
  • import
  • java.net.HttpURLConnection;
  • import java.net.URL;
  • import java.net.URLEncoder;
  • import
  • java.security.MessageDigest;
  • import java.util.HashMap;
  • import java.util.Map;
  • /**
  • *
  • * 快遞鳥物流軌跡即時查詢接口
  • *
  • * @技術QQ群: 456320272
  • * @see:
  • http://www.kdniao.com/YundanChaxu
  • nAPI.aspx
  • * @copyright: 深圳市快金數據技術
  • 服務有限公司
  • *
  • * DEMO中的電商ID與私鑰僅限測試使
  • 用,正式環境請單獨注冊賬號
  • * 單日超過500單查詢量,建議接入
  • 我方物流軌跡訂閱推送接口
  • *
  • * ID和Key請到官網申請:
  • http://www.kdniao.com/ServiceAppl
  • y.aspx
  • */
  • public class KdniaoTrackQueryAPI
  • {
  • //DEMO
  • public static void main
  • (String[] args) {
  • KdniaoTrackQueryAPI api = new
  • KdniaoTrackQueryAPI();
  • try {
  • String
  • result =
  • api.getOrderTracesByJson("ANE",
  • "210001633605");
  • System.out.print(result);
  • } catch
  • (Exception e) {
  • e.printStackTrace();
  • }
  • }
  • //電商ID
  • private String
  • EBusinessID="請到快遞鳥官網申請
  • http://www.kdniao.com/ServiceAppl
  • y.aspx";
  • //電商加密私鑰,快遞鳥提
  • 供,注意保管,不要泄漏
  • private String AppKey="請
  • 到快遞鳥官網申請
  • http://www.kdniao.com/ServiceAppl
  • y.aspx";
  • //請求url
  • private String
  • ReqURL="http://api.kdniao.cc/Ebus
  • iness/EbusinessOrderHandle.aspx";
  • /**
  • * Json方式 查詢訂單物流軌跡
  • * @throws Exception
  • */
  • public String
  • getOrderTracesByJson(String
  • expCode, String expNo) throws
  • Exception{
  • String
  • requestData=
  • "{'OrderCode':'','ShipperCode':'"
  • + expCode + "','LogisticCode':'"
  • + expNo + "'}";
  • Map<String,
  • String> params = new
  • HashMap<String, String>();
  • params.put
  • ("RequestData", urlEncoder
  • (requestData, "UTF-8"));
  • params.put
  • ("EBusinessID", EBusinessID);
  • params.put
  • ("RequestType", "1002");
  • 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;
  • }
  • /**
  • * XML方式 查詢訂單物流軌跡
  • * @throws Exception
  • */
  • public String
  • getOrderTracesByXml() throws
  • Exception{
  • String
  • requestData= "<?xml version=
  • \"1.0\" encoding=\"utf-8\" ?>"+
  • "<Content>"+
  • "<OrderCode></OrderCode>"+
  • "<ShipperCode>SF</ShipperCode>"+
  • "<LogisticCode>589707398027</Logi
  • sticCode>"+
  • "</Content>";
  • Map<String,
  • String> params = new
  • HashMap<String, String>();
  • params.put
  • ("RequestData", urlEncoder
  • (requestData, "UTF-8"));
  • params.put
  • ("EBusinessID", EBusinessID);
  • params.put
  • ("RequestType", "1002");
  • String
  • dataSign=encrypt(requestData,
  • AppKey, "UTF-8");
  • params.put
  • ("DataSign", urlEncoder(dataSign,
  • "UTF-8"));
  • params.put
  • ("DataType", "1");
  • 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.length; i++) {
  • int val = result
  • [i] & 0xff;
  • if (val <= 0xf) {
  • sb.append
  • ("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
  • UnsupportedEncodingException{
  • String encoded =
  • base64Encode(str.getBytes
  • (charset));
  • return encoded;
  • }
  • @SuppressWarnings
  • ("unused")
  • private String
  • urlEncoder(String str, String
  • charset) throws
  • UnsupportedEncodingException{
  • String result =
  • URLEncoder.encode(str, charset);
  • return result;
  • }
  • /**
  • * 電商Sign簽名生成
  • * @param content 內容
  • * @param keyValue Appkey
  • * @param charset 編碼方式
  • * @throws
  • UnsupportedEncodingException
  • ,Exception
  • * @return DataSign簽名
  • */
  • @SuppressWarnings
  • ("unused")
  • private String encrypt
  • (String content, String keyValue,
  • String charset) throws
  • UnsupportedEncodingException,
  • Exception
  • {
  • if (keyValue !=
  • null)
  • {
  • return
  • base64(MD5(content + keyValue,
  • charset), charset);
  • }
  • return 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;
  • 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<String, String> 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) {
  • b1 = data[i++] &
  • 0xff;
  • if (i == len)
  • {
  • sb.append
  • (base64EncodeChars[b1 >>> 2]);
  • sb.append
  • (base64EncodeChars[(b1 & 0x3) <<
  • 4]);
  • sb.append("==");
  • break;
  • }
  • b2 = data[i++] &
  • 0xff;
  • if (i == len)
  • {
  • sb.append
  • (base64EncodeChars[b1 >>> 2]);
  • sb.append
  • (base64EncodeChars[((b1 & 0x03)
  • << 4) | ((b2 & 0xf0) >>> 4)]);
  • sb.append
  • (base64EncodeChars[(b2 & 0x0f) <<
  • 2]);
  • sb.append("=");
  • break;
  • }
  • b3 = data[i++] &
  • 0xff;
  • sb.append
  • (base64EncodeChars[b1 >>> 2]);
  • sb.append
  • (base64EncodeChars[((b1 & 0x03)
  • << 4) | ((b2 & 0xf0) >>> 4)]);
  • sb.append
  • (base64EncodeChars[((b2 & 0x0f)
  • << 2) | ((b3 & 0xc0) >>> 6)]);
  • sb.append
  • (base64EncodeChars[b3 & 0x3f]);
  • }
  • return sb.toString();
  • }
  • }
  • ?

  • 轉載于:https://www.cnblogs.com/dzcWeb/p/9661596.html

    總結

    以上是生活随笔為你收集整理的快递物流查询接口介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。