using NetLibrary; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Script.Serialization; using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Net; using System.IO; namespace NetLibrary.OnlineTrade { public class WishApi { JavaScriptSerializer JsonConvert = null; public WishApi() { //验证服务器证书回调自动验证 ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate; JsonConvert = new JavaScriptSerializer(); } private bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; } public List GetOrders(string Token, out string ErrorMessage) { ErrorMessage = ""; string URL = "https://merchant.wish.com/api/v1/order/get-fulfill?start=0&limit=50&key=" + Token; string ErrMessage=""; string XmlContent = CustomIO.HttpRequest2(URL, "GET", "text/html", null, System.Net.HttpVersion.Version10,null, out ErrMessage); if (string.IsNullOrEmpty(ErrMessage) == false) { ErrorMessage = ErrMessage; return null; } WishOrderResult Model = JsonConvert.Deserialize(XmlContent); if (string.IsNullOrEmpty(Model.message) == false) { ErrorMessage = Model.message; return null; } List ListModel = new List(); foreach (var item in Model.data) { OrderModel model = item.Order.ToOrderModel(); ListModel.Add(model); } if (Model.paging!=null&&string.IsNullOrEmpty(Model.paging.next) == false) { while (true) { XmlContent = CustomIO.HttpRequest(Model.paging.next, "POST", out ErrMessage); if (string.IsNullOrEmpty(ErrMessage) == false) { ErrorMessage = ErrMessage; return null; } Model = JsonConvert.Deserialize(XmlContent); if (string.IsNullOrEmpty(Model.message) == false) { ErrorMessage = Model.message; return null; } foreach (var item in Model.data) { OrderModel model = item.Order.ToOrderModel(); ListModel.Add(model); } if (Model.data == null || Model.paging == null || Model.data.Count< 50) break; } } return ListModel; } public List GetOrdersNew(string Token, out string ErrorMessage) { ErrorMessage = ""; string URL = "https://merchant.wish.com/api/v2/order/multi-get?access_token=" + Token + "&start=0&count=50"; string ErrMessage = ""; string XmlContent = CustomIO.HttpRequest2(URL, "GET", "text/html", null, System.Net.HttpVersion.Version10, null, out ErrMessage); if (string.IsNullOrEmpty(ErrMessage) == false) { ErrorMessage = ErrMessage; return null; } WishOrderResult Model = JsonConvert.Deserialize(XmlContent); if (string.IsNullOrEmpty(Model.message) == false) { ErrorMessage = Model.message; return null; } List ListModel = new List(); foreach (var item in Model.data) { OrderModel model = item.Order.ToOrderModel(); ListModel.Add(model); } if (Model.paging != null && string.IsNullOrEmpty(Model.paging.next) == false) { while (true) { XmlContent = CustomIO.HttpRequest(Model.paging.next, "POST", out ErrMessage); if (string.IsNullOrEmpty(ErrMessage) == false) { ErrorMessage = ErrMessage; return null; } Model = JsonConvert.Deserialize(XmlContent); if (string.IsNullOrEmpty(Model.message) == false) { ErrorMessage = Model.message; return null; } foreach (var item in Model.data) { OrderModel model = item.Order.ToOrderModel(); ListModel.Add(model); } if (Model.data == null || Model.paging == null || Model.data.Count < 50) break; } } return ListModel; } public bool UpTrackTOWish(string key, string orderno, string ysfs, string trackno, string ship_note) { try { //string key = ""; // var checkkey = cl.Where(o => o.group == group); // if (checkkey.Count() == 0) return false; // key = checkkey.First().key; string result = GetBack(key, orderno, ysfs, trackno, ship_note); if (result.Contains("success")) return true; else return false; } catch { return false; } } private string GetBack(string key, string orderno, string ysfs, string trackno, string ship_note) { string URL = ""; if (ship_note == "") { URL = "https://merchant.wish.com/api/v1/order/fulfill-one?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key; } else URL = "https://merchant.wish.com/api/v1/order/fulfill-one?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key + "&ship_note=" + ship_note; //string URL = "https://merchant.wish.com/api/v1/order/fulfill-one?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "text/html"; request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; qihu theworld)"; request.Headers.Add("Accept-Language: zh-CN"); request.Headers["Pragma"] = "no-cache"; //禁用缓存 request.Headers["Cache-Control"] = "no-cache"; //禁用缓存 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string josn = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); response.Close(); return josn; } public bool ModifyTrackTOWish(string key, string orderno, string ysfs, string trackno, string ship_note) { try { // string key = ""; //var checkkey = cl.Where(o => o.group == group); // if (checkkey.Count() == 0) return false; // key = checkkey.First().key; if (ysfs == "DeYou") ysfs = "DHL"; if (ysfs == "China Post Air Mail") ysfs = "ChinaAirPost"; if (ysfs == "EUB") ysfs = "EPacket"; if (ysfs == "SF Express") ysfs = "SFExpress"; string result = GetModifyBack(key, orderno, ysfs, trackno, ship_note); if (result.Contains("success")) return true; else return false; } catch(Exception ex) { return false; } } private string GetModifyBack(string key, string orderno, string ysfs, string trackno, string ship_note) { string URL = ""; if(ship_note=="") { URL = "https://merchant.wish.com/api/v1/order/fulfill-one?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key; } else URL = "https://merchant.wish.com/api/v1/order/fulfill-one?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key + "&ship_note=" + ship_note; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "text/html"; request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; qihu theworld)"; request.Headers.Add("Accept-Language: zh-CN"); request.Headers["Pragma"] = "no-cache"; //禁用缓存 request.Headers["Cache-Control"] = "no-cache"; //禁用缓存 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string josn = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); response.Close(); return josn; } private string GetModify(string key, string orderno, string ysfs, string trackno, string ship_note) { string URL = ""; if (ship_note == "") { URL = "https://merchant.wish.com/api/v1/order/modify-tracking?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key; } else URL = "https://merchant.wish.com/api/v1/order/modify-tracking?tracking_provider=" + ysfs + "&tracking_number=" + trackno + "&id=" + orderno + "&key=" + key + "&ship_note=" + ship_note; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "text/html"; request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; qihu theworld)"; request.Headers.Add("Accept-Language: zh-CN"); request.Headers["Pragma"] = "no-cache"; //禁用缓存 request.Headers["Cache-Control"] = "no-cache"; //禁用缓存 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string josn = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); response.Close(); return josn; } public string GetOneOrder(string key, string orderno) { string URL = "https://merchant.wish.com/api/v1/order?" + "id=" + orderno + "&key=" + key; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "text/html"; request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; qihu theworld)"; request.Headers.Add("Accept-Language: zh-CN"); request.Headers["Pragma"] = "no-cache"; //禁用缓存 request.Headers["Cache-Control"] = "no-cache"; //禁用缓存 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string josn = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); response.Close(); return josn; } } public class WishOrderResult { public string message { get; set; } public int code { get; set; } public List data { get; set; } public WishPaging paging { get; set; } } public class WishOrder { public WishOrder_Order Order { get; set; } } public class WishOrder_Order { public string sku { get; set; } public string buyer_id { get; set; } public string last_updated { get; set; } public string product_id { get; set; } public string order_time { get; set; } public string quantity { get; set; } public string color { get; set; } public string price { get; set; } public string shipping_cost { get; set; } public string shipping { get; set; } public WishOrder_ShippingDetail ShippingDetail { get; set; } public string order_id { get; set; } public string state { get; set; } public string cost { get; set; } public string variant_id { get; set; } public string order_total { get; set; } public string days_to_fulfill { get; set; } public string product_image_url { get; set; } public string product_name { get; set; } public string transaction_id { get; set; } public string size { get; set; } public DateTime? GetDateTime(string dt) { if (string.IsNullOrEmpty(dt) == true) return null; dt = dt.Replace("T", " "); dt = dt.Remove(dt.Length - 1); return Convert.ToDateTime(dt); } #region 转换成统一的订单对象 public OrderModel ToOrderModel() { OrderModel model = new OrderModel(); model.OrderCode = this.order_id; model.TotalPrice =Convert.ToDecimal(this.order_total); model.MoneyCode = null; model.OrderDate = this.GetDateTime(this.order_time); model.BuyerID = this.buyer_id; model.BuyerName = this.ShippingDetail.name; model.BuyerCountry = this.ShippingDetail.country; model.BuyerAddr = this.ShippingDetail.street_address1; if (this.ShippingDetail.street_address2 != null && this.ShippingDetail.street_address2 != "") model.BuyerAddr +=" "+this.ShippingDetail.street_address2; model.BuyerPhone = this.ShippingDetail.phone_number; model.BuyerMobile = ""; model.BuyerMail = ""; model.BuyerFax = ""; model.BuyerZip = this.ShippingDetail.zipcode; model.BuyerProvince = this.ShippingDetail.state; model.BuyerCity = this.ShippingDetail.city; model.BuyerArea = ""; model.OrderRemark = ""; //memo model.LeaveWord = ""; model.PayDate = this.GetDateTime(this.last_updated); model.OutOrderDate = null; model.ListModel = new List(); OrderDetailModel model2 = new OrderDetailModel(); model2.GoodsNum =Convert.ToInt32(this.quantity); model2.GoodsPrice = Convert.ToDecimal(this.price); model2.MoneyCode = null; model2.GoodsName = this.product_name; model2.GoodsSKU = this.sku; model2.PostInfo = ""; //快递信息 model.ListModel.Add(model2); return model; } #endregion } public class WishOrder_ShippingDetail { public string phone_number { get; set; } public string city { get; set; } public string state { get; set; } public string name { get; set; } public string country { get; set; } public string zipcode { get; set; } public string street_address1 { get; set; } public string street_address2 { get; set; } } public class WishPaging { public string next { get; set; } } }