using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net; using System.Text; using System.Web; using System.Web.Script.Serialization; using NetLibrary.OnlineTrade; using NPOI.HSSF.Model; using TradeManage; using NetLibrary.Log; using System.Security.Policy; using Aspose.Pdf.Operators; namespace TradeManageNew { /// /// 由于192.168.1.16服务器的.net framework4.5版本不支持发送TSL1.3版本request请求,所以借192.168.1.187:8866服务器跳转一下 /// public class SheinNew { public string IP = "http://192.168.1.187:8866"; public string ShopName { get; set; } public int ShopId { get; set; } public string AppKey { get; set; } public string AppSecret { get; set; } public DateTime StartTime { get; set; } JavaScriptSerializer JsonConvert = null; public SheinNew() { JsonConvert = new JavaScriptSerializer(); } public List GetOrders(out string errorMessage) { var orderModels = new List(); try { if (string.IsNullOrEmpty(AppKey) || string.IsNullOrEmpty(AppSecret)) { errorMessage = "店铺未授权"; return null; } int pageIndex = 1; int pageCount = 1; while (pageIndex <= pageCount) { var orders = GetSheinOrder(pageIndex, out pageCount, out errorMessage); if (!string.IsNullOrEmpty(errorMessage)) throw new Exception(errorMessage); if (orders != null) { var orderIds = orders.Select(r => r.orderNo).ToList(); var orderDetails = GetSheinOrderDetail(orderIds); var orderAddrs = GetSheinOrderBuyerAddress(orderIds); ErrorFollow.TraceWrite("自动导入Shein订单", " orderDetails:" + JsonConvert.Serialize(orderDetails), " orderAddrs:" + JsonConvert.Serialize(orderAddrs)); foreach (var order in orders) { //if (order.orderNo != "GSUNJ020M00NV4G") //{ // continue; //} var detail = orderDetails == null ? null : orderDetails.Where(r => r.orderNo == order.orderNo).FirstOrDefault(); var addr = orderAddrs == null ? null : orderAddrs.Where(r => r.orderNo == order.orderNo).FirstOrDefault(); if (detail != null) { if (order.orderStatus != "6") //订单状态6为订单中所有商品已退款,这种订单不导入 { var rmodel = ToOrderModel(detail, addr); ErrorFollow.TraceWrite("自动导入Shein订单rmodel信息", " ", "rmodel:" + JsonConvert.Serialize(rmodel)); if (rmodel != null) orderModels.Add(rmodel); } } } } pageIndex++; } errorMessage = ""; } catch (Exception ex) { ErrorFollow.TraceWrite("自动导入Shein订单总错", " ", "错误信息:" + ex.Message); errorMessage = ex.Message; } return orderModels; } /// /// 获取订单列表 /// /// /// /// /// public List GetSheinOrder(int pageIndex, out int pageCount, out string errorMessage) { var rmodel = new List(); try { string url = IP + "/api/SheinAPi/getSheinOrderList?keyid=" + AppKey + "&secret=" + AppSecret + "&sDate=" + StartTime.Date.ToString("yyyy-MM-dd HH:mm:ss") + "&eDate=" + StartTime.AddDays(2).Date.ToString("yyyy-MM-dd HH:mm:ss") + "&page=" + pageIndex; //using (HttpClient client = new HttpClient()) //{ // HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url); // var response = client.SendAsync(request); // string responseContent = response.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult(); // ErrorFollow.TraceWrite("自动导入Shein订单列表", " URL:"+url, " 返回信息:" + responseContent); // var obj = JsonConvert.Deserialize(responseContent); // if (obj != null && obj.code == "0" && obj.info != null) // { // pageCount = (obj.info.count % 30 == 0) ? (obj.info.count / 30) : (obj.info.count / 30 + 1); // errorMessage = ""; // rmodel = obj.info.orderList; // } // else // { // rmodel = null; // pageCount = 0; // errorMessage="同步Shein订单出错:"+responseContent.ToString(); // } //} using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8 string responseContent = client.DownloadString(url); ErrorFollow.TraceWrite("自动导入Shein订单列表", " URL:" + url, " 返回信息:" + responseContent); var obj = JsonConvert.Deserialize(responseContent); if (obj != null && obj.code == "0" && obj.info != null) { pageCount = (obj.info.count % 30 == 0) ? (obj.info.count / 30) : (obj.info.count / 30 + 1); errorMessage = ""; rmodel = obj.info.orderList; } else { rmodel = null; pageCount = 0; errorMessage = "同步Shein订单出错:" + responseContent.ToString(); } } } catch (Exception ex) { pageCount = 0; rmodel = null; errorMessage = "同步Shein订单出错:" + ex.Message; } return rmodel; } /// /// 获取订单详情信息 /// /// /// public List GetSheinOrderDetail(List orderIds) { var _orderIds = JsonConvert.Serialize(orderIds); var rmodel = new List(); string url = IP + "/api/SheinAPi/getSheinOrderDetailList?keyid=" + AppKey + "&secret=" + AppSecret + "&orderIds=" + _orderIds; try { //using (HttpClient client = new HttpClient()) //{ // HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url); // var response = client.SendAsync(request); // string responseContent = response.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult(); // ErrorFollow.TraceWrite("自动导入Shein订单详情", " URL:" + url, " 返回信息:" + responseContent); // var detailObj = JsonConvert.Deserialize(responseContent); // rmodel = detailObj.info; //} using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8 string responseContent = client.DownloadString(url); ErrorFollow.TraceWrite("自动导入Shein订单详情", " URL:" + url, " 返回信息:" + responseContent); var detailObj = JsonConvert.Deserialize(responseContent); rmodel = detailObj.info; } } catch (Exception ex) { ErrorFollow.TraceWrite("自动导入Shein订单详情出错", " " , " 错误信息:" + ex.Message); rmodel = null; } return rmodel; } /// /// 获取订单收件人地址信息 /// /// /// public List GetSheinOrderBuyerAddress(List orderIds) { var rmodel = new List(); foreach (var orderId in orderIds) { string url = IP + "/api/SheinAPi/getSheinOrderBuyerAddress?keyid=" + AppKey + "&secret=" + AppSecret + "&orderId=" + orderId; try { //using (HttpClient client = new HttpClient()) //{ // HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url); // var response = client.SendAsync(request); // string responseContent = response.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult(); // ErrorFollow.TraceWrite("自动导入Shein订单地址", " URL:" + url, " 返回信息:" + responseContent); // var obj = JsonConvert.Deserialize(responseContent); // if (obj != null && obj.info != null && obj.info.receiveMsgList != null) // { // rmodel.Add(obj.info.receiveMsgList.FirstOrDefault()); // } //} using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; // 设置编码为 UTF-8 string responseContent = client.DownloadString(url); ErrorFollow.TraceWrite("自动导入Shein订单地址", " URL:" + url, " 返回信息:" + responseContent); var obj = JsonConvert.Deserialize(responseContent); if (obj != null && obj.info != null && obj.info.receiveMsgList != null) { rmodel.Add(obj.info.receiveMsgList.FirstOrDefault()); } } } catch (Exception ex) { ErrorFollow.TraceWrite("自动导入Shein订单地址出错", " ", " 错误信息:" + ex.Message); continue; } } return rmodel; } public OrderModel ToOrderModel(SheinOrderDetailApiInfoModel detail, SheinOrderExportAddressInfoReceiveMsg addr) { OrderModel rmodel = new OrderModel(); try { rmodel.OrderCode = detail.orderNo; rmodel.PlatOrderCode = detail.orderNo; if (ShopId == 95)//Shein半托管店铺的价格 { rmodel.TotalPrice = detail.estimatedGrossIncome; } else { rmodel.TotalPrice = detail.productTotalPrice - detail.storeDiscountTotalPrice - detail.promotionDiscountTotalPrice - detail.totalCommission; } rmodel.MoneyCode = detail.orderCurrency; rmodel.OrderDate = detail.orderTime; rmodel.OrderState = 1; if (addr != null) { rmodel.BuyerName = addr.firstName + " " + (string.IsNullOrEmpty(addr.middleName) ? "" : addr.middleName + "") + addr.lastName; rmodel.BuyerCountry = addr.country; rmodel.BuyerAddr = addr.address; rmodel.BuyerPhone = addr.phone; rmodel.BuyerZip = addr.postCode; //rmodel.BuyerProvince=addr.province; var proviceCode = DataNew.GetProvinceCode(addr.province); rmodel.BuyerProvince = string.IsNullOrEmpty(proviceCode) ? addr.province : proviceCode; rmodel.BuyerCity = addr.city; rmodel.BuyerArea = addr.district; } if (detail.paymentTime != null) rmodel.PayDate = detail.paymentTime; else rmodel.PayDate = rmodel.OrderDate; rmodel.OutOrderDate = DateTime.Now.AddDays(7); if (rmodel.OrderDate != null && rmodel.OrderDate.Value <= Convert.ToDateTime("1753-01-01")) { rmodel.OrderDate = DateTime.Now; } if (rmodel.PayDate != null && rmodel.PayDate.Value <= Convert.ToDateTime("1753-01-01")) { rmodel.PayDate = DateTime.Now; } if (rmodel.OutOrderDate != null && rmodel.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01")) { rmodel.OutOrderDate = DateTime.Now.AddDays(7); } if (detail.packageWaybillList != null && detail.packageWaybillList.Count > 0) rmodel.PostInfo = detail.packageWaybillList[0].carrier; rmodel.ListModel = new List(); if (detail.orderGoodsInfoList != null && detail.orderGoodsInfoList.Count > 0) { foreach (var item2 in detail.orderGoodsInfoList) { OrderDetailModel model2 = new OrderDetailModel(); //model2.TypeDesc = item2.newGoodsStatus.ToString(); model2.OrderItemId = item2.goodsId.ToString(); model2.GoodsNum = 1; model2.GoodsName = item2.goodsTitle; model2.GoodsSKU = item2.sellerSku; rmodel.ListModel.Add(model2); } } } catch (Exception ex) { rmodel = null; ErrorFollow.TraceWrite("自动导入Shein订单ToOrderModel出错", " ", " 错误信息:" + ex.Message); } return rmodel; } } }