public RateResponse GetRate(Package package) { try { string url = "?API=RateV2&XML=<RateV2Request USERID=\"{0}\"><Package ID=\"0\"><Service>{1}</Service><ZipOrigination>{2}</ZipOrigination><ZipDestination>{3}</ZipDestination><Pounds>{4}</Pounds><Ounces>{5}</Ounces><Container>{6}</Container><Size>{7}</Size></Package></RateV2Request>"; int lb = package.WeightInOunces / 16; int oz = package.WeightInOunces % 16; string container = package.PackageType.ToString().Replace("_", " "); if (container == "None") { url = url.Replace("<Container>{6}</Container>", ""); } string fromZip = package.FromAddress.Zip; if (package.OriginZipcode != null && package.OriginZipcode.Length > 0) { fromZip = package.OriginZipcode; } url = GetURL() + url; url = String.Format(url, _userid, package.ServiceType.ToString(), fromZip, package.ToAddress.Zip, lb.ToString(), oz.ToString(), container, package.PackageSize.ToString().Replace("_", " ")); string xml = web.DownloadString(url); if (xml.Contains("<Error>")) { int idx1 = xml.IndexOf("<Description>") + 13; int idx2 = xml.IndexOf("</Description>"); int l = xml.Length; string errDesc = xml.Substring(idx1, idx2 - idx1); throw new USPSManagerException(errDesc); } return(RateResponse.FromXml(xml)); } catch (WebException ex) { throw new USPSManagerException(ex); } }
private decimal GetLiveRate(string shipperCode, string tableType, string tableClassCode, string destZip, string orgZip, double weightInOz) { decimal returnRate = 0; switch (shipperCode) { case "USPS": { try { if (_reply == null) { USPSManager m = new USPSManager("065TOTAL8347", false); Package pack = new Package(); pack.ServiceType = ServiceType.All; pack.PackageSize = PackageSize.Regular; pack.FromAddress.Zip = orgZip; pack.ToAddress.Zip = destZip; pack.WeightInOunces = Convert.ToInt32(weightInOz); pack.Machinable = true; _reply = new RateResponse(); _reply = m.GetRate(pack); } foreach (MAX.USPS.Postage postage in _reply.Postage) { if (postage.Class.ToString() == tableClassCode) { decimal postageAmount = 0; postageAmount = postage.Amount; return postageAmount; } } } catch (Exception) { return 0; } } break; case "FEDEX": { try { FedExRates.RateService.ServiceType myService = FedExRates.RateService.ServiceType.FEDEX_GROUND; switch (tableType) { case "FEDEX_GROUND": { myService = FedExRates.RateService.ServiceType.FEDEX_GROUND; break; } case "EUROPE_FIRST_INTERNATIONAL_PRIORITY": { myService = FedExRates.RateService.ServiceType.EUROPE_FIRST_INTERNATIONAL_PRIORITY; break; } case "FEDEX_1_DAY_FREIGHT": { myService = FedExRates.RateService.ServiceType.FEDEX_1_DAY_FREIGHT; break; } case "FEDEX_2_DAY": { myService = FedExRates.RateService.ServiceType.FEDEX_2_DAY; break; } case "FEDEX_2_DAY_FREIGHT": { myService = FedExRates.RateService.ServiceType.FEDEX_2_DAY_FREIGHT; break; } case "FEDEX_3_DAY_FREIGHT": { myService = FedExRates.RateService.ServiceType.FEDEX_3_DAY_FREIGHT; break; } case "FEDEX_EXPRESS_SAVER": { myService = FedExRates.RateService.ServiceType.FEDEX_EXPRESS_SAVER; break; } case "FIRST_OVERNIGHT": { myService = FedExRates.RateService.ServiceType.FIRST_OVERNIGHT; break; } case "GROUND_HOME_DELIVERY": { myService = FedExRates.RateService.ServiceType.GROUND_HOME_DELIVERY; break; } case "INTERNATIONAL_ECONOMY": { myService = FedExRates.RateService.ServiceType.INTERNATIONAL_ECONOMY; break; } case "INTERNATIONAL_ECONOMY_FREIGHT": { myService = FedExRates.RateService.ServiceType.INTERNATIONAL_ECONOMY_FREIGHT; break; } case "INTERNATIONAL_FIRST": { myService = FedExRates.RateService.ServiceType.INTERNATIONAL_FIRST; break; } case "INTERNATIONAL_PRIORITY": { myService = FedExRates.RateService.ServiceType.INTERNATIONAL_PRIORITY; break; } case "INTERNATIONAL_PRIORITY_FREIGHT": { myService = FedExRates.RateService.ServiceType.INTERNATIONAL_PRIORITY_FREIGHT; break; } case "PRIORITY_OVERNIGHT": { myService = FedExRates.RateService.ServiceType.PRIORITY_OVERNIGHT; break; } case "STANDARD_OVERNIGHT": { myService = FedExRates.RateService.ServiceType.STANDARD_OVERNIGHT; break; } default: break; } IWEB.FedEx.Rate myRate = new IWEB.FedEx.Rate(); myRate.ServiceType = myService; myRate.DestinationCountryCode = "US"; myRate.DestinationZip = destZip; myRate.OriginCountryCode = "US"; myRate.OriginZip = orgZip; decimal dweightInOz = Convert.ToDecimal(weightInOz); myRate.PackageWeightInOunces = dweightInOz; decimal rate = myRate.GetRate(); if (rate != 0) { return rate; } else { return 0; } } catch (Exception) { return 0; } } break; case "UPS": { } break; case "DHL": { } break; default: //there wasent something we know about, return null values break; } return returnRate; }
public static RateResponse FromXml(string xml) { RateResponse r = new RateResponse(); int idx1 = 0; int idx2 = 0; if (xml.Contains("<ZipOrigination>")) { idx1 = xml.IndexOf("<ZipOrigination>") + 17; idx2 = xml.IndexOf("</ZipOrigination>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<ZipDestination>")) { idx1 = xml.IndexOf("<ZipDestination>") + 16; idx2 = xml.IndexOf("</ZipDestination>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Pounds>")) { idx1 = xml.IndexOf("<Pounds>") + 8; idx2 = xml.IndexOf("</Pounds>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Ounces>")) { idx1 = xml.IndexOf("<Ounces>") + 8; idx2 = xml.IndexOf("</Ounces>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Container>")) { idx1 = xml.IndexOf("<Container>") + 11; idx2 = xml.IndexOf("</Container>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Size>")) { idx1 = xml.IndexOf("<Size>") + 6; idx2 = xml.IndexOf("</Size>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Zone>")) { idx1 = xml.IndexOf("<Zone>") + 6; idx2 = xml.IndexOf("</Zone>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } int lastidx = 0; while (xml.IndexOf("<MailService>", lastidx) > -1) { Postage p = new Postage(); idx1 = xml.IndexOf("<MailService>", lastidx) + 13; idx2 = xml.IndexOf("</MailService>", lastidx + 13); p.MailService = xml.Substring(idx1, idx2 - idx1); idx1 = xml.IndexOf("<Rate>", lastidx) + 6; idx2 = xml.IndexOf("</Rate>", lastidx + 13); p.Amount = Decimal.Parse(xml.Substring(idx1, idx2 - idx1)); r.Postage.Add(p); lastidx = idx2; } return(r); }
public static RateResponse FromXml(string xml) { RateResponse r = new RateResponse(); int idx1 = 0; int idx2 = 0; if(xml.Contains("<ZipOrigination>")) { idx1 = xml.IndexOf("<ZipOrigination>") + 17; idx2 = xml.IndexOf("</ZipOrigination>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<ZipDestination>")) { idx1 = xml.IndexOf("<ZipDestination>") + 16; idx2 = xml.IndexOf("</ZipDestination>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Pounds>")) { idx1 = xml.IndexOf("<Pounds>") + 8; idx2 = xml.IndexOf("</Pounds>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Ounces>")) { idx1 = xml.IndexOf("<Ounces>") + 8; idx2 = xml.IndexOf("</Ounces>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Container>")) { idx1 = xml.IndexOf("<Container>") + 11; idx2 = xml.IndexOf("</Container>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Size>")) { idx1 = xml.IndexOf("<Size>") + 6; idx2 = xml.IndexOf("</Size>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } if (xml.Contains("<Zone>")) { idx1 = xml.IndexOf("<Zone>") + 6; idx2 = xml.IndexOf("</Zone>"); r.OriginZip = xml.Substring(idx1, idx2 - idx1); } int lastidx = 0; while (xml.IndexOf("<MailService>", lastidx) > -1) { Postage p = new Postage(); idx1 = xml.IndexOf("<MailService>", lastidx) + 13; idx2 = xml.IndexOf("</MailService>", lastidx + 13); p.MailService = xml.Substring(idx1, idx2 - idx1); idx1 = xml.IndexOf("<Rate>", lastidx) + 6; idx2 = xml.IndexOf("</Rate>", lastidx + 13); p.Amount = Decimal.Parse(xml.Substring(idx1, idx2 - idx1)); r.Postage.Add(p); lastidx = idx2; } return r; }