using NetLibrary; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Web.Script.Serialization; using System.Net; using System.IO; using NetLibrary.Data; using System.Data.Common; using System.Data; namespace NetLibrary.OnlineTrade { public class AlibabaApi { public string Url = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.findOrderListQuery/"; public string Appkey { get; set; } public Int32 ShopId { get; set; } public string DeveKey { get; set; } public string RefreshToken { get; set; } public string AccessToken { get; set; } public DateTime? AccessTokenUpdateTime { get; set; } public DateTime? RefreshTokenSaveTime { get; set; } public string GroupName { get; set; } public string Code { get; set; } public int RequestNum = 0; public int Num = 0; JavaScriptSerializer JsonConvert = null; public AlibabaApi() { JsonConvert = new JavaScriptSerializer(); this.Appkey = "4777502"; this.DeveKey = "QQEkGZe0G93"; } #region 签名函数 public string Sign(string urlPath, Dictionary paramDic, string devekey) { byte[] signatureKey = Encoding.UTF8.GetBytes(devekey); List list = new List(); foreach (KeyValuePair kv in paramDic) { list.Add(kv.Key + kv.Value); } list.Sort(); string tmp = urlPath; foreach (string kvstr in list) { tmp = tmp + kvstr; } //HMAC-SHA1 HMACSHA1 hmacsha1 = new HMACSHA1(signatureKey); hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(tmp)); byte[] hash = hmacsha1.Hash; //TO HEX return BitConverter.ToString(hash).Replace("-", string.Empty).ToUpper(); } #endregion #region 授权签名_不使用 string GetSignName() { Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("grant_type", "refresh_token"); paramDic.Add("client_id", Appkey); paramDic.Add("client_secret", DeveKey); paramDic.Add("refresh_token", RefreshToken); string rUrl = "https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/refreshToken/" + Appkey + "?"; string signature = Sign("param2/1/system.oauth2/refreshToken/" + Appkey, paramDic, DeveKey); List list = new List(); foreach (KeyValuePair kv in paramDic) { list.Add(kv.Key + "=" + kv.Value); } list.Sort(); foreach (string kvstr in list) { rUrl = rUrl + kvstr + "&"; } rUrl = rUrl + "_aop_signature=" + signature; return rUrl; } #endregion #region 获取权限令牌_不使用 string GetAccessToken() { string AccessToken = ""; string signatureUrl = GetSignName(); signatureUrl = "https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/refreshToken/4777502?client_id=4777502&client_secret=QQEkGZe0G93&grant_type=refresh_token&refresh_token=55cd0af4-0a2e-482e-85fc-f660bf95825e&_aop_signature=4BDE5E758525958BC95C447BB3DD459F1E8EBF7C"; string ErrorMessage = ""; string XmlContent = CustomIO.HttpRequest(signatureUrl, "POST", out ErrorMessage); RequestNum++; Regex re = new Regex(@"""access_token"":""(?'1'[^""]+)"""); Match matchtemp = re.Match(XmlContent); AccessToken = matchtemp.Groups[1].ToString(); return AccessToken; } #endregion #region 返回速卖通首次开通API调用首次用户授权Url public string GetAuthUrl() { Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("client_id", Appkey); paramDic.Add("site", "aliexpress"); //redirect_uri: 用户完成授权之后,回跳到第三方的地址 paramDic.Add("redirect_uri", "http://gw.api.alibaba.com/auth/authCode.htm"); string redirect_uri = "http://gw.api.alibaba.com/auth/authCode.htm"; //state:可选,app自定义参数,回跳到redirect_uri时,会原样返回 //paramDic.Add("state", "aliexpress"); //string url = "http://gw.api.alibaba.com/auth/authorize.htm?"; //API api = new API(); string signature = sign(paramDic, DeveKey); string url = "http://authhz.alibaba.com/auth/authorize.htm?client_id=" + Appkey + "&site=aliexpress&redirect_uri=" + redirect_uri + "&_aop_signature=" + signature; //List list = new List(); //foreach (KeyValuePair kv in paramDic) //{ // list.Add(kv.Key + "=" + kv.Value); //} //list.Sort(); //foreach (string kvstr in list) //{ // url = url + kvstr + "&"; //} //url = url + "_aop_signature=" + signature; return url; } #endregion #region 返回速卖通首次开通API调用首次用户授权Url public string GetAuthUrl2() { Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("client_id", Appkey); paramDic.Add("site", "aliexpress"); //redirect_uri: 用户完成授权之后,回跳到第三方的地址 paramDic.Add("redirect_uri", "http://gw.api.alibaba.com/auth/authCode.htm"); string redirect_uri = "http://gw.api.alibaba.com/auth/authCode.htm"; //state:可选,app自定义参数,回跳到redirect_uri时,会原样返回 //paramDic.Add("state", "aliexpress"); //string url = "http://gw.api.alibaba.com/auth/authorize.htm?"; //API api = new API(); string signature = sign(paramDic, DeveKey); string url = "http://authhz.alibaba.com/auth/authorize.htm?client_id=" + Appkey + "&site=aliexpress&redirect_uri=" + redirect_uri + "&_aop_signature=" + signature; //List list = new List(); //foreach (KeyValuePair kv in paramDic) //{ // list.Add(kv.Key + "=" + kv.Value); //} //list.Sort(); //foreach (string kvstr in list) //{ // url = url + kvstr + "&"; //} //url = url + "_aop_signature=" + signature; return url; } #endregion private string sign(Dictionary paramDic, string appSecret) { byte[] signatureKey = Encoding.UTF8.GetBytes(appSecret); //第一步:拼装key+value List list = new List(); foreach (KeyValuePair kv in paramDic) { list.Add(kv.Key + kv.Value); } //第二步:排序 list.Sort(); //第三步:拼装排序后的各个字符串 string tmp = ""; foreach (string kvstr in list) { tmp = tmp + kvstr; } //第四步:将拼装后的字符串和app密钥一起计算签名 //HMAC-SHA1 HMACSHA1 hmacsha1 = new HMACSHA1(signatureKey); hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(tmp)); byte[] hash = hmacsha1.Hash; //TO HEX return BitConverter.ToString(hash).Replace("-", string.Empty).ToUpper(); } private string sign2(string urlPath, Dictionary paramDic) { byte[] signatureKey = Encoding.UTF8.GetBytes(DeveKey);//此处用自己的签名密钥 List list = new List(); foreach (KeyValuePair kv in paramDic) { list.Add(kv.Key + kv.Value); } list.Sort(); string tmp = urlPath; foreach (string kvstr in list) { tmp = tmp + kvstr; } //HMAC-SHA1 HMACSHA1 hmacsha1 = new HMACSHA1(signatureKey); hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(tmp)); /* hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(urlPath)); foreach (string kvstr in list) { hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(kvstr)); } */ byte[] hash = hmacsha1.Hash; //TO HEX return BitConverter.ToString(hash).Replace("-", string.Empty).ToUpper(); } private string sign3(string urlPath, Dictionary paramDic) { byte[] signatureKey = Encoding.UTF8.GetBytes("YOURSIGNATRUEKEY");//此处用自己的签名密钥 List list = new List(); foreach (KeyValuePair kv in paramDic) { list.Add(kv.Key + kv.Value); } list.Sort(); string tmp = urlPath; foreach (string kvstr in list) { tmp = tmp + kvstr; } //HMAC-SHA1 HMACSHA1 hmacsha1 = new HMACSHA1(signatureKey); hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(tmp)); /* hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(urlPath)); foreach (string kvstr in list) { hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(kvstr)); } */ byte[] hash = hmacsha1.Hash; //TO HEX return BitConverter.ToString(hash).Replace("-", string.Empty).ToUpper(); } #region 获取零时和长时令牌 public void GetAllToken(out string ErrorMessage) { //string URL = "https://gw.api.alibaba.com/openapi/http/1/system.oauth2/getToken/YOUR_APPKEY?grant_type=authorization_code&need_refresh_token=true&client_id= YOUR_APPKEY&client_secret= YOUR_APPSECRET&redirect_uri=YOUR_REDIRECT_URI&code=CODE string URL = "https://gw.api.alibaba.com/openapi/http/1/system.oauth2/getToken/" + Appkey + "?grant_type=authorization_code&need_refresh_token=true&client_id=" + Appkey + "&client_secret=" + DeveKey + "&redirect_uri=http://121.43.228.63/&code=" + Code; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); RequestNum++; Regex re = new Regex(@"""access_token"":""(?'1'[^""]+)"""); Match matchtemp = re.Match(XmlContent); Regex re1 = new Regex(@"""refresh_token"":""(?'1'[^""]+)"""); Match matchtemp1 = re1.Match(XmlContent); AccessToken = matchtemp.Groups[1].Value; RefreshToken = matchtemp1.Groups[1].Value; RefreshTokenSaveTime = DateTime.Now; AccessTokenUpdateTime = DateTime.Now; } #endregion #region 当长时令牌超过25天,那么重新请求 public void GetRefreshToken(out string ErrorMessage) { //ErrorMessage = ""; RefreshTokenSaveTime = DateTime.Now; // return; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("client_id", Appkey); paramDic.Add("client_secret", DeveKey); paramDic.Add("refresh_token", RefreshToken); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/system.oauth2/postponeToken/" + Appkey; string signature = sign(paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/postponeToken/" + Appkey + "?client_id=" + Appkey + "&client_secret=" + DeveKey + "&refresh_token=" + RefreshToken + "&access_token=" + AccessToken; //URL += "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; RequestNum++; Regex re = new Regex(@"""access_token"":""(?'1'[^""]+)"""); Match matchtemp = re.Match(XmlContent); Regex re1 = new Regex(@"""refresh_token"":""(?'1'[^""]+)"""); Match matchtemp1 = re1.Match(XmlContent); AccessToken = matchtemp.Groups[1].Value; RefreshToken = matchtemp1.Groups[1].Value; RefreshTokenSaveTime = DateTime.Now; AccessTokenUpdateTime = DateTime.Now; UpdateShopToken(); } #endregion #region 当访问令牌超过10小时,那么重新请求 public void GetAccessToken2(out string ErrorMessage) { // ErrorMessage = ""; //return; string URL = "https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/getToken/" + Appkey + "?grant_type=refresh_token&client_id=" + Appkey + "&client_secret=" + DeveKey + "&refresh_token=" + RefreshToken; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; RequestNum++; Regex re = new Regex(@"""access_token"":""(?'1'[^""]+)"""); Match matchtemp = re.Match(XmlContent); AccessToken = matchtemp.Groups[1].Value; AccessTokenUpdateTime = DateTime.Now; UpdateShopToken(); } #endregion #region 当访问令牌超过10小时,那么重新请求 public void GetAccessToken21(out string ErrorMessage) { // ErrorMessage = ""; //return; string URL = "https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/getToken/" + Appkey + "?grant_type=refresh_token&client_id=" + Appkey + "&client_secret=" + DeveKey + "&refresh_token=" + RefreshToken; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; RequestNum++; Regex re = new Regex(@"""access_token"":""(?'1'[^""]+)"""); Match matchtemp = re.Match(XmlContent); AccessToken = matchtemp.Groups[1].Value; AccessTokenUpdateTime = DateTime.Now; UpdateShopToken(); UpdateShopToken3(); } #endregion #region 得到待发货订单 public List GetWaitGoods(DateTime? StartTime, DateTime? StopTime, bool IsReadMsg,List OList, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-5)) { GetRefreshToken(out ErrorMessage); } if ( RefreshTokenSaveTime.Value.AddDays(160) < DateTime.Now) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("page", "1"); paramDic.Add("pageSize", "50"); paramDic.Add("orderStatus", "WAIT_SELLER_SEND_GOODS"); //if (StartTime!=null) //paramDic.Add("createDateStart", StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); // if (StopTime != null) // paramDic.Add("createDateEnd", StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); string MethodName = "param2/1/aliexpress.open/api.findOrderListQuery/" + Appkey; string signature = signPath(MethodName, paramDic,DeveKey); string rUrl = Url + Appkey + "?access_token=" + AccessToken + "&page=1&pageSize=50&orderStatus=WAIT_SELLER_SEND_GOODS"; //if (StartTime != null) rUrl += "&createDateStart=" + StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); //if (StopTime != null) rUrl += "&createDateEnd=" + StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); rUrl += "&_aop_signature="+signature; string XmlContent = CustomIO.HttpRequest(rUrl, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; AlibabaOrder Model = JsonConvert.Deserialize(XmlContent); if (Model.orderList == null) return Model.ToListOrderModel(); foreach (var item in Model.orderList) { if (IsReadMsg == true) { item.msgListNew = GetMsgData3(item.orderId.ToString(), "order_msg", out ErrorMessage); //if (string.IsNullOrEmpty(ErrorMessage) == false) // return null; } item.OrderState = 1; // item.BuyersInfo=GetBuyers(item.orderId.ToString(), out ErrorMessage); item.buyerInfo = GetOrderXXInfo(item.orderId.ToString(), out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; } if (Model.totalItem < 50) return Model.ToListOrderModel(); int PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(Model.totalItem) / Convert.ToDecimal(50))); for (int i = 1; i < PageCount; i++) { rUrl = Url + Appkey + "?access_token=" + AccessToken + "&page=" + (i + 1) + "&pageSize=50&orderStatus=WAIT_SELLER_SEND_GOODS"; // if (StartTime != null) rUrl += "&createDateStart=" + StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); //if (StopTime != null) rUrl += "&createDateEnd=" + StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); Dictionary paramDic1 = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic1.Add("access_token", AccessToken); paramDic1.Add("page", (i + 1).ToString()); paramDic1.Add("pageSize", "50"); paramDic1.Add("orderStatus", "WAIT_SELLER_SEND_GOODS"); //if (StartTime != null) //paramDic1.Add("createDateStart", StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); //if (StopTime != null) // paramDic1.Add("createDateEnd", StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); string signature1 = signPath(MethodName, paramDic1, DeveKey); rUrl += "&_aop_signature=" + signature1; XmlContent = CustomIO.HttpRequest(rUrl, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; AlibabaOrder Model2 = JsonConvert.Deserialize(XmlContent); foreach (var item in Model2.orderList) { //if (item.orderId == 72860947447064) //{ // string treqq = "72860947447064"; //} int iscz=0; //是否已经导入过 if (OList != null) { var omd = OList.Find(n => n.OrderCode == item.orderId.ToString()); if (omd != null) iscz = 1; } if (iscz==0&&IsReadMsg == true) { item.msgListNew = GetMsgData3(item.orderId.ToString(), "order_msg", out ErrorMessage); // if (string.IsNullOrEmpty(ErrorMessage) == false) // return null; } // item.BuyersInfo = GetBuyers(item.orderId.ToString(), out ErrorMessage); if (iscz == 0) { item.buyerInfo = GetOrderXXInfo(item.orderId.ToString(), out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; } item.OrderState = 1; Model.orderList.Add(item.Copy()); } } return Model.ToListOrderModel(); } #endregion #region 得到待发货订单 public List GetWaitGoods2(DateTime? StartTime, DateTime? StopTime, bool IsReadMsg, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-5)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("page", "1"); paramDic.Add("pageSize", "50"); paramDic.Add("orderStatus", "WAIT_SELLER_SEND_GOODS"); if (StartTime != null) paramDic.Add("createDateStart", StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); if (StopTime != null) paramDic.Add("createDateEnd", StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); string MethodName = "param2/1/aliexpress.open/api.findOrderListQuery/" + Appkey; string signature = signPath(MethodName, paramDic, DeveKey); string rUrl = Url + Appkey + "?access_token=" + AccessToken + "&page=1&pageSize=50&orderStatus=WAIT_SELLER_SEND_GOODS"; if (StartTime != null) rUrl += "&createDateStart=" + StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); if (StopTime != null) rUrl += "&createDateEnd=" + StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); rUrl += "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(rUrl, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; AlibabaOrder Model = JsonConvert.Deserialize(XmlContent); if (Model.orderList == null) return Model.ToListOrderModel(); foreach (var item in Model.orderList) { if (IsReadMsg == true) { item.msgListNew = GetMsgData3(item.orderId.ToString(), "order_msg", out ErrorMessage); //if (string.IsNullOrEmpty(ErrorMessage) == false) // return null; } item.OrderState = 1; // item.BuyersInfo=GetBuyers(item.orderId.ToString(), out ErrorMessage); item.buyerInfo = GetOrderXXInfo(item.orderId.ToString(), out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; } if (Model.totalItem < 50) return Model.ToListOrderModel(); int PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(Model.totalItem) / Convert.ToDecimal(50))); for (int i = 1; i < PageCount; i++) { rUrl = Url + Appkey + "?access_token=" + AccessToken + "&page=" + (i + 1) + "&pageSize=50&orderStatus=WAIT_SELLER_SEND_GOODS"; if (StartTime != null) rUrl += "&createDateStart=" + StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); if (StopTime != null) rUrl += "&createDateEnd=" + StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss"); Dictionary paramDic1 = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic1.Add("access_token", AccessToken); paramDic1.Add("page", (i + 1).ToString()); paramDic1.Add("pageSize", "50"); paramDic1.Add("orderStatus", "WAIT_SELLER_SEND_GOODS"); if (StartTime != null) paramDic1.Add("createDateStart", StartTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); if (StopTime != null) paramDic1.Add("createDateEnd", StopTime.Value.ToString("MM/dd/yyyy HH:mm:ss")); string signature1 = signPath(MethodName, paramDic1, DeveKey); rUrl += "&_aop_signature=" + signature1; XmlContent = CustomIO.HttpRequest(rUrl, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; AlibabaOrder Model2 = JsonConvert.Deserialize(XmlContent); foreach (var item in Model2.orderList) { if (IsReadMsg == true) { item.msgListNew = GetMsgData3(item.orderId.ToString(), "order_msg", out ErrorMessage); // if (string.IsNullOrEmpty(ErrorMessage) == false) // return null; } // item.BuyersInfo = GetBuyers(item.orderId.ToString(), out ErrorMessage); item.buyerInfo = GetOrderXXInfo(item.orderId.ToString(), out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; item.OrderState = 1; Model.orderList.Add(item.Copy()); } } return Model.ToListOrderModel(); } #endregion #region 付款后24小时内的订单 public List GetPayMoneyGoods(bool IsReadMsg, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("page", "1"); paramDic.Add("pageSize", "50"); paramDic.Add("orderStatus", "RISK_CONTROL"); string MethodName = "param2/1/aliexpress.open/api.findOrderListQuery/" + Appkey; string signature = signPath(MethodName, paramDic, DeveKey); string rUrl = Url + Appkey + "?access_token=" + AccessToken + "&page=1&pageSize=50&orderStatus=RISK_CONTROL"; rUrl += "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(rUrl, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; if (string.IsNullOrEmpty(ErrorMessage) == false) return null; AlibabaOrder Model = JsonConvert.Deserialize(XmlContent); if (Model.orderList == null) return Model.ToListOrderModel(); foreach (var item in Model.orderList) { if (IsReadMsg == true) { item.msgListNew = GetMsgData3(item.orderId.ToString(), "order_msg", out ErrorMessage); // if (string.IsNullOrEmpty(ErrorMessage) == false) return null; } item.OrderState = 2; //item.BuyersInfo = GetBuyers(item.orderId.ToString(), out ErrorMessage); item.buyerInfo = GetOrderXXInfo(item.orderId.ToString(), out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; } if (Model.totalItem <= 50) return Model.ToListOrderModel(); int PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(Model.totalItem) / Convert.ToDecimal(50))); for (int i = 1; i < PageCount; i++) { rUrl = Url + Appkey + "?access_token=" + AccessToken + "&page=" + (i + 1) + "&pageSize=50&orderStatus=RISK_CONTROL"; Dictionary paramDic1 = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic1.Add("access_token", AccessToken); paramDic1.Add("page", (i + 1).ToString()); paramDic1.Add("pageSize", "50"); paramDic1.Add("orderStatus", "RISK_CONTROL"); string signature1 = signPath(MethodName, paramDic1, DeveKey); rUrl += "&_aop_signature=" + signature1; XmlContent = CustomIO.HttpRequest(rUrl, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; AlibabaOrder Model2 = JsonConvert.Deserialize(XmlContent); if (Model2.orderList == null) continue; foreach (var item in Model2.orderList) { if (IsReadMsg == true) { item.msgListNew = GetMsgData3(item.orderId.ToString(), "order_msg", out ErrorMessage); // if (string.IsNullOrEmpty(ErrorMessage) == false) return null; } // item.BuyersInfo = GetBuyers(item.orderId.ToString(), out ErrorMessage); item.buyerInfo = GetOrderXXInfo(item.orderId.ToString(), out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; item.OrderState = 2; Model.orderList.Add(item.Copy()); } } return Model.ToListOrderModel(); } #endregion #region 取得收货信息 public Alibaba_Buyers GetBuyers(string orderid, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("orderId", orderid); string MethodName = "param2/1/aliexpress.open/api.findOrderReceiptInfo/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_Buyers Model = JsonConvert.Deserialize(XmlContent); return Model; } #endregion #region 订单详情信息 public Alibaba_OrderXXInfo GetOrderXXInfo(string orderid, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("orderId", orderid); string MethodName = "param2/1/aliexpress.open/api.findOrderById/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_OrderXXInfo Model = JsonConvert.Deserialize(XmlContent); return Model; } #endregion #region 订单详情信息 public string GetOrderstr(string orderid, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("orderId", orderid); string MethodName = "param2/1/aliexpress.open/api.findOrderById/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) { ErrorMessage = "失败 " + ErrorMessage; return null; } RequestNum++; return XmlContent; } #endregion #region 得到留言的数据 public List GetMsgData(string orderid, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.queryOrderMsgList/" + this.Appkey + "?access_token=" + AccessToken + "&pageSize=50&orderId=" + orderid; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("pageSize", "50"); paramDic.Add("orderId", orderid); string MethodName = "param2/1/aliexpress.open/api.queryOrderMsgList/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); URL += "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_MsgResult Model = JsonConvert.Deserialize(XmlContent); if (Model.total == 0) return null; if (Model.msgList != null) { foreach (var md in Model.msgList) { var wmd = new DT_LeavewordAPI(); wmd.ShopId = ShopId; wmd.isRead = md.read; wmd.orderId = md.orderId; wmd.wId = md.id; wmd.wordContent = md.content; wmd.senderName = md.senderName; wmd.fileUrl = md.fileUrl; wmd.receiverLoginId = md.receiverLoginId; wmd.senderLoginId = md.senderLoginId; wmd.typeId = md.typeId; DateTime wordCreate = DateTime.Now; DateTime wordCreateCN = DateTime.Now; try { if (md.gmtCreate != "" && md.gmtCreate.Contains('-')) { string stime = md.gmtCreate.Split('-')[0]; wordCreate = Convert.ToDateTime(stime.Substring(0, 4) + "-" + stime.Substring(4, 2) + "-" + stime.Substring(6, 2) + " " + stime.Substring(8, 2) + ":" + stime.Substring(10, 2)); wordCreateCN = wordCreate; wordCreate = wordCreate.AddHours(Convert.ToInt32(md.gmtCreate.Split('-')[1].Substring(0, 2)) * -1); } else if (md.gmtCreate != "" && md.gmtCreate.Contains('+')) { string stime1 = md.gmtCreate.Split('-')[0]; wordCreate = Convert.ToDateTime(stime1.Substring(0, 4) + "-" + stime1.Substring(4, 2) + "-" + stime1.Substring(6, 2) + " " + stime1.Substring(8, 2) + ":" + stime1.Substring(10, 2)); wordCreateCN = wordCreate; wordCreate = wordCreate.AddHours(Convert.ToInt32(md.gmtCreate.Split('-')[1].Substring(0, 2))); } } catch(Exception ex) { } wmd.wordCreate = wordCreate; wmd.wordCreateCN = wordCreateCN; wmd.indate = DateTime.Now; SaveLeaveword(wmd); } } return Model.msgList; } #endregion #region 得到留言的数据 public List GetMsgData2(DateTime? Sdate,DateTime? Edate, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.queryOrderMsgList/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); if(Sdate!=null) paramDic.Add("startTime", Sdate.Value.ToString("MM/dd/yyyy HH:mm:ss")); if (Edate != null) paramDic.Add("endTime", Edate.Value.ToString("MM/dd/yyyy HH:mm:ss")); paramDic.Add("pageSize", "50"); // paramDic.Add("orderId", orderid); string MethodName = "param2/1/aliexpress.open/api.queryOrderMsgList/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_MsgResult Model = JsonConvert.Deserialize(XmlContent); if (Model.total == 0) return null; if (Model.msgList != null) { foreach (var md in Model.msgList) { var wmd = new DT_LeavewordAPI(); wmd.ShopId = ShopId; wmd.isRead = md.read; wmd.orderId = md.orderId; wmd.wId = md.id; wmd.wordContent = md.content; wmd.senderName = md.senderName; wmd.fileUrl = md.fileUrl; wmd.receiverLoginId = md.receiverLoginId; wmd.senderLoginId = md.senderLoginId; wmd.typeId = md.typeId; //wmd.CompanyId = 0; DateTime wordCreate = DateTime.Now; DateTime wordCreateCN = DateTime.Now; try { if (md.gmtCreate != "" && md.gmtCreate.Contains('-')) { string stime = md.gmtCreate.Split('-')[0]; wordCreate = Convert.ToDateTime(stime.Substring(0, 4) + "-" + stime.Substring(4, 2) + "-" + stime.Substring(6, 2) + " " + stime.Substring(8, 2) + ":" + stime.Substring(10, 2)); wordCreateCN = wordCreate; wordCreate = wordCreate.AddHours(Convert.ToInt32(md.gmtCreate.Split('-')[1].Substring(0, 2)) * -1); } else if (md.gmtCreate != "" && md.gmtCreate.Contains('+')) { string stime1 = md.gmtCreate.Split('-')[0]; wordCreate = Convert.ToDateTime(stime1.Substring(0, 4) + "-" + stime1.Substring(4, 2) + "-" + stime1.Substring(6, 2) + " " + stime1.Substring(8, 2) + ":" + stime1.Substring(10, 2)); wordCreateCN = wordCreate; wordCreate = wordCreate.AddHours(Convert.ToInt32(md.gmtCreate.Split('-')[1].Substring(0, 2))); } } catch (Exception ex) { } wmd.wordCreate = wordCreate; wmd.wordCreateCN = wordCreateCN; wmd.indate = DateTime.Now; SaveLeaveword(wmd); } } return Model.msgList; } #endregion #region 得到留言的数据 /// /// /// /// /// (站内信)message_center/order_msg(留言) /// /// public List GetMsgData3(string channelId, string msgSources, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.queryMsgDetailList/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("currentPage", "1"); paramDic.Add("pageSize", "20"); paramDic.Add("channelId", channelId); paramDic.Add("msgSources", msgSources); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.queryMsgDetailList/" + Appkey; string signature = sign2(MethodName, paramDic); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_MsgResultNew Model = JsonConvert.Deserialize(XmlContent); if (Model == null||Model.result.Count==0) return null; if (Model.result != null) { foreach (var md in Model.result) { var wmd = new DT_LeavewordAPI(); wmd.ShopId = ShopId; // wmd.isRead = md.read; // wmd.orderId = md.orderId; wmd.wId = md.id; wmd.wordContent = md.content; wmd.senderName = md.senderName; // wmd.fileUrl = md.fileUrl; // wmd.receiverLoginId = md.receiverLoginId; wmd.senderLoginId = md.senderName; wmd.typeId = md.typeId.ToString(); //wmd.CompanyId = 0; DateTime wordCreate = DateTime.Now; DateTime wordCreateCN = DateTime.Now; try { if (md.gmtCreate != "" && md.gmtCreate.Contains('-')) { string stime = md.gmtCreate.Split('-')[0]; wordCreate = Convert.ToDateTime(stime.Substring(0, 4) + "-" + stime.Substring(4, 2) + "-" + stime.Substring(6, 2) + " " + stime.Substring(8, 2) + ":" + stime.Substring(10, 2)); wordCreateCN = wordCreate; wordCreate = wordCreate.AddHours(Convert.ToInt32(md.gmtCreate.Split('-')[1].Substring(0, 2)) * -1); } else if (md.gmtCreate != "" && md.gmtCreate.Contains('+')) { string stime1 = md.gmtCreate.Split('-')[0]; wordCreate = Convert.ToDateTime(stime1.Substring(0, 4) + "-" + stime1.Substring(4, 2) + "-" + stime1.Substring(6, 2) + " " + stime1.Substring(8, 2) + ":" + stime1.Substring(10, 2)); wordCreateCN = wordCreate; wordCreate = wordCreate.AddHours(Convert.ToInt32(md.gmtCreate.Split('-')[1].Substring(0, 2))); } } catch (Exception ex) { } wmd.wordCreate = wordCreate; wmd.wordCreateCN = wordCreateCN; wmd.indate = DateTime.Now; SaveLeaveword(wmd); } } return Model.result; } #endregion #region 得到留言的数据 /// /// /// /// /// (站内信)message_center/order_msg(留言) /// /// public string GetMsgstr(string channelId, string msgSources, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.queryMsgDetailList/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("currentPage", "1"); paramDic.Add("pageSize", "20"); paramDic.Add("channelId", channelId); paramDic.Add("msgSources", msgSources); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.queryMsgDetailList/" + Appkey; string signature = sign2(MethodName, paramDic); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) { ErrorMessage ="失败 "+ ErrorMessage; return null; } return XmlContent; } #endregion #region 更新留言的状态 public void UpdateWordState(string typeId, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.updateReadOrderMessage/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("typeId", typeId); string MethodName = "param2/1/aliexpress.open/api.updateReadOrderMessage/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; } #endregion #region 得到站内信数据 public List GetInnerMail(DateTime? Sdate, DateTime? Edate, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.queryMessageList/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); if (Sdate != null) paramDic.Add("startTime", Sdate.Value.ToString("MM/dd/yyyy HH:mm:ss")); if (Edate != null) paramDic.Add("endTime", Edate.Value.ToString("MM/dd/yyyy HH:mm:ss")); paramDic.Add("pageSize", "50"); // paramDic.Add("orderId", orderid); string MethodName = "param2/1/aliexpress.open/api.queryMessageList/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_InnerMailResult Model = JsonConvert.Deserialize(XmlContent); if (Model.total == 0) return null; return Model.msgList; } #endregion #region 更新站内信的状态 public void UpdateInnerMailState(string typeId, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.updateReadMessage/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("typeId", typeId); string MethodName = "param2/1/aliexpress.open/api.updateReadMessage/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; } #endregion #region 回复留言 public void BackLeaveWordOld(string orderid, string content, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("orderId", orderid); paramDic.Add("content", content); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.addOrderMessage/" + Appkey; // string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?orderId=" + orderid + "&content=" + content + "&access_token=" + AccessToken; //foreach (KeyValuePair kv in paramDic) //{ // URL = URL + kv.Key + "=" + kv.Value + "&"; //} string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; RequestNum++; } #endregion #region 回复留言 public void BackLeaveWord(string channelId, string buyerId, string content, string msgSources, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("channelId", channelId); paramDic.Add("buyerId", buyerId); paramDic.Add("content", content); paramDic.Add("msgSources", msgSources); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.addMsg/" + Appkey; // string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?channelId=" + channelId + "&buyerId=" + buyerId + "&content=" + content + "&msgSources=" + msgSources + "&access_token=" + AccessToken; //foreach (KeyValuePair kv in paramDic) //{ // URL = URL + kv.Key + "=" + kv.Value + "&"; //} string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) ErrorMessage="失败" + ErrorMessage; RequestNum++; } #endregion #region 查询未付款订单 public string NoPayOrderList(string pagenum, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("page", pagenum); paramDic.Add("pageSize", "10"); paramDic.Add("orderStatus", "PLACE_ORDER_SUCCESS"); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.findOrderListQuery/" + Appkey; string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.findOrderListQuery/" + this.Appkey + "?access_token=" + AccessToken + "&pageSize=10¤tPage=" + pagenum + "&orderStatus=PLACE_ORDER_SUCCESS"; string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return "失败" + ErrorMessage; RequestNum++; return XmlContent; } #endregion #region 查询订单 public string OrderList(string pagenum, string orderStatus, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("page", pagenum); paramDic.Add("pageSize", "10"); paramDic.Add("orderStatus", orderStatus); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.findOrderListQuery/" + Appkey; string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.findOrderListQuery/" + this.Appkey + "?access_token=" + AccessToken + "&pageSize=10¤tPage=" + pagenum + "&orderStatus=" + orderStatus; string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return "失败" + ErrorMessage; RequestNum++; return XmlContent; } #endregion #region 查询订单评价 public string FeedBackList( string pagenum, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("pageSize", "10"); paramDic.Add("currentPage", pagenum); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.evaluation.querySellerEvaluationOrderList/" + Appkey; string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.evaluation.querySellerEvaluationOrderList/" + this.Appkey + "?access_token=" + AccessToken + "&pageSize=10¤tPage=" + pagenum; string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "GET", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return "失败" + ErrorMessage; RequestNum++; return XmlContent; } #endregion #region 订单评价提交 public string FeedBackWord(string orderid, string content, out string ErrorMessage) { string score = "太棒了"; if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("orderId", orderid); paramDic.Add("feedbackContent", content); paramDic.Add("score", score); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.evaluation.saveSellerFeedback/" + Appkey; string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.evaluation.saveSellerFeedback/" + this.Appkey + "?access_token=" + AccessToken + "&orderId=" + orderid + "&feedbackContent=" + content + "&score=" + score; string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return "失败" + ErrorMessage; RequestNum++; return XmlContent; } #endregion #region 订单收货时间延长提交 public string Extentday(string orderid, string day, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("orderId", orderid); paramDic.Add("day", day); paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.extendsBuyerAcceptGoodsTime/" + Appkey; string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.extendsBuyerAcceptGoodsTime/" + this.Appkey + "?access_token=" + AccessToken + "&orderId=" + orderid + "&day=" +day; string signature = signPath(MethodName, paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return "失败" + ErrorMessage; RequestNum++; return XmlContent; } #endregion #region 得到货款到账 public List GetOrderLoan(DateTime? Sdate, DateTime? Edate,int page,string loanStatus, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.findLoanListQuery/" + this.Appkey + "?"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); if (Sdate != null) paramDic.Add("startTime", Sdate.Value.ToString("MM/dd/yyyy HH:mm:ss")); if (Edate != null) paramDic.Add("endTime", Edate.Value.ToString("MM/dd/yyyy HH:mm:ss")); paramDic.Add("pageSize", "50"); paramDic.Add("loanStatus", loanStatus);//订单放款状态:wait_loan 未放款,loan_ok已放款。 paramDic.Add("page", page.ToString()); string MethodName = "param2/1/aliexpress.open/api.findLoanListQuery/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL += "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; OrderLoanList Model = JsonConvert.Deserialize(XmlContent); if (Model.totalItem == 0) return null; return Model.orderList; } #endregion #region 发货 public string SendGoods(Alibaba_Order model,string sendType,out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); if (string.IsNullOrEmpty(model.tradeOrderId) == false) paramDic.Add("tradeOrderId", model.tradeOrderId); if (string.IsNullOrEmpty(model.tradeOrderFrom) == false) paramDic.Add("tradeOrderFrom", model.tradeOrderFrom); if (string.IsNullOrEmpty(model.warehouseCarrierService) == false) paramDic.Add("warehouseCarrierService", model.warehouseCarrierService); if (string.IsNullOrEmpty(model.domesticLogisticsCompanyId) == false) paramDic.Add("domesticLogisticsCompanyId", model.domesticLogisticsCompanyId); if (string.IsNullOrEmpty(model.domesticLogisticsCompany) == false) paramDic.Add("domesticLogisticsCompany", model.domesticLogisticsCompany); if (string.IsNullOrEmpty(model.domesticTrackingNo) == false) paramDic.Add("domesticTrackingNo", model.domesticTrackingNo); string MethodName = "param2/1/aliexpress.open/api.createWarehouseOrder/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return ""; RequestNum++; Alibaba_Order_Result model2 = JsonConvert.Deserialize(XmlContent); OrderConfirm(model.domesticLogisticsCompany, model2.result.intlTracking, sendType, model.tradeOrderId, out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return ""; return model2.result.intlTracking; } #endregion #region 根据订单号获取线上发货物流方案(运费估算) /// /// /// /// 交易订单ID /// 包裹重量 /// 包裹长 /// 包裹宽 /// 包裹高 /// /// /// public List GetFee(string orderId, decimal goodsWeight, int goodsLength, int goodsWidth, int goodsHeight, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("orderId", orderId); paramDic.Add("goodsWeight", goodsWeight.ToString("0.###")); paramDic.Add("goodsLength", goodsLength.ToString()); paramDic.Add("goodsWidth", goodsWidth.ToString()); paramDic.Add("goodsHeight", goodsHeight.ToString()); string MethodName = "param2/1/aliexpress.open/api.getOnlineLogisticsServiceListByOrderId/" + Appkey; // string signature = Sign(MethodName, paramDic, DeveKey); string signature = signPath(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_Fee_Result model2 = JsonConvert.Deserialize(XmlContent); return model2.result; } #endregion #region 发货确认 /// /// 发货确认 /// /// 订单号 /// 运单号 /// 1运单确认2消单 /// 错误消息 /// true成功false失败 public void OrderConfirm(string serviceName, string logisticsNo, string sendType,string outRef, out string ErrorMessage) { if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("serviceName", serviceName); paramDic.Add("logisticsNo", logisticsNo); paramDic.Add("sendType", sendType); paramDic.Add("outRef", outRef); string MethodName = "param2/1/aliexpress.open/api.sellerShipment/" + Appkey; string signature = Sign(MethodName, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return; RequestNum++; } #endregion #region 列出平台所支持的物流服务 public List GetListExpress(out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); string MethodName = "param2/1/aliexpress.open/api.listLogisticsService/" + Appkey; string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.listLogisticsService/" + Appkey + "?access_token=" + AccessToken; //foreach (KeyValuePair kv in paramDic) //{ // URL = URL + kv.Key + "=" + kv.Value + "&"; //} string signature = signPath(MethodName,paramDic, DeveKey); URL = URL + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; Alibaba_Express_Result Model = JsonConvert.Deserialize(XmlContent); return Model.result; } #endregion private string signPath(string urlPath, Dictionary paramDic, string DeveKey) { byte[] signatureKey = Encoding.UTF8.GetBytes(DeveKey);//此处用自己的签名密钥 List list = new List(); foreach (KeyValuePair kv in paramDic) { list.Add(kv.Key + kv.Value); } list.Sort(); string tmp = urlPath; foreach (string kvstr in list) { tmp = tmp + kvstr; } //HMAC-SHA1 HMACSHA1 hmacsha1 = new HMACSHA1(signatureKey); hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(tmp)); /* hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(urlPath)); foreach (string kvstr in list) { hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(kvstr)); } */ byte[] hash = hmacsha1.Hash; //TO HEX return BitConverter.ToString(hash).Replace("-", string.Empty).ToUpper(); } #region 创建线上发货物流订单 /// /// /// /// 交易订单号 /// 交易订单来源,AE订单为ESCROW ;国际站订单为“SOURCING” /// ”根据订单号获取线上发货物流方案“API获取用户选择的实际发货物流服务(物流服务key,即仓库服务名称)例如:HRB_WLB_ZTOGZ是 中俄航空 Ruston广州仓库; HRB_WLB_RUSTONHEB为哈尔滨备货仓暂不支持,该渠道请做忽略 /// 国内快递ID505(物流公司是other时,ID为-1) /// 物流公司Id为-1时,必填 /// 国内快递运单号,长度1-32 /// 申报产品信息,列表类型,以json格式来表达。{productId为产品ID(必填,如为礼品,则设置为 /// 地址信息,包含发货人地址,收货人地址.发货人地址key值是sender; 收货人地址key值是receiver,都必填{country为国家简称,必填;province为省/州,(必填,长度限制1-48字节);city为城市,(必填,长度限制1-48,可以直接填写城市信息),county为区县,(必填,长度限制1-20字节)streetAddress为街道 ,(必填,长度限制1-90字节);name为姓名,(必填,长度限制1-90字节);phone,mobile两者二选一,phone(长度限制1- 54字节);mobile(长度限制1-30字节);email邮箱必填(长度限制1-64字节);trademanageId旺旺(必填,长度限制1-32字节);如果是中俄航空Ruston需要揽收的订单,则再添加揽收地址信息,key值是pickup,字段同上,内容必须是中文(如无需揽收,则不必传pickup的值) /// /// public warehouseService createWarehouseOrder(string tradeOrderId, string tradeOrderFrom, string warehouseCarrierService, string domesticLogisticsCompanyId, string domesticLogisticsCompany, string domesticTrackingNo, string declareProductDTOs, string addressDTOs, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("tradeOrderId", tradeOrderId); paramDic.Add("tradeOrderFrom", tradeOrderFrom); paramDic.Add("warehouseCarrierService", warehouseCarrierService); paramDic.Add("domesticLogisticsCompanyId", domesticLogisticsCompanyId); paramDic.Add("domesticLogisticsCompany", domesticLogisticsCompany); paramDic.Add("domesticTrackingNo", domesticTrackingNo); paramDic.Add("declareProductDTOs", declareProductDTOs); paramDic.Add("addressDTOs", addressDTOs); paramDic.Add("access_token", AccessToken); string pathurl = "param2/1/aliexpress.open/api.createWarehouseOrder/" + Appkey; string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.createWarehouseOrder/" + Appkey + "?"; foreach (KeyValuePair kv in paramDic) { URL = URL + kv.Key + "=" + kv.Value + "&"; } URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "Get", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; warehouseList Model = JsonConvert.Deserialize(XmlContent); return Model.result; } #endregion #region 根据订单号获取线上发货物流方案 public List getOnlineLogistics(string orderId, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("orderId", orderId); string pathurl = "param2/1/aliexpress.open/api.getOnlineLogisticsServiceListByOrderId/" + Appkey; string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.getOnlineLogisticsServiceListByOrderId/" + Appkey + "?access_token=" + AccessToken + "&orderId=" + orderId + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "Get", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; logisticsServiceList Model = JsonConvert.Deserialize(XmlContent); return Model.result; } #endregion #region 获取邮政小包订单信息(线上物流发货专用接口) public List getOnlineLogisticsInfo(string orderId, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } string status = "wait_warehouse_receive_goods"; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("orderId", orderId); paramDic.Add("logisticsStatus", status); string pathurl = "param2/1/aliexpress.open/api.getOnlineLogisticsInfo/" + Appkey; string signature = signPath(pathurl, paramDic,DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.getOnlineLogisticsInfo/" + Appkey + "?access_token=" + AccessToken + "&orderId=" + orderId + "&_aop_signature=" + signature + "&logisticsStatus=" + status; string XmlContent = CustomIO.HttpRequest(URL, "Get", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; logisticsOrderList Model = JsonConvert.Deserialize(XmlContent); return Model.result; } #endregion #region 获取线上发货标签 public string GetPrintInfo(string internationalLogisticsId, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("warehouseOrderQueryDTOs", internationalLogisticsId); string pathurl = "param2/1/aliexpress.open/api.getPrintInfos/" + Appkey; string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.getPrintInfos/" + Appkey + "?access_token=" + AccessToken + "&warehouseOrderQueryDTOs=" + internationalLogisticsId + "&_aop_signature=" + signature; //Dictionary paramDic = new Dictionary(); ////client_id:app注册时,分配给app的唯一标示,又称appKey //paramDic.Add("access_token", AccessToken); //string MethodName = "param2/1/aliexpress.open/api.getPrintInfo/" + Appkey; //string signature = Sign(MethodName, paramDic, DeveKey); //string URL = "https://gw.api.alibaba.com/openapi/" + MethodName + "?warehouseOrderQueryDTOs=" + internationalLogisticsId+"&"; //foreach (KeyValuePair kv in paramDic) //{ // URL = URL + kv.Key + "=" + kv.Value + "&"; //} //URL = URL + "_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "Get", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; ExpressBody Model = JsonConvert.Deserialize(XmlContent); if (Model == null || Model.Body == null || Model.Body == "") return ""; byte[] bytes = CustomIO.Base64ToBytes(Model.Body); string dir=AppDomain.CurrentDomain.BaseDirectory+"ServerCookies"; if (System.IO.Directory.Exists(dir)==false)System.IO.Directory.CreateDirectory(dir); string fname = Guid.NewGuid().ToString() + ".pdf"; string filePath=dir+"/"+fname; CustomIO.SetOffice(filePath, bytes); return fname; } #endregion #region 声明发货 /// /// /// /// 订单号 /// 跟踪码 /// 物流类型 /// /// /// /// public bool SubmitTrack(string ordercode, string trackno, string serviceName, string shippmark, out string ErrorMessage) { //serviceName = "EMS_ZX_ZX_US"; //if (ysfs == "China Post Air Mail") //{ // serviceName = "CPAM"; //} //else if (ysfs == "EUB") //{ // serviceName = "EMS_ZX_ZX_US"; //} //if (ysfs == "XRU") //{ // serviceName = "CPAM"; //} //if (ysfs == "SF Express") //{ // serviceName = "SF"; //} //if (ysfs == "China Post OM Plus") //{ // serviceName = "YANWEN_JYT"; //} //if (shippmark.Contains("平邮")) //{ // serviceName = "Other"; //} //trackno = "123456789"; //orderid = "5514d9533084f21025e158d3175"; if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } try { string pathurl = "param2/1/aliexpress.open/api.sellerShipment/" + Appkey; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("serviceName", serviceName); paramDic.Add("logisticsNo", trackno); paramDic.Add("sendType", "all"); paramDic.Add("outRef", ordercode); string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.sellerShipment/" + Appkey + "?access_token=" + AccessToken + "&serviceName=" + serviceName + "&logisticsNo=" + trackno + "&sendType=all&outRef=" + ordercode + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return false; RequestNum++; return true; } catch(Exception ex) { ErrorMessage = ex.Message; return false; } //return josn;//SaveData(josn); } //上传跟踪码增加网址 public bool SubmitTrackW(string ordercode, string trackno, string serviceName, string shippmark, string trackingWebsite, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } try { string pathurl = "param2/1/aliexpress.open/api.sellerShipment/" + Appkey; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("serviceName", serviceName); paramDic.Add("logisticsNo", trackno); paramDic.Add("sendType", "all"); if (trackingWebsite != "" && trackingWebsite != null) paramDic.Add("trackingWebsite", trackingWebsite); paramDic.Add("outRef", ordercode); string signature = signPath(pathurl, paramDic, DeveKey); string URL = ""; if (trackingWebsite != ""&&trackingWebsite!=null) URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.sellerShipment/" + Appkey + "?access_token=" + AccessToken + "&serviceName=" + serviceName + "&logisticsNo=" + trackno + "&sendType=all&outRef=" + ordercode + "&_aop_signature=" + signature + "&trackingWebsite=" + trackingWebsite; else { URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.sellerShipment/" + Appkey + "?access_token=" + AccessToken + "&serviceName=" + serviceName + "&logisticsNo=" + trackno + "&sendType=all&outRef=" + ordercode + "&_aop_signature=" + signature ; } string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return false; if (ErrorMessage.Contains("错误")) return false; RequestNum++; return true; } catch (Exception ex) { ErrorMessage = ex.Message; return false; } //return josn;//SaveData(josn); } //上传跟踪码增加备注 public bool SubmitTrackD(string ordercode, string trackno, string serviceName, string shippmark, string description, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } try { string pathurl = "param2/1/aliexpress.open/api.sellerShipment/" + Appkey; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("serviceName", serviceName); paramDic.Add("logisticsNo", trackno); paramDic.Add("sendType", "all"); paramDic.Add("description", description); paramDic.Add("outRef", ordercode); string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.sellerShipment/" + Appkey + "?access_token=" + AccessToken + "&serviceName=" + serviceName + "&logisticsNo=" + trackno + "&sendType=all&outRef=" + ordercode + "&_aop_signature=" + signature + "&description=" + description; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return false; RequestNum++; return true; } catch (Exception ex) { ErrorMessage = ex.Message; return false; } //return josn;//SaveData(josn); } //上传跟踪码增加网址和备注 public bool SubmitTrackDW(string ordercode, string trackno, string serviceName, string shippmark, string description, string trackingWebsite, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } try { string pathurl = "param2/1/aliexpress.open/api.sellerShipment/" + Appkey; Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); paramDic.Add("serviceName", serviceName); paramDic.Add("logisticsNo", trackno); paramDic.Add("sendType", "all"); paramDic.Add("description", description); paramDic.Add("trackingWebsite", trackingWebsite); paramDic.Add("outRef", ordercode); string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.sellerShipment/" + Appkey + "?access_token=" + AccessToken + "&serviceName=" + serviceName + "&logisticsNo=" + trackno + "&sendType=all&outRef=" + ordercode + "&_aop_signature=" + signature + "&description=" + description + "&trackingWebsite=" + trackingWebsite; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return false; RequestNum++; return true; } catch (Exception ex) { ErrorMessage = ex.Message; return false; } //return josn;//SaveData(josn); } #endregion #region 获取中邮小包支持的国内快递公司信息 public List GetInnerCompany(out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } Dictionary paramDic = new Dictionary(); //client_id:app注册时,分配给app的唯一标示,又称appKey paramDic.Add("access_token", AccessToken); string pathurl = "param2/1/aliexpress.open/api.qureyWlbDomesticLogisticsCompany/" + Appkey; string signature = signPath(pathurl,paramDic, this.DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.qureyWlbDomesticLogisticsCompany/" + Appkey + "?access_token=" + AccessToken + "&_aop_signature=" + signature;// +signature; string XmlContent = CustomIO.HttpRequest(URL, "Get", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return null; RequestNum++; InnerServiceList Model = JsonConvert.Deserialize(XmlContent); return Model.result; } #endregion #region 修改tocken public void UpdateShopToken() { string tsql = @" Update [JC_Shop] set [RequestNumber]=@RequestNumber,[RefreshToken]=@RefreshToken,[AccessToken]=@AccessToken,[RefreshTokenSaveTime]=@RefreshTokenSaveTime,[AccessTokenUpdateTime]=@AccessTokenUpdateTime where ShopId=@ShopId "; Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetSqlStringCommand(tsql); db.AddInParameter(cmd, "@ShopId", DbType.Int32, ShopId); db.AddInParameter(cmd, "@RequestNumber", DbType.Int32, RequestNum); db.AddInParameter(cmd, "@RefreshToken", DbType.String, RefreshToken); db.AddInParameter(cmd, "@AccessToken", DbType.String, AccessToken); db.AddInParameter(cmd, "@RefreshTokenSaveTime", DbType.DateTime, RefreshTokenSaveTime); db.AddInParameter(cmd, "@AccessTokenUpdateTime", DbType.DateTime, AccessTokenUpdateTime); db.ExecuteNonQuery(cmd); } #endregion #region 修改tocken public void UpdateShopToken3() { string tsql = @" Update [tb_APIToken] set AccessToken=@AccessToken where ApiIndex=@ShopId "; Database db = DatabaseFactory.CreateDatabase("ConnectionString3"); DbCommand cmd = db.GetSqlStringCommand(tsql); db.AddInParameter(cmd, "@ShopId", DbType.Int32, ShopId); db.AddInParameter(cmd, "@RequestNumber", DbType.Int32, RequestNum); db.AddInParameter(cmd, "@RefreshToken", DbType.String, RefreshToken); db.AddInParameter(cmd, "@AccessToken", DbType.String, AccessToken); db.AddInParameter(cmd, "@RefreshTokenSaveTime", DbType.DateTime, RefreshTokenSaveTime); db.AddInParameter(cmd, "@AccessTokenUpdateTime", DbType.DateTime, AccessTokenUpdateTime); db.ExecuteNonQuery(cmd); } #endregion #region 保存留言 public int SaveLeaveword(DT_LeavewordAPI Model) { string tsql = @" select @Id=Id from DT_Leaveword where wId=@wId if @Id>0 begin if @isRead=1 begin Update [DT_Leaveword] set [isRead]=@isRead,readdate=getdate() where Id=@Id end end else begin INSERT INTO [DT_Leaveword]([wordContent],[orderId],[isRead],[senderName],[senderLoginId],[receiverLoginId],[fileUrl],[wordCreate],[wordCreateCN],[wId],[typeId],[indate],ShopId)values(@wordContent,@orderId,@isRead,@senderName,@senderLoginId,@receiverLoginId,@fileUrl,@wordCreate,@wordCreateCN,@wId,@typeId,@indate,@ShopId) set @Id=SCOPE_IDENTITY() end select @Id"; Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetSqlStringCommand(tsql); db.AddInParameter(cmd, "@Id", DbType.Int32, Model.Id); db.AddInParameter(cmd, "@wordContent", DbType.String, Model.wordContent); db.AddInParameter(cmd, "@orderId", DbType.String, Model.orderId); db.AddInParameter(cmd, "@isRead", DbType.Boolean, Model.isRead); db.AddInParameter(cmd, "@senderName", DbType.String, Model.senderName); db.AddInParameter(cmd, "@senderLoginId", DbType.String, Model.senderLoginId); db.AddInParameter(cmd, "@receiverLoginId", DbType.String, Model.receiverLoginId); db.AddInParameter(cmd, "@fileUrl", DbType.String, Model.fileUrl); db.AddInParameter(cmd, "@wordCreate", DbType.DateTime, Model.wordCreate); db.AddInParameter(cmd, "@wordCreateCN", DbType.DateTime, Model.wordCreateCN); db.AddInParameter(cmd, "@wId", DbType.Int64, Model.wId); db.AddInParameter(cmd, "@typeId", DbType.String, Model.typeId); db.AddInParameter(cmd, "@indate", DbType.DateTime, Model.indate); db.AddInParameter(cmd, "@ShopId", DbType.Int32, Model.ShopId); int a = Convert.ToInt32(db.ExecuteScalar(cmd)); return a; } #endregion #region 保存站内信 public int SaveInnerMail(DT_InnerMailAPI Model) { string tsql = @" select @Id=Id from DT_InnerMail where wId=@wId if @Id>0 begin if @isRead=1 begin Update [DT_InnerMail] set [isRead]=@isRead where Id=@Id end end else begin INSERT INTO [DT_InnerMail]([wordContent],[orderId],[isRead],[senderName],[senderLoginId],[receiverLoginId],[fileUrl],[wordCreate],[wId],[typeId])values(@wordContent,@orderId,@isRead,@senderName,@senderLoginId,@receiverLoginId,@fileUrl,@wordCreate,@wId,@typeId) set @Id=SCOPE_IDENTITY() end select @Id"; Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetSqlStringCommand(tsql); db.AddInParameter(cmd, "@Id", DbType.Int32, Model.Id); db.AddInParameter(cmd, "@wordContent", DbType.String, Model.wordContent); db.AddInParameter(cmd, "@orderId", DbType.String, Model.orderId); db.AddInParameter(cmd, "@isRead", DbType.Boolean, Model.isRead); db.AddInParameter(cmd, "@senderName", DbType.String, Model.senderName); db.AddInParameter(cmd, "@senderLoginId", DbType.String, Model.senderLoginId); db.AddInParameter(cmd, "@receiverLoginId", DbType.String, Model.receiverLoginId); db.AddInParameter(cmd, "@fileUrl", DbType.String, Model.fileUrl); db.AddInParameter(cmd, "@wordCreate", DbType.DateTime, Model.wordCreate); db.AddInParameter(cmd, "@wId", DbType.Int32, Model.wId); db.AddInParameter(cmd, "@typeId", DbType.String, Model.typeId); int a = Convert.ToInt32(db.ExecuteScalar(cmd)); return a; } #endregion #region 产品 //产品上架 public bool OnlineProduct(string productIds, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } // if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value paramDic = new Dictionary(); paramDic.Add("access_token", AccessToken); paramDic.Add("productIds", productIds); string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.onlineAeProduct/" + Appkey + "?access_token=" + AccessToken + "&productIds=" + productIds + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) { if (ErrorMessage.Contains("未经授权") && Num<3) { OnlineProduct(productIds, out ErrorMessage); Num++; } else return false; } RequestNum++; return true; } catch (Exception ex) { ErrorMessage = ex.Message; return false; } } //产品下架 public bool OfflineProduct(string productIds, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } //if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) //{ GetAccessToken21(out ErrorMessage); //} try { string pathurl = "param2/1/aliexpress.open/api.offlineAeProduct/" + Appkey; Dictionary paramDic = new Dictionary(); paramDic.Add("access_token", AccessToken); paramDic.Add("productIds", productIds); string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.offlineAeProduct/" + Appkey + "?access_token=" + AccessToken + "&productIds=" + productIds + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return false; RequestNum++; return true; } catch (Exception ex) { ErrorMessage = ex.Message; return false; } } //产品设置橱窗 public bool setShopwindowProduct(string productIdList, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } try { string pathurl = "param2/1/aliexpress.open/api.setShopwindowProduct/" + Appkey; Dictionary paramDic = new Dictionary(); paramDic.Add("access_token", AccessToken); paramDic.Add("productIdList", productIdList); string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.setShopwindowProduct/" + Appkey + "?access_token=" + AccessToken + "&productIdList=" + productIdList + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return false; RequestNum++; return true; } catch (Exception ex) { ErrorMessage = ex.Message; return false; } } #endregion #region 纠纷 //查询纠纷列表 public string GetQueryIssueList(int currentPage, string issueStatus, out string ErrorMessage) { if (string.IsNullOrEmpty(RefreshToken) == true || RefreshTokenSaveTime == null || RefreshTokenSaveTime.Value.AddDays(180) < DateTime.Now.AddDays(-25)) { GetRefreshToken(out ErrorMessage); } if (AccessTokenUpdateTime == null || AccessTokenUpdateTime.Value < DateTime.Now.AddHours(-9)) { GetAccessToken2(out ErrorMessage); } try { string pathurl = "param2/1/aliexpress.open/api.queryIssueList/" + Appkey; Dictionary paramDic = new Dictionary(); paramDic.Add("access_token", AccessToken); paramDic.Add("currentPage", currentPage.ToString()); string tempStatus = ""; if(issueStatus!="") { paramDic.Add("issueStatus", issueStatus); tempStatus = "&issueStatus=" + issueStatus; } string signature = signPath(pathurl, paramDic, DeveKey); string URL = "https://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.queryIssueList/" + Appkey + "?access_token=" + AccessToken + "¤tPage=" + currentPage + tempStatus + "&_aop_signature=" + signature; string XmlContent = CustomIO.HttpRequest(URL, "POST", out ErrorMessage); if (string.IsNullOrEmpty(ErrorMessage) == false) return ""; RequestNum++; return XmlContent; } catch (Exception ex) { ErrorMessage = ex.Message; return ""; } } #endregion } public class DT_LeavewordAPI { public Int32? Id { get; set; } public Int32? Oid { get; set; } public String wordContent { get; set; } public String orderId { get; set; } public Boolean? isRead { get; set; } public String senderName { get; set; } public String senderLoginId { get; set; } public String receiverLoginId { get; set; } public String fileUrl { get; set; } public DateTime? wordCreate { get; set; } public DateTime? wordCreateCN { get; set; } public Int64 wId { get; set; } public String typeId { get; set; } public DateTime? indate { get; set; } public Int32? CompanyId { get; set; } public Boolean? isBack { get; set; } public Int32? ShopId { get; set; } public String readimg { get; set; } public String readstate { get; set; } public String backstate { get; set; } public String ShopName { get; set; } public String StateName { get; set; } public String CountryName { get; set; } } public class DT_InnerMailAPI { public Int32? Id { get; set; } public String wordContent { get; set; } public String orderId { get; set; } public Boolean? isRead { get; set; } public String senderName { get; set; } public String senderLoginId { get; set; } public String receiverLoginId { get; set; } public String fileUrl { get; set; } public DateTime? wordCreate { get; set; } public Int64 wId { get; set; } public String typeId { get; set; } } #region 订单总数 public class AlibabaOrder { /// /// 订单总数 /// public int totalItem { get; set; } public List orderList { get; set; } public List ToListOrderModel() { if (orderList == null) return null; List ListModel = new List(); foreach (var item in orderList) { OrderModel model = item.ToOrderModel(); ListModel.Add(model); } return ListModel; } } #endregion #region 订单汇总 public class Alibaba_orderList { /// /// 贷款金额 /// public Alibaba_loanAmount loanAmount { get; set; } /// /// 计单明细 /// public List productList { get; set; } /// /// 纠纷状态 /// public string issueStatus { get; set; } /// /// 冻结状态 /// public string frozenStatus { get; set; } /// /// 买家登录ID /// public string buyerLoginId { get; set; } /// /// 卖家全名 /// public string sellerSignerFullname { get; set; } /// /// 未知 /// public bool hasRequestLoan { get; set; } /// /// 订单号 /// public long orderId { get; set; } /// /// 支付金额 /// public Alibaba_loanAmount payAmount { get; set; } /// /// 订单创建 /// public string gmtCreate { get; set; } /// /// 订单状态 /// public string orderStatus { get; set; } /// /// 订单状态 /// public Int32? OrderState { get; set; } /// /// 买家全名 /// public string buyerSignerFullname { get; set; } /// /// 超时剩余时间(毫秒),按当前时间计算 /// public long timeoutLeftTime { get; set; } /// /// 资金状态 /// public string fundStatus { get; set; } /// /// 订单类型 /// public string bizType { get; set; } /// /// 支付时间 /// public string gmtPayTime { get; set; } public List msgList { get; set; } public List msgListNew { get; set; } public Alibaba_Buyers BuyersInfo { get; set; } public Alibaba_OrderXXInfo buyerInfo { get; set; } public Alibaba_orderList Copy() { Alibaba_orderList Model = new Alibaba_orderList(); Model.loanAmount = loanAmount; Model.productList = productList; Model.issueStatus = issueStatus; Model.frozenStatus = frozenStatus; Model.buyerLoginId = buyerLoginId; Model.sellerSignerFullname = sellerSignerFullname; Model.hasRequestLoan = hasRequestLoan; Model.orderId = orderId; Model.payAmount = payAmount; Model.gmtCreate = gmtCreate; Model.orderStatus = orderStatus; Model.buyerSignerFullname = buyerSignerFullname; Model.timeoutLeftTime = timeoutLeftTime; Model.fundStatus = fundStatus; Model.bizType = bizType; Model.gmtPayTime = gmtPayTime; Model.msgList = msgList; Model.BuyersInfo = BuyersInfo; Model.buyerInfo = buyerInfo; Model.msgListNew = msgListNew; return Model; } public DateTime getCreateDate() { //20130307164931000+0800 string dt = this.gmtCreate.Insert(12, ":").Insert(10, ":").Insert(8, " ").Insert(6, "-").Insert(4, "-").Substring(0, 19); return Convert.ToDateTime(dt); } public DateTime getPayTime() { //20130307164931000+0800 string dt = this.gmtPayTime.Insert(12, ":").Insert(10, ":").Insert(8, " ").Insert(6, "-").Insert(4, "-").Substring(0, 19); return Convert.ToDateTime(dt); } public DateTime getOutTime() { if (this.timeoutLeftTime / 1000 <= 172800) return DateTime.Now.AddDays(7); return DateTime.Now.AddSeconds(this.timeoutLeftTime / 1000); } #region 转换成统一的订单对象 public OrderModel ToOrderModel() { OrderModel model = new OrderModel(); //if (this.orderId.ToString() == "72860947447064") //{ // string treqq = "72860947447064"; //} model.OrderCode = this.orderId.ToString(); model.TotalPrice = this.payAmount.amount; model.MoneyCode = this.payAmount.currencyCode; model.OrderDate = this.getCreateDate(); model.BuyerID = this.buyerSignerFullname; if (model.BuyerID.Length > 50) model.BuyerID = model.BuyerID.Substring(0,50); model.OrderState = this.OrderState; if (this.buyerInfo != null) model.BuyerName = this.buyerInfo.receiptAddress.contactPerson; if (this.buyerInfo != null) model.BuyerCountry = this.buyerInfo.receiptAddress.country; if (this.buyerInfo != null) model.BuyerAddr = this.buyerInfo.receiptAddress.detailAddress; if (this.buyerInfo != null && string.IsNullOrEmpty(this.buyerInfo.receiptAddress.address2) == false) model.BuyerAddr += "," + this.buyerInfo.receiptAddress.address2; model.BuyerPhone = ""; if (this.buyerInfo != null && this.buyerInfo.receiptAddress.phoneCountry != null) model.BuyerPhone = this.buyerInfo.receiptAddress.phoneCountry + "-"; if (this.buyerInfo != null && this.buyerInfo.receiptAddress.phoneArea != null) model.BuyerPhone += this.buyerInfo.receiptAddress.phoneArea + "-"; if (this.buyerInfo != null && this.buyerInfo.receiptAddress.phoneNumber != null) model.BuyerPhone +=this.buyerInfo.receiptAddress.phoneNumber; if (this.buyerInfo != null) model.BuyerMobile = this.buyerInfo.receiptAddress.mobileNo; if (this.buyerInfo != null && this.buyerInfo.buyerInfo !=null&& this.buyerInfo.buyerInfo.email != null) model.BuyerMail = this.buyerInfo.buyerInfo.email; //model.logisticsAmount = this.buyerInfo.logisticsAmount; // model.escrowFee = this.buyerInfo.escrowFee; model.BuyerFax = ""; if (this.buyerInfo != null) model.BuyerZip = this.buyerInfo.receiptAddress.zip; if (this.buyerInfo != null) model.BuyerProvince = this.buyerInfo.receiptAddress.province; if (this.buyerInfo != null) model.BuyerCity = this.buyerInfo.receiptAddress.city; model.BuyerArea = ""; model.OrderRemark = ""; //memo model.LeaveWord = ""; if (this.msgListNew != null) { foreach (var item2 in this.msgListNew) { model.LeaveWord += item2.content + System.Environment.NewLine; } } model.PayDate = this.getPayTime(); model.OutOrderDate = this.getOutTime(); if (this.productList != null) model.PostInfo = this.productList[0].logisticsServiceName; model.ListModel = new List(); //Alibaba_productAttributes pmd = null; //if (this.buyerInfo != null&&this.buyerInfo.childOrderList!=null) // { // if (this.buyerInfo.childOrderList.productAttributes != null && this.buyerInfo.childOrderList.productAttributes != "") // { // JavaScriptSerializer JsonConvert = new JavaScriptSerializer(); // pmd = JsonConvert.Deserialize(this.buyerInfo.childOrderList.productAttributes); // } // } if (this.productList != null) { foreach (var item2 in this.productList) { if (string.IsNullOrEmpty(item2.memo) == false) model.OrderRemark += item2.memo + System.Environment.NewLine; OrderDetailModel model2 = new OrderDetailModel(); string GoodsDesc = ""; if (this.buyerInfo != null && this.buyerInfo.childOrderList != null) { foreach (var pmd in this.buyerInfo.childOrderList) { if (pmd.productId == item2.productId) { JavaScriptSerializer JsonConvert = new JavaScriptSerializer(); Alibaba_productAttributes psku = null; psku = JsonConvert.Deserialize(pmd.productAttributes); if (psku != null && psku.sku != null && psku.sku.Count > 0) { string pName = psku.sku[0].pName.Trim(); string pValue = psku.sku[0].pValue.Trim(); if (psku.sku[0].selfDefineValue.ToString() != "") pValue = psku.sku[0].selfDefineValue; GoodsDesc += pName + ":" + pValue; } if (psku != null && psku.sku != null && psku.sku.Count > 1) { string pName = psku.sku[1].pName.Trim(); string pValue = psku.sku[1].pValue.Trim(); GoodsDesc += " " + pName + ":" + pValue; } } } } model2.TypeDesc = GoodsDesc; model2.productImgUrl = item2.productImgUrl; model2.GoodsNum = item2.productCount; model2.GoodsPrice = item2.productUnitPrice.amount; model2.MoneyCode = item2.productUnitPrice.currencyCode; model2.GoodsName = item2.productName; model2.GoodsSKU = item2.skuCode; model2.PostInfo = item2.logisticsServiceName; model.ListModel.Add(model2); } } return model; } #endregion } #endregion public class Alibaba_OrderXXInfo { /// /// 物流金额 /// //public Decimal? logisticsAmount { get; set; } /// /// 交易用金 /// //public Decimal? escrowFee { get; set; } public Alibaba_BuyInfo buyerInfo { get; set; } public Alibaba_Addr receiptAddress { get; set; } public List childOrderList { get; set; } } #region 订单地址信息 public class Alibaba_Addr { public string zip { get; set; } public string phoneNumber { get; set; } public string province { get; set; } public string address2 { get; set; } public string phoneArea { get; set; } public string phoneCountry { get; set; } public string contactPerson { get; set; } public string mobileNo { get; set; } public string city { get; set; } public string country { get; set; } public string detailAddress { get; set; } } #endregion #region 订单子信息 public class Alibaba_ChildOrder { public string productAttributes { get; set; } public long productId { get; set; } } #endregion #region 属性信息 public class Alibaba_productAttributes { public List sku { get; set; } } #endregion #region 属性信息 public class Alibaba_SKU { public string pName { get; set; } public string pValue { get; set; } public string selfDefineValue { get; set; } } #endregion #region 订单买家信息 public class Alibaba_BuyInfo { public string lastName { get; set; } public string loginId { get; set; } public string email { get; set; } public string firstName { get; set; } public string country { get; set; } } #endregion #region 订单明细 public class Alibaba_product { /// /// 订单ID /// public long childId { get; set; } /// /// 备货时间 /// public long goodsPrepareTime { get; set; } /// /// 物流金额 /// public Alibaba_loanAmount logisticsAmount { get; set; } /// /// 订单备注 /// public string memo { get; set; } /// /// 卖家FirstName /// public string sellerSignerFirstName { get; set; } /// /// 总产品数量 /// public Alibaba_loanAmount totalProductAmount { get; set; } /// /// 限时达 /// public string freightCommitDay { get; set; } /// /// 子订单是否能提交纠纷 /// public bool canSubmitIssue { get; set; } /// /// 产品单位 /// public string productUnit { get; set; } /// /// 纠纷状态 /// public string issueStatus { get; set; } /// /// 物流类型 /// public string logisticsType { get; set; } /// /// 订单号 /// public long orderId { get; set; } /// /// 物流服务 /// public string logisticsServiceName { get; set; } /// /// 子订单状态 /// public string sonOrderStatus { get; set; } /// /// 产品镜像链接 /// public string productSnapUrl { get; set; } /// /// 假一赔三 /// public bool moneyBack3x { get; set; } /// /// sku码 /// public string skuCode { get; set; } /// /// 产品ID /// public long productId { get; set; } /// /// 产品数量 /// public int productCount { get; set; } /// /// 妥投时间 /// public string deliveryTime { get; set; } /// /// 产品单位价格 /// public Alibaba_loanAmount productUnitPrice { get; set; } /// /// 卖家LastName /// public string sellerSignerLastName { get; set; } /// /// 产品图片链接 /// public string productImgUrl { get; set; } /// /// 未知,文档中不存在 /// public string showStatus { get; set; } /// /// 产品名称 /// public string productName { get; set; } } #endregion #region 订单总金额 public class Alibaba_loanAmount { /// /// 订单总金额 /// public decimal amount { get; set; } /// /// 订单总金额(分) /// public int cent { get; set; } /// /// 货币代码 /// public string currencyCode { get; set; } /// /// 分的定义,1块除100 /// public int centFactor { get; set; } public Alibaba_currency currency { get; set; } } #endregion #region 货币 public class Alibaba_currency { /// /// 小数位 /// public int defaultFractionDigits { get; set; } /// /// 货币符号 /// public string symbol { get; set; } /// /// 货币代码 /// public string currencyCode { get; set; } } #endregion #region 留言 public class Alibaba_MsgResult { public int total { get; set; } public bool success { get; set; } public List msgList { get; set; } } #endregion #region 留言内容 public class Alibaba_MsgResult_content { public Int64 id { get; set; } public string content { get; set; } public string orderId { get; set; } public string typeId { get; set; } public Boolean? read { get; set; } public string senderName { get; set; } public string senderLoginId { get; set; } public string receiverLoginId { get; set; } public string fileUrl { get; set; } public string gmtCreate { get; set; } } #endregion #region 留言新 public class Alibaba_MsgResultNew { public List result { get; set; } } #endregion #region 留言内容新 public class Alibaba_MsgContentNew { public Int64 id { get; set; } public string senderName { get; set; } public string content { get; set; } public string gmtCreate { get; set; } public string typeId { get; set; } // public string filePath { get; set; } public string messageType { get; set; } public Alibaba_MsgResult_summary summary { get; set; } } #endregion #region 留言内容新 public class Alibaba_MsgResult_summary { public string senderName { get; set; } public string orderUrl { get; set; } public string receiverName { get; set; } } #endregion #region 站内信 public class Alibaba_InnerMailResult { public int total { get; set; } public bool success { get; set; } public List msgList { get; set; } } #endregion #region 站内信内容 public class Alibaba_InnerMail_content { public Int64 id { get; set; } public string content { get; set; } public string orderId { get; set; } public Boolean? read { get; set; } public string senderName { get; set; } public string senderLoginId { get; set; } public string receiverLoginId { get; set; } public string fileUrl { get; set; } public string relationId { get; set; } public string gmtCreate { get; set; } } #endregion #region 收货信息 public class Alibaba_Buyers { /// /// 邮编 /// public string zip { get; set; } /// /// 地址2 /// public string address2 { get; set; } /// /// 详细地址 /// public string detailAddress { get; set; } /// /// 国家 /// public string country { get; set; } /// /// 城市 /// public string city { get; set; } /// /// 电话号码 /// public string phoneNumber { get; set; } /// /// 州 /// public string province { get; set; } /// /// 电话区号 /// public string phoneArea { get; set; } /// /// 国家区号 /// public string phoneCountry { get; set; } /// /// 收件人 /// public string contactPerson { get; set; } /// /// 手机号 /// public string mobileNo { get; set; } } #endregion #region 发货订单 public class Alibaba_Order { /// /// 交易订单号 /// public string tradeOrderId{get;set;} /// /// 交易订单来源,AE订单为ESCROW ;国际站订单为“SOURCING” /// public string tradeOrderFrom{get;set;} /// /// 根据订单号获取线上发货物流方案“API获取用户选择的实际发货物流服务(物流服务key,即仓库服务名称)例如:HRB_WLB_ZTOGZ是 中俄航空 Ruston广州仓库; HRB_WLB_RUSTONHEB为哈尔滨备货仓暂不支持,该渠道请做忽略。 /// public string warehouseCarrierService{get;set;} /// /// 国内快递ID /// public string domesticLogisticsCompanyId{get;set;} /// /// 国内快递公司名称 /// public string domesticLogisticsCompany{get;set;} /// /// 国内快递运单号,长度1-32 /// public string domesticTrackingNo{get;set;} } #endregion #region 发货订单结果 public class Alibaba_Order_Result { /// /// 是否成功 /// public bool success{get;set;} /// /// 结果 /// public Alibaba_Order_Result_Detail result{get;set;} } #endregion #region 发货订单结果明细 public class Alibaba_Order_Result_Detail { /// /// 物流订单号 /// public string warehouseOrderId{get;set;} /// /// 国际运单号 /// public string intlTracking{get;set;} /// /// 关联的交易订单号 /// public string tradeOrderId{get;set;} /// /// 交易订单来源 /// public string tradeOrderFrom{get;set;} /// /// 是否创建成功 /// public bool success{get;set;} /// /// 错误代码 /// public string errorCode{get;set;} } #endregion #region 运费估算 public class Alibaba_Fee_Result { /// /// 是否成功 /// public bool success { get; set; } public List result { get; set; } } public class Alibaba_Fee { /// /// 物流名称 /// public string logisticsServiceName { get; set; } /// /// 币种 /// public string trialResult { get; set; } /// /// 时效 /// public string logisticsTimeliness { get; set; } /// /// 物流代码 /// public string logisticsServiceId { get; set; } /// /// 估算费用货币代码 /// public string currencyCode { get; set; } /// /// 估算费用 /// public decimal fee { get; set; } /// /// 仓库地址 /// public string deliveryAddress { get; set; } } #endregion #region 物流服务 public class Alibaba_Express_Result { public List result{get;set;} } public class Alibaba_Express { /// /// 物流公司名称 /// public string logisticsCompany{get;set;} /// /// 物流服务显示名称 /// public string displayName{get;set;} /// /// 物流服务key /// public string serviceName{get;set;} } public class ExpressBody { public string Body { get; set; } } public class logisticsServiceList { public List result { get; set; } } public class logisticsService { public string logisticsServiceName { get; set; } public string trialResult { get; set; } public string logisticsTimeliness { get; set; } public string logisticsServiceId { get; set; } public string deliveryAddress { get; set; } } public class logisticsOrderList { public List result { get; set; } } public class logisticsOrder { public string logisticsStatus { get; set; } public string internationalLogisticsType { get; set; } public string internationallogisticsId { get; set; } public string orderId { get; set; } public string onlineLogisticsId { get; set; } } public class InnerServiceList { public List result { get; set; } } public class InnerService { public string name { get; set; } public string companyId { get; set; } public string companyCode { get; set; } } public class warehouseList { public warehouseService result { get; set; } } public class addressDTOs { public receiverClass receiver { get; set; } public senderClass sender { get; set; } } public class warehouseService { public string warehouseOrderId { get; set; } public string intlTracking { get; set; } public string tradeOrderId { get; set; } public string errorCode { get; set; } public string tradeOrderFrom { get; set; } public string success { get; set; } public string errorDesc{ get; set; } public string outOrderId { get; set; } } public class receiverClass { public string city { get; set; } public string country { get; set; } public string fax { get; set; } public string mobile { get; set; } public string name { get; set; } public string phone { get; set; } public string postcode { get; set; } public string province { get; set; } public string streetAddress { get; set; } } public class senderClass { public string city { get; set; } public string country { get; set; } public string fax { get; set; } public string mobile { get; set; } public string name { get; set; } public string phone { get; set; } public string postcode { get; set; } public string province { get; set; } public string streetAddress { get; set; } } public class declareProductDTOs { public string categoryCnDesc { get; set; } public string categoryEnDesc { get; set; } public int isContainsBattery { get; set; } public decimal productDeclareAmount { get; set; } public int productId { get; set; } public int productNum { get; set; } public decimal productWeight { get; set; } public string hsCode { get; set; } } public class OrderLoanList { public Int32? totalItem { get; set; } public List orderList { get; set; } } public class LoanorderList { public LoanorderamountTotal amountTotal { get; set; } public string orderId { get; set; } public List sonOrderList { get; set; } } public class LoanorderamountTotal { public Decimal? amount { get; set; } public string currencyCode { get; set; } } public class sonOrderList { public string waitLoanReson { get; set; } public string loanStatus { get; set; } public LoanorderamountTotal affiliateCommission { get; set; } public LoanorderamountTotal escrowFee { get; set; } public string childOrderId { get; set; } public LoanorderamountTotal realLoanAmount { get; set; } } #endregion #region 纠纷 //列表 public class IssueList { public string id { get; set; } public DateTime gmtCreate { get; set; } public DateTime gmtModified { get; set; } public string orderId { get; set; } public string issueStatus { get; set; } public string reasonChinese { get; set; } public string reasonEnglish { get; set; } public List issueProcessDTOs { get; set; } } //明细 public class IssueAPIIssueProcessDTO { public string snapshotUrl { get; set; } public IssueAPIIssueDTO issueAPIIssueDTO { get; set; } } public class IssueAPIIssueDTO { } #endregion #region 已导入订单 public class Alibaba_OrderCode { public string OrderCode { get; set; } } #endregion }