using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Web.Script.Serialization; using System.Xml.Linq; using NetLibrary.Log; using System.Security.Cryptography; namespace NetLibrary.Express { public class EubApi { #region 发货 public string SendGoods(Eub_Order model, string authenticate, out string ErrorMessage) { if (string.IsNullOrEmpty(authenticate) == true) { ErrorMessage = "校验码不能为空"; return ""; } List ListHeader = new List(); ListHeader.Add("authenticate:" + authenticate); ListHeader.Add("version:international_eub_us_1.1"); string postmessage = model.ToXml(); //string sss = postmessage.Substring(1087, 50); //ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = Encoding.UTF8.GetBytes(postmessage); string XmlContent = "";// CustomIO.HttpRequest2("http://www.ems.com.cn/partner/api/public/p/order", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage); HttpWebResponse response; HttpWebRequest request; request = (HttpWebRequest)WebRequest.Create("http://shipping.ems.com.cn/partner/api/public/p/order"); //http://shipping2.ems.com.cn/partner/api/public/p/order ASCIIEncoding encoding = new ASCIIEncoding(); //string postData = string.Format(postmessage, ""); request.Method = "POST"; request.Headers.Add("authenticate:" + authenticate); request.Headers.Add("version:international_eub_us_1.1"); request.ProtocolVersion = HttpVersion.Version10; request.Timeout = 10000; Stream stream = request.GetRequestStream(); stream.Write(data, 0, data.Length); stream.Close(); string html = string.Empty; //获取服务器返回的资源 response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); request.Timeout = 10000; html = reader.ReadToEnd(); ErrorMessage = ""; if (html.Contains("error")) { ErrorMessage = html; return ""; } //if (string.IsNullOrEmpty(ErrorMessage) == false) return ""; XmlContent = html; //XmlContent = XmlContent.ToLower().Replace("![cdata", "![CDATA"); XElement doc = null; try { doc = XElement.Parse(XmlContent); } catch (Exception ex) { ErrorMessage = XmlContent; return ""; } string status = CustomIO.GetXmlElement(doc, "status"); if (status == "error") ErrorMessage = CustomIO.GetXmlElement(doc, "description"); string ExpressNo = CustomIO.GetXmlElement(doc, "mailnum"); return ExpressNo; } #endregion #region 追踪 public List GetTraces(string ExpressNo, string Language, string authenticate, out string ErrorMessage) { string mess = ""; ErrorMessage = ""; try { if (string.IsNullOrEmpty(authenticate) == true) { ErrorMessage = "校验码不能为空"; return null; } List ListHeader = new List(); ListHeader.Add("authenticate:" + authenticate); ListHeader.Add("version:international_eub_us_1.1"); string XmlContent = CustomIO.HttpRequest2("http://www.ems.com.cn/partner/api/public/p/track/query/" + Language + "/" + ExpressNo, "GET", "", ListHeader, HttpVersion.Version10, null, out ErrorMessage); if (XmlContent == null) { ErrorMessage = "查询不到"; return null; } XmlContent = XmlContent.ToLower(); mess = XmlContent; if (XmlContent != "") { int nelen = 0; while (XmlContent.IndexOf("", nelen) >= 0) { int slen = XmlContent.IndexOf("", nelen); nelen = slen + 7; int elen = XmlContent.IndexOf("", nelen); if (elen < 0) elen = XmlContent.IndexOf("", nelen); nelen = elen + 7; XmlContent = XmlContent.Substring(0, elen) + "" + XmlContent.Substring(nelen); } nelen = 0; while (XmlContent.IndexOf("", nelen) >= 0) { int slen = XmlContent.IndexOf("", nelen); nelen = slen + 8; int elen = XmlContent.IndexOf("", nelen); if (elen < 0) elen = XmlContent.IndexOf("", nelen); nelen = elen + 8; XmlContent = XmlContent.Substring(0, elen) + "" + XmlContent.Substring(nelen); } } // return null; XElement doc = XElement.Parse(XmlContent); List ListModel = new List(); foreach (var item in doc.Elements("trace")) { Eub_Trace model = new Eub_Trace(); string accepttime = CustomIO.GetXmlElement(item, "accepttime"); if (accepttime != "") { model.accepttime = Convert.ToDateTime(CustomIO.GetXmlElement(item, "accepttime")); } model.acceptaddress = CustomIO.GetXmlElement(item, "acceptaddress"); model.remark = CustomIO.GetXmlElement(item, "remark"); ListModel.Add(model); } return ListModel; } catch (Exception ex) { ErrorMessage = ex.Message; ErrorFollow.TraceWrite("GetTraces", ExpressNo, mess + " " + ex.Message); } return null; } #endregion #region 追踪 public string GetTraces2(string ExpressNo, string Language, string authenticate) { string ApiKey = "44d205c5e27d4383";//请把XXXXXX修改成您在快递100网站申请的APIKey // string expno =""; string typeCom = "youzhengguoji"; string nu = ExpressNo; string powered = "快递数据由: 快递100 提供"; //if (typeCom == "AAE全球专递") //{ // typeCom = "aae"; //} //if (typeCom == "安捷快递") //{ // typeCom = "anjiekuaidi"; //} //if (typeCom == "安信达快递") //{ // typeCom = "anxindakuaixi"; //} //if (typeCom == "百福东方") //{ // typeCom = "baifudongfang"; //} //if (typeCom == "彪记快递") //{ // typeCom = "biaojikuaidi"; //} //if (typeCom == "BHT") //{ // typeCom = "bht"; //} //if (typeCom == "BHT") //{ // typeCom = "bht"; //} //if (typeCom == "希伊艾斯快递") //{ // typeCom = "cces"; //} //if (typeCom == "中国东方") //{ // typeCom = "Coe"; //} //if (typeCom == "长宇物流") //{ // typeCom = "changyuwuliu"; //} //if (typeCom == "大田物流") //{ // typeCom = "datianwuliu"; //} //if (typeCom == "德邦物流") //{ // typeCom = "debangwuliu"; //} //if (typeCom == "DPEX") //{ // typeCom = "dpex"; //} //if (typeCom == "DHL") //{ // typeCom = "dhl"; //} //if (typeCom == "D速快递") //{ // typeCom = "dsukuaidi"; //} //if (typeCom == "fedex") //{ // typeCom = "fedex"; //} //if (typeCom == "飞康达物流") //{ // typeCom = "feikangda"; //} //if (typeCom == "凤凰快递") //{ // typeCom = "fenghuangkuaidi"; //} //if (typeCom == "港中能达物流") //{ // typeCom = "ganzhongnengda"; //} //if (typeCom == "广东邮政物流") //{ // typeCom = "guangdongyouzhengwuliu"; //} //if (typeCom == "汇通快运") //{ // typeCom = "huitongkuaidi"; //} //if (typeCom == "恒路物流") //{ // typeCom = "hengluwuliu"; //} //if (typeCom == "华夏龙物流") //{ // typeCom = "huaxialongwuliu"; //} //if (typeCom == "佳怡物流") //{ // typeCom = "jiayiwuliu"; //} //if (typeCom == "京广速递") //{ // typeCom = "jinguangsudikuaijian"; //} //if (typeCom == "急先达") //{ // typeCom = "jixianda"; //} //if (typeCom == "佳吉物流") //{ // typeCom = "jiajiwuliu"; //} //if (typeCom == "加运美") //{ // typeCom = "jiayunmeiwuliu"; //} //if (typeCom == "快捷速递") //{ // typeCom = "kuaijiesudi"; //} //if (typeCom == "联昊通物流") //{ // typeCom = "lianhaowuliu"; //} //if (typeCom == "龙邦物流") //{ // typeCom = "longbanwuliu"; //} //if (typeCom == "民航快递") //{ // typeCom = "minghangkuaidi"; //} //if (typeCom == "配思货运") //{ // typeCom = "peisihuoyunkuaidi"; //} //if (typeCom == "全晨快递") //{ // typeCom = "quanchenkuaidi"; //} //if (typeCom == "全际通物流") //{ // typeCom = "quanjitong"; //} //if (typeCom == "全日通快递") //{ // typeCom = "quanritongkuaidi"; //} //if (typeCom == "全一快递") //{ // typeCom = "quanyikuaidi"; //} //if (typeCom == "盛辉物流") //{ // typeCom = "shenghuiwuliu"; //} //if (typeCom == "速尔物流") //{ // typeCom = "suer"; //} //if (typeCom == "盛丰物流") //{ // typeCom = "shengfengwuliu"; //} //if (typeCom == "天地华宇") //{ // typeCom = "tiandihuayu"; //} //if (typeCom == "天天快递") //{ // typeCom = "tiantian"; //} //if (typeCom == "TNT") //{ // typeCom = "tnt"; //} //if (typeCom == "UPS") //{ // typeCom = "ups"; //} //if (typeCom == "万家物流") //{ // typeCom = "wanjiawuliu"; //} //if (typeCom == "文捷航空速递") //{ // typeCom = "wenjiesudi"; //} //if (typeCom == "伍圆速递") //{ // typeCom = "wuyuansudi"; //} //if (typeCom == "万象物流") //{ // typeCom = "wanxiangwuliu"; //} //if (typeCom == "新邦物流") //{ // typeCom = "xinbangwuliu"; //} //if (typeCom == "信丰物流") //{ // typeCom = "xinfengwuliu"; //} //if (typeCom == "星晨急便") //{ // typeCom = "xingchengjibian"; //} //if (typeCom == "鑫飞鸿物流") //{ // typeCom = "xinhongyukuaidi"; //} //if (typeCom == "亚风速递") //{ // typeCom = "yafengsudi"; //} //if (typeCom == "一邦速递") //{ // typeCom = "yibangwuliu"; //} //if (typeCom == "优速物流") //{ // typeCom = "youshuwuliu"; //} //if (typeCom == "远成物流") //{ // typeCom = "yuanchengwuliu"; //} //if (typeCom == "圆通速递") //{ // typeCom = "yuantong"; //} //if (typeCom == "源伟丰快递") //{ // typeCom = "yuanweifeng"; //} //if (typeCom == "元智捷诚快递") //{ // typeCom = "yuanzhijiecheng"; //} //if (typeCom == "越丰物流") //{ // typeCom = "yuefengwuliu"; //} //if (typeCom == "韵达快递") //{ // typeCom = "yunda"; //} //if (typeCom == "源安达") //{ // typeCom = "yuananda"; //} //if (typeCom == "运通快递") //{ // typeCom = "yuntongkuaidi"; //} //if (typeCom == "宅急送") //{ // typeCom = "zhaijisong"; //} //if (typeCom == "中铁快运") //{ // typeCom = "zhongtiewuliu"; //} //if (typeCom == "中通速递") //{ // typeCom = "zhongtong"; //} //if (typeCom == "中邮物流") //{ // typeCom = "zhongyouwuliu"; //} string apiurl = "http://api.kuaidi100.com/api?id=" + ApiKey + "&com=" + typeCom + "&nu=" + nu + "&show=2&muti=1&order=asc"; //Response.Write (apiurl); WebRequest request = WebRequest.Create(@apiurl); WebResponse response = request.GetResponse(); Stream stream = response.GetResponseStream(); Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(stream, encode); string detail = reader.ReadToEnd(); //Response.Write(detail + "
" + powered); Regex reg = new Regex("(?.*?)"); var ms = reg.Matches(detail); string aa = ""; for (int i = 0; i < ms.Count; i++) { aa += ms[i].Groups["val"].Value; } return detail; } public string PostSend2(string output, string Url) { try { string strReturn = ""; byte[] obtPostData = Encoding.UTF8.GetBytes(output.ToString()); HttpWebRequest orqRequest = (HttpWebRequest)WebRequest.Create(Url); orqRequest.Timeout = 5000; orqRequest.Method = "POST"; orqRequest.ContentType = "text/xml; charset=utf-8"; orqRequest.ContentLength = obtPostData.Length; //orqRequest.Headers.Add(HttpRequestHeader.Authorization, "basic " + APIToken); Stream stream; using (stream = orqRequest.GetRequestStream()) { stream.Write(obtPostData, 0, obtPostData.Length); } HttpWebResponse orsResponse = (HttpWebResponse)orqRequest.GetResponse(); using (Stream responseStream = orsResponse.GetResponseStream()) { using (StreamReader streamRead = new StreamReader(responseStream, Encoding.UTF8)) { strReturn = streamRead.ReadToEnd(); } } return strReturn; } catch (Exception ex) { // ErrorFollow.TraceWrite("PostSend", output, ex.Message); return "运行错误" + ex.Message; } return ""; } public TrackInfo PostSend3(string output, string Url, string Url1) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.CookieContainer = new CookieContainer(); CookieContainer cookie = request.CookieContainer;//如果用不到Cookie,删去即可 //以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链 request.Referer = Url1; request.Accept = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers["Accept-Language"] = "zh-CN,zh;q=0."; request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3"; request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"; request.KeepAlive = false; //上面的http头看情况而定,但是下面俩必须加 request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; Encoding encoding = Encoding.UTF8;//根据网站的编码自定义 byte[] postData = encoding.GetBytes(output);//postDataStr即为发送的数据,格式还是和上次说的一样 request.ContentLength = postData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(postData, 0, postData.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); //如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可 if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip")) { responseStream = new GZipStream(responseStream, CompressionMode.Decompress); } StreamReader streamReader = new StreamReader(responseStream, encoding); string retString = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); TrackInfo Model = null; JavaScriptSerializer JsonConvert = new JavaScriptSerializer(); if (retString != null && retString != "") { Model = JsonConvert.Deserialize(retString); } return Model; } catch (Exception ex) { TrackInfo Model = new TrackInfo(); Model.msg = "运行错误" + ex.Message; return Model; // ErrorFollow.TraceWrite("PostSend", output, ex.Message); } return null; } public void PostSend31(string output, string Url, string Url1) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Timeout = 3000; request.CookieContainer = new CookieContainer(); CookieContainer cookie = request.CookieContainer;//如果用不到Cookie,删去即可 //以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链 request.Referer = Url1; request.Accept = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers["Accept-Language"] = "zh-CN,zh;q=0."; request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3"; request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"; request.KeepAlive = false; //上面的http头看情况而定,但是下面俩必须加 request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; Encoding encoding = Encoding.UTF8;//根据网站的编码自定义 byte[] postData = encoding.GetBytes(output);//postDataStr即为发送的数据,格式还是和上次说的一样 request.ContentLength = postData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(postData, 0, postData.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); ////如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可 //if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip")) //{ // responseStream = new GZipStream(responseStream, CompressionMode.Decompress); //} //StreamReader streamReader = new StreamReader(responseStream, encoding); ////string retString = streamReader.ReadToEnd(); responseStream.Close(); response.Close(); } catch (Exception ex) { } } public TrackInfo PostSend(string output, string Url) { try { string strReturn = ""; byte[] obtPostData = Encoding.UTF8.GetBytes(output.ToString()); HttpWebRequest orqRequest = (HttpWebRequest)WebRequest.Create(Url); orqRequest.Timeout = 10000; orqRequest.Method = "POST"; orqRequest.ContentType = "text/xml; charset=utf-8"; orqRequest.ContentLength = obtPostData.Length; //orqRequest.Headers.Add(HttpRequestHeader.Authorization, "basic " + APIToken); Stream stream; using (stream = orqRequest.GetRequestStream()) { stream.Write(obtPostData, 0, obtPostData.Length); } HttpWebResponse orsResponse = (HttpWebResponse)orqRequest.GetResponse(); using (Stream responseStream = orsResponse.GetResponseStream()) { using (StreamReader streamRead = new StreamReader(responseStream, Encoding.UTF8)) { strReturn = streamRead.ReadToEnd(); } } orsResponse.Close(); TrackInfo Model = null; JavaScriptSerializer JsonConvert = new JavaScriptSerializer(); if (strReturn != null && strReturn != "") { Model = JsonConvert.Deserialize(strReturn); } return Model; } catch (Exception ex) { TrackInfo Model = new TrackInfo(); Model.msg = "运行错误" + ex.Message; return Model; // ErrorFollow.TraceWrite("PostSend", output, ex.Message); } return null; } #endregion /// /// 获得字符串中开始和结束字符串中间得值 /// /// 字符串 /// 开始 /// 结束 /// public static string GetValue(string str, string s, string e) { Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline); return rg.Match(str).Value; } #region 运费估算 public Eub_Fee GetFee(Eub_Fee model, string authenticate, out string ErrorMessage) { if (string.IsNullOrEmpty(authenticate) == true) { ErrorMessage = "校验码不能为空"; return null; } List ListHeader = new List(); ListHeader.Add("authenticate:" + authenticate); ListHeader.Add("version:international_eub_us_1.1"); string postmessage = model.ToXml(); ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = encoding.GetBytes(postmessage); string XmlContent = CustomIO.HttpRequest2("http://www.ems.com.cn/partner/api/public/p/rate/epacket", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage); XmlContent = XmlContent.ToLower(); XElement doc = XElement.Parse(XmlContent); string fee = CustomIO.GetXmlElement(doc, "fee"); model.fee = Convert.ToDecimal(fee); model.remark = CustomIO.GetXmlElement(doc, "remark"); return model; } #endregion #region 发货测试 public string SendGoods2(string xml, string authenticate, out string ErrorMessage) { if (string.IsNullOrEmpty(authenticate) == true) { ErrorMessage = "校验码不能为空"; return ""; } List ListHeader = new List(); ListHeader.Add("authenticate:" + authenticate); ListHeader.Add("version:international_eub_us_1.1"); string postmessage = xml; //string sss = postmessage.Substring(1087, 50); ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = encoding.GetBytes(postmessage); string XmlContent = CustomIO.HttpRequest2("http://www.ems.com.cn/partner/api/public/p/order", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return ""; XmlContent = XmlContent.ToLower(); //XmlContent = XmlContent.ToLower().Replace("![cdata", "![CDATA"); XElement doc = null; try { doc = XElement.Parse(XmlContent); } catch (Exception ex) { ErrorMessage = XmlContent; return ""; } string status = CustomIO.GetXmlElement(doc, "status"); if (status == "error") ErrorMessage = CustomIO.GetXmlElement(doc, "description"); string ExpressNo = CustomIO.GetXmlElement(doc, "mailnum"); return ExpressNo; } #endregion #region 面单 public string GetLabel(string xml, string authenticate, out string ErrorMessage) { if (string.IsNullOrEmpty(authenticate) == true) { ErrorMessage = "校验码不能为空"; return ""; } List ListHeader = new List(); ListHeader.Add("authenticate:" + authenticate); ListHeader.Add("version:international_eub_us_1.1"); string postmessage = xml; //string sss = postmessage.Substring(1087, 50); ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = encoding.GetBytes(postmessage); string XmlContent = CustomIO.HttpRequest2("http://shipping.ems.com.cn/partner/api/public/p/print/downloadLabels", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return ""; XmlContent = XmlContent.ToLower(); //XmlContent = XmlContent.ToLower().Replace("![cdata", "![CDATA"); XElement doc = null; try { doc = XElement.Parse(XmlContent); } catch (Exception ex) { ErrorMessage = XmlContent; return ""; } string status = CustomIO.GetXmlElement(doc, "status"); if (status == "error") ErrorMessage = CustomIO.GetXmlElement(doc, "description"); string url = CustomIO.GetXmlElement(doc, "url"); return url; } #endregion #region 面单 public string GetLabelPdf(string postcode, string authenticate) { if (string.IsNullOrEmpty(authenticate) == true) { return ""; } //List ListHeader = new List(); //ListHeader.Add("authenticate:" + authenticate); //ListHeader.Add("version:international_eub_us_1.1"); string md5auth = MD5Encrypt(authenticate + postcode); string url = "http://labels.ems.com.cn/partner/api/public/p/static/label/download/" + md5auth + "/" + postcode + ".pdf"; return url; } #endregion ///   ///   给一个字符串进行MD5加密 ///   ///   待加密字符串 ///   加密后的字符串 public static string MD5Encrypt(string str) { string cl = str; MD5 md5 = MD5.Create();//实例化一个md5对像 // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl)); // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 int i, j; string pwd = ""; foreach (byte b in s) { i = Convert.ToInt32(b); j = i >> 4; pwd += Convert.ToString(j, 16); j = i & 15; pwd += Convert.ToString(j, 16); } return pwd; } } #region 订单 public class Eub_Order { /// /// 订单标识(可以重复分包的情况下) /// public string Orderid { get; set; } public string OrderCode { get; set; } /// /// 业务类型(0:e 邮宝1:e 包裹2:e 特快) /// public int operationtype { get; set; } /// /// 产品种类(默认0,1:国际包裹投递2:国际包裹签收如果选择e 包裹业务,此字段将不能为空 /// public int producttype { get; set; } /// /// 客户编码 /// public string customercode { get; set; } /// /// 大客户编号使用者如果拥有EMS 大客户代码,应填入此字段 /// public string vipcode { get; set; } /// /// 揽收类型,1上门揽收或0用户自送 /// public int clcttype { get; set; } /// /// 电子签收 /// public bool pod { get; set; } /// /// 退回类型,默认为Returned (Abandoned|AND I ASSURE TO PAY FOR THE CHARGE OF RETURN|Returned) /// public string untread { get; set; } /// /// 体积重量=长(单位:厘米)×宽(单位:厘米)×高(单位:厘米)/6000,客户需填写长、宽、高及体积重量 /// public int volweight { get; set; } /// /// 预约开始时间 /// public DateTime startdate { get; set; } /// /// 预约终止时间 /// public DateTime enddate { get; set; } /// /// 备注 /// public string remark { get; set; } /// /// 客户自定义信息1 /// public string sku1 { get; set; } /// /// 客户自定义信息2 /// public string sku2 { get; set; } /// /// 订单条码,如果需要打印出标志该订单的条码,就填写该值 /// public string barcode { get; set; } /// /// 该订单要求的的打印格式,00 表示A4,01表示4×4标签,03表示4×6标签,默认值是01 /// public string printcode { get; set; } public string BuyID { get; set; } /// /// 寄件人信息 /// public Eub_Person sender { get; set; } /// /// 快递收货人信息 /// public Eub_Person collect { get; set; } /// /// 收件人信息 /// public Eub_Person receiver { get; set; } public List ListGoods { get; set; } public Eub_Order() { this.operationtype = 0; this.producttype = 0; this.printcode = "01"; sender = new Eub_Person(); collect = new Eub_Person(); receiver = new Eub_Person(); ListGoods = new List(); } public string ToXml() { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""+this.Orderid+""); sb.Append(""+this.operationtype+""); sb.Append("" + this.producttype + ""); sb.Append("" + this.customercode + ""); sb.Append("" + this.vipcode + ""); sb.Append("" + this.clcttype + ""); sb.Append("" + this.pod.ToString().ToLower() + ""); sb.Append("" + this.untread + ""); sb.Append("" + this.volweight + ""); sb.Append("" + this.startdate.ToString("yyyy-MM-ddTHH:mm:ss") + ""); sb.Append("" + this.enddate.ToString("yyyy-MM-ddTHH:mm:ss") + ""); sb.Append("" + this.remark + ""); sb.Append("" + this.sku1 + ""); sb.Append("" + this.sku2 + ""); sb.Append("" + this.barcode + ""); sb.Append("" + this.printcode + ""); sb.Append(""); sb.Append("" + this.sender.name + ""); sb.Append("" + this.sender.postcode + ""); sb.Append("" + this.sender.phone + ""); sb.Append("" + this.sender.mobile + ""); sb.Append("" + this.sender.country + ""); sb.Append("" + this.sender.province + ""); sb.Append("" + this.sender.city + ""); sb.Append("" + this.sender.county + ""); sb.Append("" + this.sender.company + ""); sb.Append("" + this.sender.street + ""); sb.Append("" + this.sender.email + ""); sb.Append(""); sb.Append(""); sb.Append("" + this.receiver.name + ""); sb.Append("" + this.receiver.postcode + ""); sb.Append("" + this.receiver.phone + ""); sb.Append("" + this.receiver.mobile + ""); sb.Append("" + this.receiver.country + ""); sb.Append("" + this.receiver.province + ""); sb.Append("" + this.receiver.city + ""); sb.Append("" + this.receiver.county + ""); sb.Append("" + this.receiver.company + ""); sb.Append("" + this.receiver.street + ""); sb.Append(""); sb.Append(""); sb.Append("" + this.collect.name + ""); sb.Append("" + this.collect.postcode + ""); sb.Append("" + this.collect.phone + ""); sb.Append("" + this.collect.mobile + ""); sb.Append("" + this.collect.country + ""); sb.Append("" + this.collect.province + ""); sb.Append("" + this.collect.city + ""); sb.Append("" + this.collect.county + ""); sb.Append("" + this.collect.company + ""); sb.Append("" + this.collect.street + ""); sb.Append("" + this.collect.email + ""); sb.Append(""); sb.Append(""); foreach (var item in this.ListGoods) { sb.Append(""); sb.Append("" + item.cnname + ""); sb.Append("" + item.enname + ""); sb.Append("" + item.count + ""); sb.Append("" + item.unit + ""); sb.Append("" + item.weight.ToString("f3") + ""); sb.Append("" + item.delcarevalue.ToString("f2") + ""); sb.Append(""+item.origin+""); sb.Append("" + item.description + ""); sb.Append(""); } sb.Append(""); sb.Append(""); sb.Append(""); return sb.ToString(); } } #endregion #region 寄件人或收货人或收件人信息 public class Eub_Person { /// /// 姓名 /// public string name { get; set; } /// /// 邮编 /// public string postcode { get; set; } /// /// 电话 /// public string phone { get; set; } /// /// 手机 /// public string mobile { get; set; } /// /// 国家 /// public string country { get; set; } /// /// 省份代码 /// public string province { get; set; } /// /// 城市代码 /// public string city { get; set; } /// /// 区县代码 /// public string county { get; set; } /// /// 公司 /// public string company { get; set; } /// /// 街道 /// public string street { get; set; } /// /// 电子邮箱 /// public string email { get; set; } } #endregion #region 物品信息 public class Eub_Goods { /// /// 中文名 /// public string cnname { get; set; } /// /// 英文名 /// public string enname { get; set; } /// /// 数量 /// public int count { get; set; } /// /// 单位 /// public string unit { get; set; } /// /// 重量,千克(三位小数),该重量是单个商品重量*数量 /// public decimal weight { get; set; } /// /// 报关价格(两位小数),该价格是单个商品的报关价格*数量 /// public decimal delcarevalue { get; set; } /// /// 原寄地,固定填写CN /// public string origin { get; set; } /// /// 描述(英文) /// public string description { get; set; } /// /// 税则号,填写2-8 位的数字(选填) /// public string taxationid { get; set; } public Eub_Goods() { origin = "CN"; } } #endregion #region 快递追踪信息 public class Eub_Trace { public DateTime? accepttime { get; set; } public string acceptaddress { get; set; } public string remark { get; set; } } #endregion #region 运费估算 public class Eub_Fee { /// /// 业务类型(默认0:e 邮宝1:标识国际包裹2:在线ems /// public int operationtype { get; set; } /// /// 重量信息,单位为克 /// public decimal weight { get; set; } /// /// 国家简称 /// public string recvcountry { get; set; } /// /// 原寄国家简称,中国为CN /// public string sendcountry { get; set; } /// /// 省级代码 /// public string sdprov { get; set; } /// /// 估算费用 /// public decimal fee { get; set; } /// /// 备注 /// public string remark { get; set; } public string ToXml() { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); sb.Append("" + this.operationtype + ""); sb.Append("" + this.weight.ToString("f3") + ""); sb.Append("" + this.recvcountry + ""); sb.Append("" + this.sendcountry + ""); sb.Append("" + this.sdprov + ""); sb.Append(""); return sb.ToString(); } } #endregion public class TrackInfo { public Int32? ret { get; set; } public string msg { get; set; } public string g { get; set; } public List dat { get; set; } } public class TrackInfodat { public string no { get; set; } public string delay { get; set; } public string yt { get; set; } public TrackInfotrack track { get; set; } } public class TrackInfotrack { public Int32? b { get; set; } public Int32? c { get; set; } public Int32? e { get; set; } public Int32? f { get; set; } public Int32? w1 { get; set; } public Int32? w2 { get; set; } public Int32? is1 { get; set; } public Int32? is2 { get; set; } public Int32? ygt1 { get; set; } public Int32? ygt2 { get; set; } public string ylt1 { get; set; } public string ylt2 { get; set; } public string yt { get; set; } public TrackZ z0 { get; set; } public List z1 { get; set; } public List z2 { get; set; } } public class TrackZ { public string a { get; set; } public string b { get; set; } public string c { get; set; } public string d { get; set; } public string z { get; set; } } }