免費(fèi)順豐快遞接口api對(duì)接調(diào)用demo_第1頁
免費(fèi)順豐快遞接口api對(duì)接調(diào)用demo_第2頁
免費(fèi)順豐快遞接口api對(duì)接調(diào)用demo_第3頁
免費(fèi)順豐快遞接口api對(duì)接調(diào)用demo_第4頁
免費(fèi)順豐快遞接口api對(duì)接調(diào)用demo_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、免費(fèi)順豐快遞接口api對(duì)接調(diào)用demo接口地址:http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx支持格式:json 請(qǐng)求方式:HTTP POST接口平臺(tái):快遞鳥免費(fèi)查詢接口 請(qǐng)求方法的編碼格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。順豐快遞接口api申請(qǐng)JSON請(qǐng)求/返回示例:1.請(qǐng)求       "OrderCode": "&q

2、uot;,       "ShipperCode": "SF",       "LogisticCode": "118650888018"2.返回沒有物流軌跡的 "EBusinessID": "1109259", "Traces": , "OrderCode": "&q

3、uot;, "ShipperCode": "SF", "LogisticCode": "118461988807", "Success": false, "Reason": null有物流軌跡的 "EBusinessID": "1109259", "OrderCode": "", "ShipperCode": "SF", "LogisticCode

4、": "118461988807", "Success": true, "State": 3, "Reason": null, "Traces": "AcceptTime": "2014/06/25 08:05:37", "AcceptStation": "正在派件.(派件人:鄧裕富,電話深圳 市", "Remark": null , "AcceptT

5、ime": "2014/06/25 04:01:28", "AcceptStation": "快件在 深圳集散中心 ,準(zhǔn)備送往下一站 深圳 深圳市", "Remark": null , "AcceptTime": "2014/06/25 01:41:06", "AcceptStation": "快件在 深圳集散中心 深圳市", "Remark": null , "AcceptTime":

6、 "2014/06/24 20:18:58", "AcceptStation": "已收件深圳市", "Remark": null , "AcceptTime": "2014/06/24 20:55:28", "AcceptStation": "快件在 深圳 ,準(zhǔn)備送往下一站 深圳集散中心 深圳市", "Remark": null , "AcceptTime": "2014/06/25

7、10:23:03", "AcceptStation": "派件已簽收深圳市", "Remark": null , "AcceptTime": "2014/06/25 10:23:03", "AcceptStation": "簽收人是:已簽收深圳市", "Remark": null 注:接口及簽名說明1)、支持http傳輸協(xié)議2)、支持的數(shù)據(jù)傳輸格式 Json/Xml(暫不支持<content/>這種形式)。 編碼格

8、式:UTF-8 交互協(xié)議上統(tǒng)一用UTF-8,避免傳遞中文數(shù)據(jù)出現(xiàn)亂碼。3)、接入步驟 注冊(cè)成為用戶(注:注冊(cè)成功選擇服務(wù)立即使用,無需審批)。注冊(cè)成功后,登錄就可以查看ID和key。 注冊(cè)方式通過網(wǎng)絡(luò)平臺(tái):按照接口官網(wǎng)提示進(jìn)行注冊(cè)申請(qǐng),注冊(cè)成功并且登錄,將得到一組電商ID和AppKey。電商ID是調(diào)用接口服務(wù)的身份證明,不可更改、不可轉(zhuǎn)用,AppKey是應(yīng)用訪問API的簽名附加密鑰,必須妥善保存。兩者關(guān)系類似于登錄帳號(hào)和密碼,兩者都會(huì)在簽名和業(yè)務(wù)參數(shù)中使用。注冊(cè)成功登錄之后認(rèn)證:即可申請(qǐng)接口 申請(qǐng)后ID和KEY自動(dòng)激活(1) 開發(fā)服務(wù)開發(fā)自身業(yè)務(wù)的服務(wù),服務(wù)需按照后面接口的定義規(guī)則。(2) 查

9、看接口調(diào)用的DEMO物流技術(shù)接口提供調(diào)用物流接口的DEMO(.Net版本),包括網(wǎng)上在線訂單下單、物流軌跡查詢等物流行業(yè)標(biāo)準(zhǔn)化的下單操作流程與數(shù)據(jù)查詢格式。提交接入處理的相關(guān)代碼如有不明白的地方可與物流技術(shù)接口人協(xié)作開發(fā)。DEMO下載地址: 4)、接口數(shù)據(jù)包結(jié)構(gòu)圖例 - 數(shù)據(jù)包結(jié)構(gòu) (系統(tǒng)級(jí)數(shù)據(jù))5)、XML范例/JSON 范例 string userID = "1109259" string keyValue = "56da2cf8-c8a2-44b2-b6fa-476cd7d1ba17"/加密私鑰,由發(fā)貨通提供 string url = "

