static void Main(string[] args) { var myOrder = new UpdateOrderStatusInfo(); myOrder.IsSuccess = true; myOrder.OrderResult.OrderNumber = 1001; myOrder.OrderResult.OrderStatus = "Pending"; myOrder.OrderResult.SellerID = 69; }
/// <summary> /// 新蛋: 调用API接口,同步订单发货信息 到店铺后台 /// </summary> /// <param name="OrderNumber">活石ERP订单信息</param> /// <param name="TrackingNumber">快递单号</param> /// <param name="ShipCarrier">快递公司</param> /// <param name="ShipService">快递服务</param> /// <returns></returns> public UpdateOrderStatusInfo updateOrderShopInfo(StandardOrderEgg standardOrder, string TrackingNumber, string ShipCarrier, string ShipService) { 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/orderstatus/orders/{0}?sellerid={1}"; endpoint = String.Format(endpoint, standardOrder.PlatformOrderID, SellerID); //Create an HttpWebRequest System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 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); String requestBody = @"<UpdateOrderStatus>" + "<Action>2</Action>" + "<Value>" + "<![CDATA[" + "<Shipment>" + "<Header>" + "<SellerID>" + SellerID + "</SellerID>" + "<SONumber>" + standardOrder.PlatformOrderID + "</SONumber>" + "</Header>" + "<PackageList>" + "<Package>" + "<TrackingNumber>" + TrackingNumber + "</TrackingNumber>" + "<ShipCarrier>" + ShipCarrier + "</ShipCarrier>" + "<ShipService>" + ShipService + "</ShipService>" + "<ItemList>"; //累加商品信息 for (int i = 0; i < standardOrder.Detail.Count(); i++) { requestBody = requestBody + "<Item>"; requestBody = requestBody + "<SellerPartNumber>" + standardOrder.Detail.ToList()[i].SellerSku + "</SellerPartNumber>"; requestBody = requestBody + "<ShippedQty>" + standardOrder.Detail.ToList()[i].Quantity + "</ShippedQty>"; requestBody = requestBody + "</Item>"; } requestBody = requestBody + "</ItemList>" + "</Package>" + "</PackageList>" + "</Shipment>" + "]]>" + "</Value>" + "</UpdateOrderStatus>"; 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) { throw new Exception("接口调用失败"); } using (Stream responseStream = response.GetResponseStream()) { //获得接口返回结果 string OrdersInfoStr = StreamToStr(responseStream); //转为xml StringReader Reader = new StringReader(OrdersInfoStr); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Reader); //反序列化为类 UpdateOrderStatusInfo ordersInfo = DESerializer <UpdateOrderStatusInfo>(OrdersInfoStr); return(ordersInfo); } } } catch (WebException we)//Error Handling for Bad Request { var errorMsg = ""; if (((WebException)we).Status == WebExceptionStatus.ProtocolError) { WebResponse errResp = ((WebException)we).Response; using (Stream respStream = errResp.GetResponseStream()) { StreamReader reader = new StreamReader(respStream); errorMsg = String.Format("{0}", reader.ReadToEnd()); Console.WriteLine(errorMsg); } } if (errorMsg.IndexOf("SO011") != -1) { UpdateOrderStatusInfo result = new UpdateOrderStatusInfo(); result.IsSuccess = UpdateOrderStatusInfoIsSuccess.@true; return(result); } else { throw new Exception(errorMsg); } } catch (Exception ex)//unhandle error { throw ex; } }