/// <summary> /// 按【时间段】 查询订单(按10单分页;返回null表示接口调用异常) /// </summary> /// <param name="OrderDateFrom">订单查询【开始时间】 格式:yyyy-MM-dd HH:mm:ss</param> /// <param name="OrderDateTo">订单查询【开始结束】 格式:yyyy-MM-dd HH:mm:ss</param> /// <returns></returns> public List <NeweggAPIResponse> GetOrdersInfo(DateTime OrderDateFrom, DateTime OrderDateTo) { List <NeweggAPIResponse> neweggAPIResponseList = new List <NeweggAPIResponse>(); NeweggAPIResponse orderInfo = GetOrders(1, 1, OrderDateFrom, OrderDateTo); if (orderInfo != null) { int ordersCount = orderInfo.ResponseBody.PageInfo.TotalCount; //时间段内,订单总数量 int pageSize = 50; int pageCount = ordersCount / pageSize; if (ordersCount % pageSize != 0) { pageCount += 1; } if (ordersCount > 0) { for (int i = 0; i < pageCount; i++) { NeweggAPIResponse ordersInfo = GetOrders(i + 1, pageSize, OrderDateFrom, OrderDateTo); if (ordersInfo != null) { neweggAPIResponseList.Add(ordersInfo); } else { //个别订单号返回的xml有问题,导致异常,只能一个个获取,排除掉异常的订单 var loopStart = 1; var loopEnd = 1; if (ordersCount < pageSize) { loopEnd = ordersCount; } else { loopStart = pageSize * i + 1; loopEnd = pageSize * (i + 1); if (loopEnd > ordersCount) { loopEnd = ordersCount; } } for (var j = loopStart; j <= loopEnd; j++) { ordersInfo = GetOrders(j, 1, OrderDateFrom, OrderDateTo); if (ordersInfo != null) { neweggAPIResponseList.Add(ordersInfo); } } } } } return(neweggAPIResponseList); } { return(null); } }
//按时间段 调用API接口,获取订单信息 private static NeweggAPIResponse GetOrders(int PageIndex, int PageSize, DateTime OrderDateFrom, DateTime OrderDateTo) { try { //Determine the correct Newegg Marketplace API endpoint to use. // Please make sure your request URL is all in lower case string endpoint = @"https://api.newegg.com/marketplace/ordermgmt/order/orderinfo?sellerid={0}"; endpoint = String.Format(endpoint, SellerID); //Create an HttpWebRequest System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true; //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; System.Net.HttpWebRequest request = System.Net.WebRequest.Create(endpoint) as HttpWebRequest; //Remove proxy request.Proxy = null; //Specify the request method request.Method = "PUT"; //Specify the xml/Json request and response content types. request.ContentType = "application/xml"; request.Accept = "application/xml"; //Attach authorization information request.Headers.Add("Authorization", Authorization); request.Headers.Add("Secretkey", SecretKey); //Construct the query criteria in the request body //string requestBody = @"<ContentQueryCriteria><Type>1</Type><Value>9SIAGAZ7SY5852</Value></ContentQueryCriteria>"; String requestBody = @"<NeweggAPIRequest>" + "<OperationType>GetOrderInfoRequest</OperationType>" + "<RequestBody>" + "<PageIndex>" + PageIndex + "</PageIndex>" + "<PageSize>" + PageSize + "</PageSize>" + "<RequestCriteria>" //+ "<OrderNumberList>" //+ "<OrderNumber>449309111</OrderNumber>" //+ "<OrderNumber>425684294</OrderNumber>" //+ "</OrderNumberList>" //+ "<Status>1</Status>" //0:Unshipped;1:Partially Shipped;2:Shipped;3:Invoiced;4:Voided + "<Type>0</Type>" //0:All (Default);1:SBN (Shipped by Newegg);2:SBS (Shipped by Seller);3:Multi-Channel + "<OrderDateFrom>" + OrderDateFrom.ToString("yyyy-MM-dd HH:mm:ss") + "</OrderDateFrom>" + "<OrderDateTo>" + OrderDateTo.ToString("yyyy-MM-dd HH:mm:ss") + "</OrderDateTo>" + "<OrderDownloaded>0</OrderDownloaded>" + "</RequestCriteria>" + "</RequestBody>" + "</NeweggAPIRequest>"; //byte[] byteStr = requestStr.getBytes(); byte[] byteStr = Encoding.UTF8.GetBytes(requestBody); request.ContentLength = byteStr.Length; using (Stream stream = request.GetRequestStream()) { stream.Write(byteStr, 0, byteStr.Length); } //Parse the response using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { if (response.StatusCode != HttpStatusCode.OK) { return(null); } using (Stream responseStream = response.GetResponseStream()) { //获得接口返回结果 string OrdersInfoStr = StreamToStr(responseStream); //转为xml StringReader Reader = new StringReader(OrdersInfoStr); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Reader); //反序列化为类 NeweggAPIResponse ordersInfo = DESerializer <NeweggAPIResponse>(OrdersInfoStr); return(ordersInfo); } } } catch (WebException we)//Error Handling for Bad Request { if (((WebException)we).Status == WebExceptionStatus.ProtocolError) { WebResponse errResp = ((WebException)we).Response; using (Stream respStream = errResp.GetResponseStream()) { StreamReader reader = new StreamReader(respStream); Console.WriteLine(String.Format("{0}", reader.ReadToEnd())); } } return(null); } catch (Exception ex)//unhandle error { return(null); } }