科技改变生活 · 科技引领未来
目录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.kejitian.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.kejitian.com/skin/keji/image/nopic.gif />                 
                 
     "print_paper">     "65">     "p0" width="249" style="text-align: center;">     
"249px"                      src=http://www.kejitian.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.kejitian.com/skin/keji/image/nopic.gif                      alt="" /> 
"phone" height="30"                                     src=http://www.kejitian.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;">                 费用合计:
- 元                         
  