Exemplo n.º 1
0
        public static ShipResponse SendConfirmRequest(ref ShipRequest req)
        {
            ShipResponse result = new ShipResponse();

            // Build Request and save output
            string requestXml = BuildShipConfirmRequest(ref req);
            req.XmlConfirmRequest = requestXml;

            // Build Url for UPS Service
            string actionUrl = req.Settings.ServerUrl;
            actionUrl += "ShipConfirm";

            // Send Request and Store Response
            string responseXml = string.Empty;
            responseXml = XmlTools.ReadHtmlPage_POST(actionUrl, requestXml);
            req.XmlConfirmResponse = responseXml;

            // Parse Response
            result = ParseShipConfirmResponse(responseXml);

            return result;
        }
Exemplo n.º 2
0
        private static ShipResponse ParseShipConfirmResponse(string xml)
        {
            ShipResponse result = new ShipResponse();

            try
            {
                XmlDocument xDoc;
                xDoc = new XmlDocument();
                xDoc.LoadXml(xml);

                XmlNode nodeResponseCode = xDoc.SelectSingleNode("ShipmentConfirmResponse/Response/ResponseStatusCode");
                if (nodeResponseCode != null)
                {
                    int responseCode = 0;
                    responseCode = int.Parse(nodeResponseCode.InnerText);
                    if (responseCode == 1)
                    {
                        result.Success = true;

                        // Parse appropriate info
                        result.ShipmentDigest = XmlTools.XPathToString(ref xDoc, "ShipmentConfirmResponse/ShipmentDigest");
                        result.TrackingNumber = XmlTools.XPathToString(ref xDoc, "ShipmentConfirmResponse/ShipmentIdentificationNumber");
                        result.BillingWeight = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/BillingWeight/Weight");
                        result.BillingWeightUnits = XmlTools.XPathToUnits(ref xDoc, "ShipmentConfirmResponse/BillingWeight/UnitOfMeasurement/Code");
                        result.ServiceOptionsCharge = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/ServiceOptionsCharges/MonetaryValue");
                        result.ServiceOptionsChargeCurrency = XmlTools.XPathToCurrencyCode(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/ServiceOptionsCharges/CurrencyCode");
                        result.TotalCharge = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TotalCharges/MonetaryValue");
                        result.TotalChargeCurrency = XmlTools.XPathToCurrencyCode(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TotalCharges/CurrencyCode");
                        result.TransportationCharge = XmlTools.XPathToDecimal(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TransportationCharges/MonetaryValue");
                        result.TransportationChargeCurrency = XmlTools.XPathToCurrencyCode(ref xDoc, "ShipmentConfirmResponse/ShipmentCharges/TransportationCharges/CurrencyCode");
                    }
                    else
                    {
                        result.Success = false;

                        // Parse error
                        result.ErrorMessage = XmlTools.XPathToString(ref xDoc, "ShipmentConfirmResponse/Response/Error/ErrorDescription");

                    }
                }
                else
                {
                    result.Success = false;
                    result.ErrorMessage = "Unable to Parse Response Code.";
                }
            }

            catch (Exception Exx)
            {
                result.ErrorMessage = "Parsing Error: " + Exx.Message;
                result.Success = false;
            }

            return result;
        }