[C#] 圆通电子面单API申请对接demo案例 →→→→→进入此内容的聊天室

来自 , 2019-12-04, 写在 C#, 查看 159 次.
URL http://www.code666.cn/view/f6185f0e
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. using System.Web;
  8.  
  9. namespace KdGoldAPI
  10. {
  11.     /**
  12.     *
  13.     * 快递鸟电子面单接口
  14.     *
  15.     * ID和Key请到官网申请:http://www.kdniao.com/ServiceApply.aspx
  16.     */
  17.     public class KdApiEOrderDemo
  18.     {
  19.         //电商ID
  20.         private string EBusinessID = "请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";
  21.         //电商加密私钥,快递鸟提供,注意保管,不要泄漏
  22.         private string AppKey = "请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";
  23.         //请求url, 正式环境地址:http://api.kdniao.cc/api/Eorderservice
  24.         private string ReqURL = "http://testapi.kdniao.cc:8081/api/EOrderService";
  25.  
  26.         /// <summary>
  27.         /// Json方式  电子面单
  28.         /// </summary>
  29.         /// <returns></returns>
  30.         public string orderTracesSubByJson()
  31.         {
  32.             string requestData = "{'OrderCode': '012657700312'," +
  33.                                   "'ShipperCode':'YTO'," +
  34.                                   "'PayType':1," +
  35.                                   "'ExpType':1," +
  36.                                   "'Cost':1.0," +
  37.                                   "'OtherCost':1.0," +
  38.                                   "'Sender':" +
  39.                                   "{" +
  40.                                   "'Company':'LV','Name':'Taylor','Mobile':'15018442396','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73号'}," +
  41.                                   "'Receiver':" +
  42.                                   "{" +
  43.                                   "'Company':'GCCUI','Name':'Yann','Mobile':'15018442396','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'}," +
  44.                                   "'Commodity':" +
  45.                                   "[{" +
  46.                                   "'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}]," +
  47.                                   "'AddService':" +
  48.                                   "[{" +
  49.                                   "'Name':'COD','Value':'1020'}]," +
  50.                                   "'Weight':1.0," +
  51.                                   "'Quantity':1," +
  52.                                   "'Volume':0.0," +
  53.                                   "'Remark':'小心轻放'," +
  54.                                   "'IsReturnPrintTemplate':1}";
  55.  
  56.             Dictionary<string, string> param = new Dictionary<string, string>();
  57.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  58.             param.Add("EBusinessID", EBusinessID);
  59.             param.Add("RequestType", "1007");
  60.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  61.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  62.             param.Add("DataType", "2");
  63.  
  64.             string result = sendPost(ReqURL, param);
  65.  
  66.             //根据公司业务处理返回的信息......
  67.  
  68.             return result;
  69.         }
  70.  
  71.         /// <summary>
  72.         /// Post方式提交数据,返回网页的源代码
  73.         /// </summary>
  74.         /// <param name="url">发送请求的 URL</param>
  75.         /// <param name="param">请求的参数集合</param>
  76.         /// <returns>远程资源的响应结果</returns>
  77.         private string sendPost(string url, Dictionary<string, string> param)
  78.         {
  79.             string result = "";
  80.             StringBuilder postData = new StringBuilder();
  81.             if (param != null && param.Count > 0)
  82.             {
  83.                 foreach (var p in param)
  84.                 {
  85.                     if (postData.Length > 0)
  86.                     {
  87.                         postData.Append("&");
  88.                     }
  89.                     postData.Append(p.Key);
  90.                     postData.Append("=");
  91.                     postData.Append(p.Value);
  92.                 }
  93.             }
  94.             byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
  95.             try
  96.             {
  97.  
  98.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  99.                 request.ContentType = "application/x-www-form-urlencoded";
  100.                 request.Referer = url;
  101.                 request.Accept = "*/*";
  102.                 request.Timeout = 30 * 1000;
  103.                 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
  104.                 request.Method = "POST";
  105.                 request.ContentLength = byteData.Length;
  106.                 Stream stream = request.GetRequestStream();
  107.                 stream.Write(byteData, 0, byteData.Length);
  108.                 stream.Flush();
  109.                 stream.Close();
  110.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  111.                 Stream backStream = response.GetResponseStream();
  112.                 StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
  113.                 result = sr.ReadToEnd();
  114.                 sr.Close();
  115.                 backStream.Close();
  116.                 response.Close();
  117.                 request.Abort();
  118.             }
  119.             catch (Exception ex)
  120.             {
  121.                 result = ex.Message;
  122.             }
  123.             return result;
  124.         }
  125.  
  126.         ///<summary>
  127.         ///电商Sign签名
  128.         ///</summary>
  129.         ///<param name="content">内容</param>
  130.         ///<param name="keyValue">Appkey</param>
  131.         ///<param name="charset">URL编码 </param>
  132.         ///<returns>DataSign签名</returns>
  133.         private string encrypt(String content, String keyValue, String charset)
  134.         {
  135.             if (keyValue != null)
  136.             {
  137.                 return base64(MD5(content + keyValue, charset), charset);
  138.             }
  139.             return base64(MD5(content, charset), charset);
  140.         }
  141.  
  142.         ///<summary>
  143.         /// 字符串MD5加密
  144.         ///</summary>
  145.         ///<param name="str">要加密的字符串</param>
  146.         ///<param name="charset">编码方式</param>
  147.         ///<returns>密文</returns>
  148.         private string MD5(string str, string charset)
  149.         {
  150.             byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
  151.             try
  152.             {
  153.                 System.Security.Cryptography.MD5CryptoServiceProvider check;
  154.                 check = new System.Security.Cryptography.MD5CryptoServiceProvider();
  155.                 byte[] somme = check.ComputeHash(buffer);
  156.                 string ret = "";
  157.                 foreach (byte a in somme)
  158.                 {
  159.                     if (a < 16)
  160.                         ret += "0" + a.ToString("X");
  161.                     else
  162.                         ret += a.ToString("X");
  163.                 }
  164.                 return ret.ToLower();
  165.             }
  166.             catch
  167.             {
  168.                 throw;
  169.             }
  170.         }
  171.  
  172.         /// <summary>
  173.         /// base64编码
  174.         /// </summary>
  175.         /// <param name="str">内容</param>
  176.         /// <param name="charset">编码方式</param>
  177.         /// <returns></returns>
  178.         private string base64(String str, String charset)
  179.         {
  180.             return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
  181.         }
  182.     }
  183. }

回复 "圆通电子面单API申请对接demo案例"

这儿你可以回复上面这条便签

captcha