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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 7
0
        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
        }