[C#] 电商如何实现网上叫快递员-快递鸟在线下单接口 →→→→→进入此内容的聊天室

来自 , 2019-05-31, 写在 C#, 查看 126 次.
URL http://www.code666.cn/view/f15eda31
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.IO;
  7. using System.Web;
  8.  
  9. namespace KdGoldAPI
  10. {
  11.     public class KdApiCreateOrderDemo
  12.     {
  13.         //电商ID
  14.         private string EBusinessID = "1237100";
  15.         //电商加密私钥,快递鸟提供,注意保管,不要泄漏
  16.         private string AppKey = "518a73d8-1f7f-441a-b644-33e77b49d846";
  17.         //请求url
  18.         private string ReqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
  19.  
  20.         /// <summary>
  21.         /// Json方式 在线下单
  22.         /// </summary>
  23.         /// <returns></returns>
  24.         public string orderOnlineByJson()
  25.         {
  26.             string requestData = "{'LogisticsWeight':2.0," +
  27.                                 "'LogisticsVol':2.0," +
  28.                                 "'HQPOrderDesc':'尽快上门收件'," +
  29.                                 "'HQPPayType':1," +
  30.                                 "'IsNeedPay':2," +
  31.                                 "'Payment':121.0," +
  32.                                 "'OrderCode':'test_12345678905'," +
  33.                                 "'StartDate':'2015-05-13 21:20:53'," +
  34.                                 "'EndDate':'2015-05-14 21:20:53'," +
  35.                                 "'ShipperCode':'LB'," +
  36.                                 "'LogisticCode':'109932607391'," +
  37.                                 "'ToCompany':'华为科技'," +
  38.                                 "'ToName':'张三'," +
  39.                                 "'ToAddressArea':'深圳市南山区桂庙路555号'," +
  40.                                 "'ToTel':''," +
  41.                                 "'ToMobile':'13800000000'," +
  42.                                 "'OrderType':2," +
  43.                                 "'ToPostCode':'518128'," +
  44.                                 "'ToProvinceID':'广东省'," +
  45.                                 "'ToCityID':'深圳市'," +
  46.                                 "'ToExpAreaID':'南山区'," +
  47.                                 "'FromCompany':'小米科技'," +
  48.                                 "'FromName':'李四'," +
  49.                                 "'FromAddressArea':'深圳市福田区华强北路222号'," +
  50.                                 "'FromTel':'88888888'," +
  51.                                 "'FromMobile':''," +
  52.                                 "'FromPostCode':'529800'," +
  53.                                 "'FromProvinceID':'广东省'," +
  54.                                 "'FromCityID':'深圳市'," +
  55.                                 "'FromExpAreaID':'福田区'," +
  56.                                 "'Cost':21.0," +
  57.                                 "'OtherCost':2.0," +
  58.                                 "'Commoditys':" +
  59.                                 "[{" +
  60.                                 "'Goodsquantity':12," +
  61.                                 "'GoodsName':'手机屏幕'," +
  62.                                 "'GoodsCode':'kjyhu878787'," +
  63.                                 "'GoodsPrice':121.0," +
  64.                                 "}]}";
  65.  
  66.             Dictionary<string, string> param = new Dictionary<string, string>();
  67.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  68.             param.Add("EBusinessID", EBusinessID);
  69.             param.Add("RequestType", "1001");
  70.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  71.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  72.             param.Add("DataType", "2");
  73.  
  74.             string result = sendPost(ReqURL, param);
  75.  
  76.             //根据公司业务处理返回的信息......
  77.  
  78.             return result;
  79.         }
  80.  
  81.         /// <summary>
  82.         /// XML方式 在线下单
  83.         /// </summary>
  84.         /// <returns></returns>
  85.         public string orderOnlineByXml()
  86.         {
  87.             string requestData = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
  88.                                 "<Content>" +
  89.                                 "<LogisticsWeight>1.5</LogisticsWeight>" +
  90.                                 "<OrderCode>test_1234567896</OrderCode>" +
  91.                                 "<LogisticsVol>0.5</LogisticsVol>" +
  92.                                 "<HQPOrderDesc>测试在线下单接口 20150510</HQPOrderDesc>" +
  93.                                 "<HQPPayType>1</HQPPayType>" +
  94.                                 "<IsNeedPay>1</IsNeedPay>" +
  95.                                 "<Payment>1000</Payment>" +
  96.                                 "<OrderType>1</OrderType>" +
  97.                                 "<StartDate>2015-05-10 19:36:50</StartDate>" +
  98.                                 "<EndDate>2015-05-11 19:36:50</EndDate>" +
  99.                                 "<ShipperCode>LB</ShipperCode>" +
  100.                                 "<LogisticCode></LogisticCode>" +
  101.                                 "<ToName>张三</ToName>" +
  102.                                 "<ToAddressArea>深圳市南山区南新路2055号</ToAddressArea>" +
  103.                                 "<ToTel></ToTel>" +
  104.                                 "<ToMobile>13800000000</ToMobile>" +
  105.                                 "<ToPostCode></ToPostCode>" +
  106.                                 "<ToProvinceID>广东省</ToProvinceID>" +
  107.                                 "<ToCityID>深圳市</ToCityID>" +
  108.                                 "<ToExpAreaID>南山区</ToExpAreaID>" +
  109.                                 "<FromCompany>快递鸟科技</FromCompany>" +
  110.                                 "<FromName>李四</FromName>" +
  111.                                 "<FromAddressArea>深圳市福田区华强北路211号</FromAddressArea>" +
  112.                                 "<FromTel></FromTel>" +
  113.                                 "<FromMobile>13888888888</FromMobile>" +
  114.                                 "<FromPostCode></FromPostCode>" +
  115.                                 "<FromProvinceID>广东省</FromProvinceID>" +
  116.                                 "<FromCityID>深圳市</FromCityID>" +
  117.                                 "<FromExpAreaID>福田区</FromExpAreaID>" +
  118.                                 "<Cost>12</Cost>" +
  119.                                 "<OtherCost>1</OtherCost>" +
  120.                                 "<Commoditys>" +
  121.                                 "<Commodity>" +
  122.                                 "<GoodsName>惠普显示器</GoodsName>" +
  123.                                 "<GoodsCode>ABCD_123456789</GoodsCode>" +
  124.                                 "<Goodsquantity>2</Goodsquantity>" +
  125.                                 "<GoodsPrice>850</GoodsPrice>" +
  126.                                 "</Commodity>" +
  127.                                 "<Commodity>" +
  128.                                 "<GoodsName>神州笔记本</GoodsName>" +
  129.                                 "<GoodsCode>QWERT_456456</GoodsCode>" +
  130.                                 "<Goodsquantity>2</Goodsquantity>" +
  131.                                 "<GoodsPrice>4200</GoodsPrice>" +
  132.                                 "</Commodity>" +
  133.                                 "</Commoditys>" +
  134.                                 "</Content>";
  135.  
  136.             Dictionary<string, string> param = new Dictionary<string, string>();
  137.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  138.             param.Add("EBusinessID", EBusinessID);
  139.             param.Add("RequestType", "1001");
  140.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  141.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  142.             param.Add("DataType", "1");
  143.  
  144.             string result = sendPost(ReqURL, param);
  145.  
  146.             //根据公司业务处理返回的信息......
  147.  
  148.             return result;
  149.         }
  150.  
  151.         /// <summary>
  152.         /// Post方式提交数据,返回网页的源代码
  153.         /// </summary>
  154.         /// <param name="url">发送请求的 URL</param>
  155.         /// <param name="param">请求的参数集合</param>
  156.         /// <returns>远程资源的响应结果</returns>
  157.         private string sendPost(string url, Dictionary<string, string> param)
  158.         {
  159.             string result = "";
  160.             StringBuilder postData = new StringBuilder();
  161.             if (param != null && param.Count > 0)
  162.             {
  163.                 foreach (var p in param)
  164.                 {
  165.                     if (postData.Length > 0)
  166.                     {
  167.                         postData.Append("&");
  168.                     }
  169.                     postData.Append(p.Key);
  170.                     postData.Append("=");
  171.                     postData.Append(p.Value);
  172.                 }
  173.             }
  174.             byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
  175.             try
  176.             {
  177.  
  178.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  179.                 request.ContentType = "application/x-www-form-urlencoded";
  180.                 request.Referer = url;
  181.                 request.Accept = "*/*";
  182.                 request.Timeout = 30 * 1000;
  183.                 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)";
  184.                 request.Method = "POST";
  185.                 request.ContentLength = byteData.Length;
  186.                 Stream stream = request.GetRequestStream();
  187.                 stream.Write(byteData, 0, byteData.Length);
  188.                 stream.Flush();
  189.                 stream.Close();
  190.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  191.                 Stream backStream = response.GetResponseStream();
  192.                 StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
  193.                 result = sr.ReadToEnd();
  194.                 sr.Close();
  195.                 backStream.Close();
  196.                 response.Close();
  197.                 request.Abort();
  198.             }
  199.             catch (Exception ex)
  200.             {
  201.                 result = ex.Message;
  202.             }
  203.             return result;
  204.         }
  205.  
  206.         ///<summary>
  207.         ///电商Sign签名
  208.         ///</summary>
  209.         ///<param name="content">内容</param>
  210.         ///<param name="keyValue">Appkey</param>
  211.         ///<param name="charset">URL编码 </param>
  212.         ///<returns>DataSign签名</returns>
  213.         private string encrypt(String content, String keyValue, String charset)
  214.         {
  215.             if (keyValue != null)
  216.             {
  217.                 return base64(MD5(content + keyValue, charset), charset);
  218.             }
  219.             return base64(MD5(content, charset), charset);
  220.         }
  221.  
  222.         ///<summary>
  223.         /// 字符串MD5加密
  224.         ///</summary>
  225.         ///<param name="str">要加密的字符串</param>
  226.         ///<param name="charset">编码方式</param>
  227.         ///<returns>密文</returns>
  228.         private string MD5(string str, string charset)
  229.         {
  230.             byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
  231.             try
  232.             {
  233.                 System.Security.Cryptography.MD5CryptoServiceProvider check;
  234.                 check = new System.Security.Cryptography.MD5CryptoServiceProvider();
  235.                 byte[] somme = check.ComputeHash(buffer);
  236.                 string ret = "";
  237.                 foreach (byte a in somme)
  238.                 {
  239.                     if (a < 16)
  240.                         ret += "0" + a.ToString("X");
  241.                     else
  242.                         ret += a.ToString("X");
  243.                 }
  244.                 return ret.ToLower();
  245.             }
  246.             catch
  247.             {
  248.                 throw;
  249.             }
  250.         }
  251.  
  252.         /// <summary>
  253.         /// base64编码
  254.         /// </summary>
  255.         /// <param name="str">内容</param>
  256.         /// <param name="charset">编码方式</param>
  257.         /// <returns></returns>
  258.         private string base64(String str, String charset)
  259.         {
  260.             return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
  261.         }
  262.     }
  263. }
  264.  

回复 "电商如何实现网上叫快递员-快递鸟在线下单接口"

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

captcha