10、http:/api.kdniao.cc:8081/Ebusiness/EbusinessOrderHandle.aspx" /請(qǐng)求地址 string DataType = "1" /1-xml;2-json string charset="UTF-8"/字符編碼采用UTF-8 string xmlStr = "<Content><OrderCode></OrderCode><ShipperCode>SF</ShipperCode><LogisticCode>118

11、650888088</LogisticCode></Content>"/ XML字符串 string xmlStr = ""OrderCode":"","ShipperCode":"SF","LogisticCode":"118461988807"" / JSON字符串string datasign = MD5(xmlStr+keyValue, "UTF-8");/生成加密簽名加密通過對(duì)參數(shù)xmlStr

12、+ keyValue得到加密后的字符串string PostStr = "RequestType=1002&EBusinessID= userID &RequestData=xmlStr &DataSign= datasign&DataType=DataType" /請(qǐng)求報(bào)文參數(shù)string post = this.DoPost(url, PostStr);/ 通訊協(xié)議使用Http協(xié)議Post請(qǐng)求方式6)、流程示意圖7)、網(wǎng)關(guān)地址測(cè)試接口:http:/api.kdniao.cc:8081/Ebusiness/EbusinessOrderHan

13、dle.aspx測(cè)試電商ID=1237100,AppKey=518a73d8-1f7f-441a-b644-33e77b49d846正式接口:http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx注意:正式(自行注冊(cè))環(huán)境下使用時(shí),需提供請(qǐng)求的IP給接口登記8)、關(guān)于簽名接口和第三方電子商務(wù)公司系統(tǒng)進(jìn)行對(duì)接,有一定的安全機(jī)制。采用IP認(rèn)證加簽名的方式對(duì)接,具體方案如下:(1) 防止數(shù)據(jù)被篡改在POST請(qǐng)求中會(huì)傳遞5個(gè)參數(shù)4個(gè)必須參數(shù):RequestType=請(qǐng)求指令類型EBusinessID=電商IDRequestData=數(shù)據(jù)內(nèi)容(UR

14、L編碼:UTF-8)DataSign= 簽名摘要(URL編碼:UTF-8(base64(MD5(數(shù)據(jù)內(nèi)容 +AppKey)1個(gè)可選參數(shù):DataType=返回?cái)?shù)據(jù)類型(1-xml,2-json;默認(rèn)為2格式)注:DataSign生成后,對(duì)方接收到數(shù)據(jù)后,以同樣的算法進(jìn)行簽名,生成摘要,對(duì)比兩者的摘要是否相同,如果不同,說明傳遞過程中發(fā)生數(shù)據(jù)篡改,對(duì)接過程中如有不明白之處可雙方技術(shù)協(xié)作進(jìn)行(2) 調(diào)用接口的身份認(rèn)證注冊(cè)成為接口用戶后,會(huì)生成對(duì)應(yīng)的電商ID和AppKey,電商ID相當(dāng)于用戶名,AppKey相當(dāng)于密碼。注:請(qǐng)勿遺漏或傳遞可能遞增大接口調(diào)用維護(hù)舉例說明:(a) 假設(shè)RequestDat

15、a (XML)內(nèi)容為: <Content><ShipperCode>SF</ShipperCode><LogisticCode>118954907573</LogisticCode></Content>,經(jīng)過URL(UTF-8)編碼的內(nèi)容為%3cContent%3e%3cShipperCode%3eSF%3c%2fShipperCode%3e%3cLogisticCode%3e118954907573%3c%2fLogisticCode%3e%3c%2fContent%3e, EBusinessID為1109259,App

16、Key為56da2cf8-c8a2-44b2-b6fa-476cd7d1ba17(b) 那么DataSign簽名的內(nèi)容為<Content><ShipperCode>SF</ShipperCode><LogisticCode>118954907573</LogisticCode></Content>56da2cf8-c8a2-44b2-b6fa-476cd7d1ba17,經(jīng)過md5和base64后的內(nèi)容就為YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE=,在經(jīng)過URL(UTF-8)編碼

17、的內(nèi)容為YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE%3d(c) 最終要發(fā)送的數(shù)據(jù)為RequestType=1002&EBusinessID=1109259&RequestData =%3cContent%3e%3cShipperCode%3eSF%3c%2fShipperCode%3e%3cLogisticCode%3e118954907573%3c%2fLogisticCode%3e%3c%2fContent%3e &DataSign = YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE

18、%3d& DataType=2(d) 接收方收到數(shù)據(jù)后,獲得EBusinessID 和RequestData和DataSign等這幾個(gè)數(shù)據(jù)。(e) 接收方對(duì)EBusinessID 得到AppKey,RequestData+AppKey的數(shù)據(jù)進(jìn)行md5和base64后的內(nèi)容就為YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE=(f) 接收方判斷簽名后的數(shù)據(jù)跟傳遞過來的DataSign是否一致,如果一致進(jìn)行業(yè)務(wù)操作,如果不一直返回錯(cuò)誤。9)、(C#)DataSign簽名加密代碼/<summary>/電商Sign簽名/</summary

19、>/<param name="content">內(nèi)容</param>/<param name="keyValue">Appkey</param>/<param name="charset">URL編碼 </param>/<returns>DataSign簽名</returns>Public String Encrypt (String content, String keyValue, String charset)if (keyVa

20、lue != null)return base64(MD5(content + keyValue, charset), charset);return base64(MD5(content, charset), charset);/<summary>/ 字符串MD5加密/</summary>/<param name="Text">要加密的字符串</param>/<returns>密文</returns>Private string MD5(string Text, string charset)byte

21、 buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(Text);try System.Security.Cryptography.MD5CryptoServiceProvider check; check = new System.Security.Cryptography.MD5CryptoServiceProvider();byte somme = check.ComputeHash(buffer);string ret = ""foreach (byte a in somme) if (a <

22、 16) ret += "0" + a.ToString("X");else ret += a.ToString("X"); return ret.ToLower();catch throw; Private static string base64(String str, String charset)returnConvert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str);10)、JAVA demoimport java.io.Buff

