protected void submit(object sender, EventArgs e) { if (validate()) { String userName = txtUserName.Text; String password = txtPassword.Text; String customerNo = txtCustomerNumber.Text; GetRates getRate = new GetRates(userName, password, customerNo); pricequotes rates = getRate.SendRateRequest(); if (rates == null || rates.pricequote.Count() == 0) { displayNoRstesError(); } else { List <Rate> rateList = new List <Rate>(); foreach (var item in rates.pricequote) { rateList.Add(new Rate(item.servicename, item.servicestandard?.expectedtransittime, String.Format("${0}", item.pricedetails.due))); } rptRatesTable.DataSource = rateList; rptRatesTable.DataBind(); } } }
public async Task <pricequotesPricequote[]> GetRatings() { string url = @"https://ct.soa-gw.canadapost.ca/rs/ship/price"; ApiHandler.ApiClient.DefaultRequestHeaders.Clear(); string authString = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(Username + ":" + Password)); ApiHandler.ApiClient.DefaultRequestHeaders.Add("Authorization", authString); ApiHandler.ApiClient.DefaultRequestHeaders.Add("Accept-Language", "en-CA"); ApiHandler.ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.cpc.ship.rate-v4+xml")); StringContent content = new StringContent(xml, System.Text.Encoding.Default, "application/vnd.cpc.ship.rate-v4+xml"); using (HttpResponseMessage response = await ApiHandler.ApiClient.PostAsync(url, content)) { if (response.IsSuccessStatusCode) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(pricequotes)); System.IO.StreamReader reader = new System.IO.StreamReader(await response.Content.ReadAsStreamAsync()); pricequotes priceQuotes = (pricequotes)xmlSerializer.Deserialize(reader); reader.Close(); return(priceQuotes.pricequote); } else { return(null); } } }
public pricequotes GetRate(string mailedBy) { ServicePointManager.SecurityProtocol = Tls12; // as provided in the email // we can also use AppConfig with config file and use credentials with that var username = "******"; var password = "******"; var url = "https://ct.soa-gw.canadapost.ca/rs/ship/price"; // REST URL (developer) var method = "POST"; // HTTP Method String responseAsString = ".NET Framework " + Environment.Version.ToString() + "\r\n\r\n"; // Create mailingScenario object to contain xml request mailingscenario mailingScenario = new mailingscenario(); mailingScenario.parcelcharacteristics = new mailingscenarioParcelcharacteristics(); mailingScenario.destination = new mailingscenarioDestination(); mailingscenarioDestinationDomestic destDom = new mailingscenarioDestinationDomestic(); mailingScenario.destination.Item = destDom; // Populate mailingScenario object mailingScenario.customernumber = mailedBy; mailingScenario.parcelcharacteristics.weight = 1; mailingScenario.originpostalcode = "K2B8J6"; destDom.postalcode = "J0E1X0"; try { // Serialize mailingScenario object to String StringBuilder mailingScenarioSb = new StringBuilder(); XmlWriter mailingScenarioXml = XmlWriter.Create(mailingScenarioSb); mailingScenarioXml.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); XmlSerializer serializerRequest = new XmlSerializer(typeof(mailingscenario)); serializerRequest.Serialize(mailingScenarioXml, mailingScenario); // Create REST Request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = method; // Set Basic Authentication Header using username and password variables string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(username + ":" + password)); request.Headers = new WebHeaderCollection(); request.Headers.Add("Authorization", auth); // Write Post Data to Request UTF8Encoding encoding = new UTF8Encoding(); byte[] buffer = encoding.GetBytes(mailingScenarioSb.ToString()); request.ContentLength = buffer.Length; request.Headers.Add("Accept-Language", "en-CA"); request.Accept = "application/vnd.cpc.ship.rate-v4+xml"; request.ContentType = "application/vnd.cpc.ship.rate-v4+xml"; Stream PostData = request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); // Execute REST Request HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Deserialize response to pricequotes object XmlSerializer serializer = new XmlSerializer(typeof(pricequotes)); TextReader reader = new StreamReader(response.GetResponseStream()); pricequotes priceQuotes = (pricequotes)serializer.Deserialize(reader); return(priceQuotes); } catch (WebException webEx) { // we can apply loggin here return(null); } catch (Exception ex) { // we can apply loggin here return(null); } }
static void Main(string[] args) { ServicePointManager.SecurityProtocol = Tls12; // Your username, password and customer number are imported from the following file // CPCWS_Rating_DotNet_Samples\REST\rating\user.xml var username = "******"; var password = "******"; var mailedBy = "4008838"; var url = "https://ct.soa-gw.canadapost.ca/rs/ship/price"; // REST URL var method = "POST"; // HTTP Method String responseAsString = ".NET Framework " + Environment.Version.ToString() + "\r\n\r\n"; // Create mailingScenario object to contain xml request mailingscenario mailingScenario = new mailingscenario(); mailingScenario.parcelcharacteristics = new mailingscenarioParcelcharacteristics(); mailingScenario.destination = new mailingscenarioDestination(); mailingscenarioDestinationDomestic destDom = new mailingscenarioDestinationDomestic(); mailingScenario.destination.Item = destDom; // Populate mailingScenario object mailingScenario.customernumber = mailedBy; mailingScenario.parcelcharacteristics.weight = 1; mailingScenario.originpostalcode = "K2B8J6"; destDom.postalcode = "J0E1X0"; try { // Serialize mailingScenario object to String StringBuilder mailingScenarioSb = new StringBuilder(); XmlWriter mailingScenarioXml = XmlWriter.Create(mailingScenarioSb); mailingScenarioXml.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); XmlSerializer serializerRequest = new XmlSerializer(typeof(mailingscenario)); serializerRequest.Serialize(mailingScenarioXml, mailingScenario); // Create REST Request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = method; // Set Basic Authentication Header using username and password variables string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(username + ":" + password)); request.Headers = new WebHeaderCollection(); request.Headers.Add("Authorization", auth); // Write Post Data to Request UTF8Encoding encoding = new UTF8Encoding(); byte[] buffer = encoding.GetBytes(mailingScenarioSb.ToString()); request.ContentLength = buffer.Length; request.Headers.Add("Accept-Language", "en-CA"); request.Accept = "application/vnd.cpc.ship.rate-v4+xml"; request.ContentType = "application/vnd.cpc.ship.rate-v4+xml"; Stream PostData = request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); // Execute REST Request HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Deserialize response to pricequotes object XmlSerializer serializer = new XmlSerializer(typeof(pricequotes)); TextReader reader = new StreamReader(response.GetResponseStream()); pricequotes priceQuotes = (pricequotes)serializer.Deserialize(reader); // Retrieve values from pricequotes object foreach (var priceQuote in priceQuotes.pricequote) { responseAsString += "Service Name: " + priceQuote.servicename + "\r\n"; responseAsString += "Price Name: $" + priceQuote.pricedetails.due + "\r\n\r\n"; } } catch (WebException webEx) { HttpWebResponse response = (HttpWebResponse)webEx.Response; if (response != null) { responseAsString += "HTTP Response Status: " + webEx.Message + "\r\n"; // Retrieve errors from messages object try { // Deserialize xml response to messages object XmlSerializer serializer = new XmlSerializer(typeof(messages)); TextReader reader = new StreamReader(response.GetResponseStream()); messages myMessages = (messages)serializer.Deserialize(reader); if (myMessages.message != null) { foreach (var item in myMessages.message) { responseAsString += "Error Code: " + item.code + "\r\n"; responseAsString += "Error Msg: " + item.description + "\r\n"; } } } catch (Exception ex) { // Misc Exception responseAsString += "ERROR: " + ex.Message; } } else { // Invalid Request responseAsString += "ERROR: " + webEx.Message; } } catch (Exception ex) { // Misc Exception responseAsString += "ERROR: " + ex.Message; } Console.WriteLine(responseAsString); Console.WriteLine("Press any key to continue..."); Console.ReadKey(true); }
private FinalPrice GetRates(SourceDestination sourceDestination) { FinalPrice finalPrice = new FinalPrice(); List <rate> finalRate = new List <rate>(); var url = "https://ct.soa-gw.canadapost.ca/rs/ship/price"; // REST URL var method = "POST"; // HTTP Method String responseAsString = ""; // Create mailingScenario object to contain xml request mailingscenario mailingScenario = new mailingscenario(); mailingScenario.parcelcharacteristics = new mailingscenarioParcelcharacteristics(); mailingScenario.destination = new mailingscenarioDestination(); mailingscenarioDestinationDomestic destDom = new mailingscenarioDestinationDomestic(); mailingScenario.destination.Item = destDom; String modifiedOrigin = Regex.Replace(sourceDestination.originpostalcode, @"\s", ""); String modifiedDestination = Regex.Replace(sourceDestination.destinationpostalcode, @"\s", ""); // Populate mailingScenario object mailingScenario.customernumber = "2004381"; mailingScenario.parcelcharacteristics.weight = sourceDestination.parcelweight; mailingScenario.originpostalcode = modifiedOrigin.Trim(); destDom.postalcode = modifiedDestination.Trim(); try { // Serialize mailingScenario object to String StringBuilder mailingScenarioSb = new StringBuilder(); XmlWriter mailingScenarioXml = XmlWriter.Create(mailingScenarioSb); mailingScenarioXml.WriteProcessingInstruction("xml", "version=\"1.1\" encoding=\"UTF-8\""); XmlSerializer serializerRequest = new XmlSerializer(typeof(mailingscenario)); serializerRequest.Serialize(mailingScenarioXml, mailingScenario); // Create REST Request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = method; // Set Basic Authentication Header using username and password variables string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("6e93d53968881714" + ":" + "0bfa9fcb9853d1f51ee57a")); request.Headers = new WebHeaderCollection(); request.Headers.Add("Authorization", auth); // Write Post Data to Request UTF8Encoding encoding = new UTF8Encoding(); byte[] buffer = encoding.GetBytes(mailingScenarioSb.ToString()); request.ContentLength = buffer.Length; request.Headers.Add("Accept-Language", "en-CA"); request.Accept = "application/vnd.cpc.ship.rate-v4+xml"; request.ContentType = "application/vnd.cpc.ship.rate-v4+xml"; Stream PostData = request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); // Execute REST Request HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode.ToString() == "OK") { // Deserialize response to pricequotes object XmlSerializer serializer = new XmlSerializer(typeof(pricequotes)); TextReader reader = new StreamReader(response.GetResponseStream()); pricequotes priceQuotes = (pricequotes)serializer.Deserialize(reader); // Retrieve values from pricequotes object foreach (var priceQuote in priceQuotes.pricequote) { finalRate.Add(new rate { RegularPrice = priceQuote.pricedetails.due, ServiceType = priceQuote.servicename, TransitDay = Convert.ToInt16(priceQuote.servicestandard.expectedtransittime) }); } finalPrice.RatesList = finalRate; finalPrice.originpostalcode = sourceDestination.originpostalcode; finalPrice.destinationpostalcode = sourceDestination.destinationpostalcode; finalPrice.parcelweight = sourceDestination.parcelweight; } else { XmlSerializer serializer = new XmlSerializer(typeof(messages)); TextReader reader = new StreamReader(response.GetResponseStream()); messages myMessages = (messages)serializer.Deserialize(reader); if (myMessages.message != null) { foreach (var item in myMessages.message) { responseAsString += "Error Code: " + item.code + "\r\n"; responseAsString += "Error Msg: " + item.description + "\r\n"; ViewBag.ErrorMessage = responseAsString; } } } } catch (WebException webEx) { HttpWebResponse response = (HttpWebResponse)webEx.Response; if (response != null) { //responseAsString += "HTTP Response Status: " + webEx.Message + "\r\n"; // Retrieve errors from messages object try { // Deserialize xml response to messages object XmlSerializer serializer = new XmlSerializer(typeof(messages)); TextReader reader = new StreamReader(response.GetResponseStream()); messages myMessages = (messages)serializer.Deserialize(reader); if (myMessages.message != null) { foreach (var item in myMessages.message) { responseAsString += "Error Code: " + item.code + "\r\n"; responseAsString += "Error Msg: " + item.description + "\r\n"; ViewBag.ErrorMessage = responseAsString; } } } catch (Exception ex) { // Misc Exception responseAsString += "ERROR: " + ex.Message; ViewBag.ErrorMessage = responseAsString; } } else { // Invalid Request responseAsString += "ERROR: " + webEx.Message; ViewBag.ErrorMessage = responseAsString; } } catch (Exception ex) { // Misc Exception responseAsString += "ERROR: " + ex.Message; ViewBag.ErrorMessage = responseAsString; } return(finalPrice); }
public DataTable PostAPI(DataTable dt) { var username = "******"; var password = "******"; var url = "https://ct.soa-gw.canadapost.ca/rs/ship/price"; var method = "POST"; String errorString = ""; mailingscenario mailingScenario = new mailingscenario(); mailingScenario.parcelcharacteristics = new mailingscenarioParcelcharacteristics(); mailingScenario.destination = new mailingscenarioDestination(); mailingscenarioDestinationDomestic destDom = new mailingscenarioDestinationDomestic(); mailingScenario.destination.domestic = destDom; mailingScenario.quotetype = "counter"; mailingScenario.parcelcharacteristics.weight = 1; mailingScenario.originpostalcode = "K2B8J6"; destDom.postalcode = "J0E1X0"; try { StringBuilder mailingScenarioSb = new StringBuilder(); XmlWriter mailingScenarioXml = XmlWriter.Create(mailingScenarioSb); mailingScenarioXml.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); XmlSerializer serializerRequest = new XmlSerializer(typeof(mailingscenario)); serializerRequest.Serialize(mailingScenarioXml, mailingScenario); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = method; string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(username + ":" + password)); request.Headers = new WebHeaderCollection(); request.Headers.Add("Authorization", auth); UTF8Encoding encoding = new UTF8Encoding(); byte[] buffer = encoding.GetBytes(mailingScenarioSb.ToString()); request.ContentLength = buffer.Length; request.Headers.Add("Accept-Language", "en-CA"); request.Accept = "application/vnd.cpc.ship.rate-v4+xml"; request.ContentType = "application/vnd.cpc.ship.rate-v4+xml"; Stream PostData = request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); XmlSerializer serializer = new XmlSerializer(typeof(pricequotes)); TextReader reader = new StreamReader(response.GetResponseStream()); pricequotes priceQuotes = (pricequotes)serializer.Deserialize(reader); foreach (var priceQuote in priceQuotes.pricequote) { dt.Rows.Add(priceQuote.servicename, priceQuote.servicestandard.expectedtransittime, "$" + priceQuote.pricedetails.due); } } catch (WebException webEx) { HttpWebResponse response = (HttpWebResponse)webEx.Response; if (response != null) { errorString += "HTTP Response Status: " + webEx.Message + "\r\n"; try { errorString += "ERROR!!!"; } catch (Exception ex) { errorString += "ERROR: " + ex.Message; } } else { errorString += "ERROR: " + webEx.Message; } } catch (Exception ex) { // Misc Exception errorString += "ERROR: " + ex.Message; } errStr.Text = errorString; return(dt); }
public double GetRates(string postalCode, ShippingType shippingType) { ServicePointManager.SecurityProtocol = Tls12; var username = "******"; //ConfigurationSettings.AppSettings["username"]; var password = "******"; //ConfigurationSettings.AppSettings["password"]; var mailedBy = "0008948796"; //ConfigurationSettings.AppSettings["customerNumber"]; var url = "https://ct.soa-gw.canadapost.ca/rs/ship/price"; // REST URL var method = "POST"; // HTTP Method // Create mailingScenario object to contain xml request mailingscenario mailingScenario = new mailingscenario { parcelcharacteristics = new mailingscenarioParcelcharacteristics(), destination = new mailingscenarioDestination() }; // remove dis shit string responseAsString = ""; // Check Shipping Type switch (shippingType) { case ShippingType.Canada: mailingScenario.destination.Item = new mailingscenarioDestinationDomestic() { postalcode = postalCode }; break; case ShippingType.USA: mailingScenario.destination.Item = new mailingscenarioDestinationUnitedstates() { zipcode = postalCode }; break; case ShippingType.International: mailingScenario.destination.Item = new mailingscenarioDestinationInternational() { postalcode = postalCode }; break; default: break; } // Populate mailingScenario object mailingScenario.customernumber = mailedBy; mailingScenario.parcelcharacteristics.weight = 1; mailingScenario.parcelcharacteristics.dimensions = new mailingscenarioParcelcharacteristicsDimensions { length = 24, width = 4, height = 24 }; mailingScenario.originpostalcode = "postal code"; // Shipping Original Postal Code try { // Serialize mailingScenario object to String StringBuilder mailingScenarioSb = new StringBuilder(); XmlWriter mailingScenarioXml = XmlWriter.Create(mailingScenarioSb); mailingScenarioXml.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); XmlSerializer serializerRequest = new XmlSerializer(typeof(mailingscenario)); serializerRequest.Serialize(mailingScenarioXml, mailingScenario); // Create REST Request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = method; // Set Basic Authentication Header using username and password variables string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(username + ":" + password)); request.Headers = new WebHeaderCollection(); request.Headers.Add("Authorization", auth); // Write Post Data to Request UTF8Encoding encoding = new UTF8Encoding(); byte[] buffer = encoding.GetBytes(mailingScenarioSb.ToString()); request.ContentLength = buffer.Length; request.Headers.Add("Accept-Language", "en-CA"); request.Accept = "application/vnd.cpc.ship.rate-v4+xml"; request.ContentType = "application/vnd.cpc.ship.rate-v4+xml"; Stream PostData = request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); // Execute REST Request HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Deserialize response to pricequotes object XmlSerializer serializer = new XmlSerializer(typeof(pricequotes)); TextReader reader = new StreamReader(response.GetResponseStream()); pricequotes priceQuotes = (pricequotes)serializer.Deserialize(reader); return((double)priceQuotes.pricequote.First().pricedetails.due); // Retrieve values from pricequotes object foreach (var priceQuote in priceQuotes.pricequote) { responseAsString += "Service Name: " + priceQuote.servicename + "\r\n"; responseAsString += "Price Name: $" + priceQuote.pricedetails.due + "\r\n\r\n"; } } catch (WebException webEx) { return(0); // 0 = error // TODO: Log these errors HttpWebResponse response = (HttpWebResponse)webEx.Response; if (response != null) { responseAsString += "HTTP Response Status: " + webEx.Message + "\r\n"; // Retrieve errors from messages object try { // Deserialize xml response to messages object XmlSerializer serializer = new XmlSerializer(typeof(messages)); TextReader reader = new StreamReader(response.GetResponseStream()); messages myMessages = (messages)serializer.Deserialize(reader); if (myMessages.message != null) { foreach (var item in myMessages.message) { responseAsString += "Error Code: " + item.code + "\r\n"; responseAsString += "Error Msg: " + item.description + "\r\n"; } } } catch (Exception ex) { // Misc Exception responseAsString += "ERROR: " + ex.Message; } } else { // Invalid Request responseAsString += "ERROR: " + webEx.Message; } } catch (Exception ex) { return(0); // 0 = error // Misc Exception responseAsString += "ERROR: " + ex.Message; } return(0); // TODO: should never get here, fix this }