科技改變生活 · 科技引領未來
目錄1.完成前期準備工作2.API接口3.請求參數(Headers)4.請求完整報文(示例)5.成功返回報文(示例)6.失敗返回報文(示例)7.分步講解(C#版本)8.順豐電子面單打印模板內容(HTML)9.關于簽名前言豐密面單,就是隱藏了
目錄
1.完成前期準備工作
2.API接口
3.請求參數(Headers)
4.請求完整報文(示例)
5.成功返回報文(示例)
6.失敗返回報文(示例)
7.分步講解(C#版本)
8.順豐電子面單打印模板內容(HTML)
9.關于簽名
前言
豐密面單,就是隱藏了用戶個人信息的順豐快遞面單。該面單可將寄、收件人名字、手機、地址等部分信息隱藏,讓個人信息不再直接暴露。
我們先看2張面單效果圖。
圖一
圖一是一張二聯150MM的電子面單模板,寄件人和收件人手機是可見的。
圖二
圖二也是一張二聯150MM的電子面單模板,寄件人和收件人手機是標星不看見的。這樣的面單安全可靠,主要是保護客戶隱私,強烈推薦客戶使用,下面我們就來講解實現過程。
1.完成前期準備工作
1.1,去快遞鳥免費注冊一個對接賬號
1.2,免費獲得一個apiKey(接口權限驗證需要)
1.3,完成實名認證流程
1.4,訂購一個免費套餐
1.5,申請順豐速運月結賬號
順豐月結賬號需要線下與當地順豐分部簽訂收派合同,簽定后順豐會提供10位數字的順豐月結賬號,用于發貨結算運費;
注:快遞鳥官網后臺顯示的信息和狀態(如:“我的物流服務商”頁面不顯示順豐或順豐月結賬號)并不影響接口的使用,也不需要在后臺添加要使用的客戶號,直接通過接口傳值下單即可;
1.6,準備打印機、打印紙
電子面單模板對打印機品牌、型號等沒有要求,只要是熱敏打印機即可,常見品牌如:斑馬、得力、快麥、漢印、佳博等。
打印機可由快遞網點提供或者在淘寶京東上購買,安裝打印機及驅動程序聯系打印機提供方;
順豐速運使用的打印紙有100mm*150mm(切點90/60)、100mm*180mm(切點110/70)、100mm*210mm(切點90/60/60)三種,
打印紙可由快遞網點提供或者在淘寶京東上購買,購買時可選擇全白熱敏 紙。
2.API接口
2.1,測試調用地址:http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json
2.2,正式調用地址:http://api.kdniao.com/api/EOrderService
2.3,請求方式:POST
2.4,編碼格式(utf-8):application/x-www-form-urlencoded;charset=utf-8
2.5,返回類型:JSON
2.6,調試頁面:http://kdniao.com/UserCenter/v2/SandBox/TrackQuery.aspx
2.7,調試工具:去調試(使用快遞鳥賬號登錄)
3.請求參數(Headers)
參數名稱類型說明必須要求RequestDataString請求內容需進行URL(utf-8)編碼,請求內容JSON格式,須和DataType一致必填EBusinessIDString用戶ID,查看用戶ID和ApiKey必填RequestTypeString請求指令類型:1007必填DataSignString簽名數據,(Body+ApiKey)進行MD5加密,再進行base64編碼,最后進行URL(utf-8)編碼必填DataTypeString求、返回數據類型:2-json ,默認Json選填
4.請求報文(示例)
{ "OrderCode": "012657018199", "ShipperCode": "SF", "PayType": 1, "MonthCode": "1234567890", "ExpType": 1, "Cost": 1.0, "OtherCost": 1.0, "Sender": { "Company": "LV", "Name": "Taylor", "Mobile": "15018442396", "ProvinceName": "上海", "CityName": "上海市", "ExpAreaName": "青浦區", "Address": "明珠路" }, "Receiver": { "Company": "GCCUI", "Name": "Yann", "Mobile": "15018442396", "ProvinceName": "北京", "CityName": "北京市", "ExpAreaName": "朝陽區", "Address": "三里屯街道" }, "Commodity": [ { "GoodsName": "鞋子", "GoodsQuantity": 1, "GoodsWeight": 1.0 }, { "GoodsName": "衣服", "GoodsQuantity": 1, "GoodsWeight": 1.0 }, ], "AddService": [ { "Name": " INSURE ", "Value": "1000" }, { "Name": "COD", "Value": "1020" " CustomerID ": "1234567890" } ], "Weight": 1.0, "Quantity": 1, "Volume": 0.0, "Remark": "小心輕放" }
5.成功返回報文(示例)
{ "EBusinessID": "1237100", "Order": { "OrderCode": "012657700387", "ShipperCode": "HTKY", "LogisticCode": "50002498503427", "MarkDestination": "京-朝陽(京-1)", "OriginCode": "200000", "OriginName": "上海分撥中心", "PackageCode": "北京" }, "PrintTemplate":"打印模板HTML內容后面單獨列出", "EstimatedDeliveryTime":"2016-03-06", "Success": true, "ResultCode": "100", "Reason": "成功" }
6.失敗返回報文(示例)
{ "EBusinessID": "1237100", "ResultCode": "106", "Reason": "該訂單號已下單成功", "UniquerRequestNumber":"5e66486b-8fbc-4131-b875-9b13d2ad1354" }
說明:未實名認證,未訂購套餐,套餐可用查詢量已經用完 都會返回此報文信息去實名認證 / 了解套餐詳情
7.分步講解(C#版本)
9.1,請求數據包結構
9.2,C#調用代碼示例
技術支持:QQ:510997342 //電商ID string eEBusinessID = "test1617571"; //電商加密私鑰,快遞鳥提供,注意保管,不要泄漏 string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175"; //請求url string reqURL = "http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json"; //請求指令 string reqType="1007"; //2-json string dataType = "2"; //字符編碼采用UTF-8 string charset = "UTF-8"; //JSON字符串string string jsonStr = "{ "OrderCode": "012657018199","ShipperCode": "SF","PayType": 1,"MonthCode": "1234567890","ExpType": 1,"Cost": 1.0,"OtherCost": 1.0,"Sender": {"Company": "LV","Name": "Taylor","Mobile": "15018442396","ProvinceName": "上海","CityName": "上海市","ExpAreaName": "青浦區","Address": "明珠路"},"Receiver": {"Company": "GCCUI","Name": "Yann","Mobile": "15018442396","ProvinceName": "北京","CityName": "北京市","ExpAreaName": "朝陽區","Address": "三里屯街道"},"Commodity": [{"GoodsName": "鞋子","GoodsQuantity": 1,"GoodsWeight": 1.0},{"GoodsName": "衣服","GoodsQuantity": 1,"GoodsWeight": 1.0},],"AddService": [{"Name": " INSURE ","Value": "1000"},{"Name": "COD","Value": "1020"" CustomerID ": "1234567890"}],"Weight": 1.0,"Quantity": 1,"Volume": 0.0,"Remark": "小心輕放"}" ; //把md5Str 進行base64編碼 string base64Str=base64(md5Str,charset); //進行URL編碼 (utf-8) string datasign = HttpUtility.UrlEncode(base64Str, charset); //請求報文參數 string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr &DataSign= datasign&DataType=dataType"; //通訊協議使用Http協議Post請求方式 返回軌跡數據 string post = SendPost(reqURL, postStr); //獲取到的post數據就是快遞鳥返回的完整報文,接下來自己寫一個解析json的方法就能獲取到里面的字段信息。//把(jsonStr+APIKey)進行MD5加密string md5Str=MD5(jsonStr + apiKey, charset);//把md5Str 進行base64編碼string base64Str=base64(md5Str,charset);//進行URL編碼 (utf-8)string datasign = HttpUtility.UrlEncode(base64Str, charset); //請求報文參數 string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr &DataSign= datasign&DataType=dataType"; //通訊協議使用Http協議Post請求方式 返回軌跡數據string post = SendPost(reqURL, postStr);//獲取到的post數據就是快遞鳥返回的完整報文,接下來自己寫一個解析json的方法就能獲取到里面的字段信息。
9.3,C#調用方法
/// /// 字符串MD5加密 /// ///"str">要加密的字符串 ///"charset">編碼方式 ///密文 private string MD5(string str, string charset) { byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str); 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 < 16) ret += "0" + a.ToString("X"); else ret += a.ToString("X"); } return ret.ToLower(); } catch { throw; } } /// /// base64編碼 /// /// "str">內容 /// "charset">編碼方式 /// private string base64(String str, String charset) { return Convert.Tobase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str)); } /// /// Post方式提交數據,返回網頁的源代碼 /// /// "url">發送請求的 URL /// "postData">請求報文參數 /// 遠程資源的響應結果 private string SendPost(string url, string postData) { string result = ""; byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString()); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.ContentType = "application/x-www-form-urlencoded"; request.Referer = url; request.Accept = "* .print_paper .p0 .sp { position: absolute; left: 3px; top: 110px; } .print_paper .ovh { overflow: hidden; } .print_paper .ov { overflow: visible; } .print_paper .f10 { font-size: 10px; } .print_paper .f13 { font-size: 13px; } .print_paper .bln { border-left: none; } .print_paper .brn { border-right: none; } "print_paper table_first"> "53"> "no_border"> "vertical-align: middle;">
"logo" height="35" alt="" src=http://www.rotsrelo.com/skin/keji/image/nopic.gif /> "vertical-align: middle;" colspan="2"> "f20" style="font-weight: bold;"> "vertical-align: middle; text-align: right; position: absolute; left: 264px">
"35" class="phone" alt="" src=http://www.rotsrelo.com/skin/keji/image/nopic.gif />
"print_paper"> "65"> "p0" width="249" style="text-align: center;">
"249px" src=http://www.rotsrelo.com/skin/keji/image/nopic.gif /> "sp" style="font-size: 11px;display: none">1 / 1
"font-size: 11px; font-weight: bold;"> "display: none">子單號 555555555
母單號 888888888888 "display: block;margin-top: 3px;">運單號 5622033142418 "display: none;margin-top: 10px;">簽回單號 3552033142418 "xx16 p0"> "height: 74px;"> 順豐標快
"xx10">目的地: "f24">010
"print_paper" height="50"> "50" style="padding: 0;" class="xx16 brn">收方: "bln"> "height: 59px; overflow: hidden;"> 北京北京市朝陽區******
"width: 297px;display: inline-block;">楊** 1590****89
"print_paper" height="58"> "2" style="vertical-align: top;" class="f13"> 月結帳號:3434555
支付方式:寄付月結
"display: none">聲明價值:0 "display: none">簽單返回單號:${SignWaybillCode} "display: none">操作要求:${OperateRequire} "45"> 代收貨款:¥0元
卡號: 運費:-
費用合計:-
"print_paper" height="68" width="100%"> "xx14 brn" width="50" style="padding: 0; "> 寄方: "ov bln" style="width: 136px;"> "xx10" style="width: 115px; height: 66px;"> "height: 40px; overflow: hidden"> 廣東省東莞市清溪鎮****** "width: 140px;overflow: hidden;"> "width: 52px;display: inline-block;">鞋襪廠13288****80 "xx10" style="margin-left: -45px; position: absolute;top: 337px;">原寄地:339 "xx10" width="86"> 收件員:
寄件日期:2020-02-05 11:34:24 "xx10"> 收方簽署:
日期:
"print_paper table_first" height="60"> "55">
"logo" height="30" src=http://www.rotsrelo.com/skin/keji/image/nopic.gif alt="" />
"phone" height="30" src=http://www.rotsrelo.com/skin/keji/image/nopic.gif alt="" /> "text-align: center;">
"display: none">子單號 234234234 "display: block">234234 "display: none">243234324
"print_paper "> "76"> "brn" style="padding: 0; width: 16px;"> 寄
方: "xx10 bln"> "height: 67px; overflow: hidden;"> 廣東省東莞市清溪鎮******
"width: 164px;display: inline-block;"> "width: 52px;display: inline-block;">鞋襪廠13288****80 "padding: 0; width: 16px;" class="fwb brn"> 收
方: "xx10 bln"> "height: 67px; overflow: hidden"> 北京北京市朝陽區******
"width: 164px;display: inline-block;"> "width: 52px;display: inline-block;">楊**1590****89
"print_paper"> "18"> "36" style="padding: 0; text-align: center;">數量 "254" style="padding: 0; text-align: center;">托寄物 "padding: 0; text-align: center;">備注 "34"> 嬰兒用品 "f10 ovh" style="height: 33px"> "40"> "2"> "no_border"> 訂單號 "xx14" style="vertical-align: middle; text-align: center;">
2355334314
"text-align: center;"> 費用合計:
- 元