static void Main(string[] args)
    {
        var myOrder = new UpdateOrderStatusInfo();

        myOrder.IsSuccess = true;
        myOrder.OrderResult.OrderNumber = 1001;
        myOrder.OrderResult.OrderStatus = "Pending";
        myOrder.OrderResult.SellerID    = 69;
    }
Пример #2
0
        /// <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;
            }
        }