23、eredReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;import .URLEncoder;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map; public class

24、 KdniaoTrackQueryAPI /DEMOpublic 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();/電商IDprivate String EBusinessID

25、="請(qǐng)申請(qǐng)/電商加密私鑰,注意保管,不要泄漏private String AppKey="請(qǐng)申請(qǐng)/請(qǐng)求urlprivate String ReqURL="http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx" /* * Json方式 查詢訂單物流軌跡 * throws Exception */public String getOrderTracesByJson(String expCode, String expNo) throws ExceptionString requestData= &qu

26、ot;'OrderCode':'','ShipperCode':'" + expCode + "','LogisticCode':'" + expNo + "'"Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8&quo

27、t;);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 r

28、esult=sendPost(ReqURL, params);/根據(jù)公司業(yè)務(wù)處理返回的信息.return result;/* * XML方式 查詢訂單物流軌跡 * throws Exception */public String getOrderTracesByXml() throws ExceptionString requestData= "<?xml version="1.0" encoding="utf-8" ?>"+"<Content>"+"<OrderCode&g

29、t;</OrderCode>"+"<ShipperCode>SF</ShipperCode>"+"<LogisticCode>589707398027</LogisticCode>"+"</Content>"Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(request

30、Data, "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", &q

31、uot;1");String result=sendPost(ReqURL, params);/根據(jù)公司業(yè)務(wù)處理返回的信息.return result; /* * MD5加密 * param str 內(nèi)容 * param charset 編碼方式 * throws Exception */SuppressWarnings("unused")private String MD5(String str, String charset) throws Exception MessageDigest md = MessageDigest.getInstance("

32、;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("0"); sb.append(Integer.toHexString(val); return sb.toString().toLowerCase()

33、;/* * base64編碼 * param str 內(nèi)容 * param charset 編碼方式 * throws UnsupportedEncodingException */private String base64(String str, String charset) throws UnsupportedEncodingExceptionString encoded = base64Encode(str.getBytes(charset);return encoded; SuppressWarnings("unused")private String urlEn

34、coder(String str, String charset) throws UnsupportedEncodingExceptionString result = URLEncoder.encode(str, charset);return result;/* * 電商Sign簽名生成 * param content 內(nèi)容 * param keyValue Appkey * param charset 編碼方式 * throws UnsupportedEncodingException ,Exception * return DataSign簽名 */SuppressWarnings(&

35、quot;unused")private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exceptionif (keyValue != null)return base64(MD5(content + keyValue, charset), charset);return base64(MD5(content, charset), charset); /* * 向指定 URL 發(fā)送POST方法的請(qǐng)求 * param url 發(fā)

36、送請(qǐng)求的 URL * param params 請(qǐng)求的參數(shù)集合 * return 遠(yuǎn)程資源的響應(yīng)結(jié)果 */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); HttpURLC

37、onnection conn =(HttpURLConnection) realUrl.openConnection(); / 發(fā)送POST請(qǐng)求必須設(shè)置如下兩行 conn.setDoOutput(true); conn.setDoInput(true); / POST方法 conn.setRequestMethod("POST"); / 設(shè)置通用的請(qǐng)求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection",

38、"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對(duì)象對(duì)應(yīng)的輸出流 out = new OutputSt

39、reamWriter(conn.getOutputStream(), "UTF-8"); / 發(fā)送請(qǐng)求參數(shù) 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("=&quo

40、t;); 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的響應(yīng) in = new BufferedReader( new InputStreamReader(conn.ge

41、tInputStream(), "UTF-8"); String line; while (line = in.readLine() != null) result.append(line); catch (Exception e) e.printStackTrace(); /使用finally塊來關(guān)閉輸出流、輸入流 finally try if(out!=null) out.close(); if(in!=null) in.close(); catch(IOException ex) ex.printStackTrace(); return result.toString

42、(); 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', 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論