예제 #1
0
        public async Task <Rate> GetRate(TaxJar taxJar, string zip)
        {
            //setting the api auth values

            RateResponse rateResponse = new RateResponse();

            if (string.IsNullOrEmpty(zip))
            {
                rateResponse.Rate = null;
            }
            else
            {
                try
                {
                    await Task.Run(async() =>
                    {
                        rateResponse = await taxJar.GetRate(zip);
                    });
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Write("Error {0}", ex.Message);
                }
            }
            return(rateResponse.Rate);
        }
        private RateResponse CallUPSRateRequest(string scode, int Qty, int nrBoxes, int itemsInLastBox, string fullBoxWeight, int valuePerFullBox, int valuePerPartialBox, string partialBoxWeight, inv_detl details, decimal unitPrice, RateService upsService)
        {
            RateResponse rateResponse = new RateResponse();

            try
            {
                RateRequest rateRequest = new RateRequest();
                AddCustomerClassification(rateRequest);
                AddUpsSecurity(upsService);
                UPS_Shipping_Rate.UPSRateService.RequestType request = new RequestType();
                String[] requestOption = { "Rate" };
                request.RequestOption = requestOption;
                rateRequest.Request   = request;
                ShipmentType shipment = new ShipmentType();
                AddShipper(shipment);
                AddShipFromAddress(shipment);
                AddShipToAddress(shipment);
                UPS_Shipping_Rate.UPSRateService.CodeDescriptionType service = new UPS_Shipping_Rate.UPSRateService.CodeDescriptionType();
                service.Code     = scode.ToString();
                shipment.Service = service;
                ShipmentRatingOptionsType optype = new ShipmentRatingOptionsType();
                optype.NegotiatedRatesIndicator = string.Empty;
                shipment.ShipmentRatingOptions  = optype;
                AddPackageArray(nrBoxes, itemsInLastBox, fullBoxWeight, partialBoxWeight, valuePerFullBox, valuePerPartialBox, details, shipment);
                AddInvoiceTotalType(Qty, unitPrice, shipment);
                rateRequest.Shipment = shipment;
                //  ServicePointManager.ServerCertificateValidationCallback = ValidateRemoteCertificate;
                rateResponse = upsService.ProcessRate(rateRequest);
            }
            catch (Exception ex)
            {
            }
            return(rateResponse);
        }
예제 #3
0
        public JsonResult GetShop(RateRequestViewModel model, string requestUrl = _rateRequestUri)
        {
            try
            {
                Shipper shipper = new Shipper
                {
                    Name          = model.RateRequest.Shipment.ShipFrom.Name,
                    ShipperNumber = "132R1V",
                    Address       = new ShipperAddress
                    {
                        AddressLine       = model.RateRequest.Shipment.ShipFrom.Address.AddressLine,
                        City              = model.RateRequest.Shipment.ShipFrom.Address.City,
                        CountryCode       = model.RateRequest.Shipment.ShipFrom.Address.CountryCode,
                        StateProvinceCode = model.RateRequest.Shipment.ShipFrom.Address.StateProvinceCode,
                        PostalCode        = model.RateRequest.Shipment.ShipFrom.Address.PostalCode
                    }
                };

                model.RateRequest.Shipment.Shipper = shipper;

                model.RateRequest.Shipment.Shipper.Address.PostalCode  = model.RateRequest.Shipment.Shipper.Address.PostalCode.Replace(" ", String.Empty);
                model.RateRequest.Shipment.ShipFrom.Address.PostalCode = model.RateRequest.Shipment.ShipFrom.Address.PostalCode.Replace(" ", String.Empty);
                model.RateRequest.Shipment.ShipTo.Address.PostalCode   = model.RateRequest.Shipment.ShipTo.Address.PostalCode.Replace(" ", String.Empty);

                HttpContent  httContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8);
                RateResponse resData    = _ratingService.GetRate(requestUrl, httContent);

                return(Json(new { success = true, resData }));
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, errorMessage = ex.ToString() }));
            }
        }
예제 #4
0
        public RateResponse CallUPSRateRequest(string serviceCode, int Qty, int nrBoxes, int itemsInLastBox, string fullBoxWeight, int valuePerFullBox, int valuePerPartialBox, string partialBoxWeight, inv_detl details, string packagingTypeCode, string currencyCode, decimal unitPrice, bool isResidentialAddress)//, out string requestXML)
        {
            var upsService   = new RateService();
            var rateResponse = new RateResponse();
            var rateRequest  = new RateRequest();

            AddCustomerClassification(rateRequest);
            AddUpsSecurity(upsService);
            var request = new RequestType();

            String[] requestOption = { "Rate" };
            request.RequestOption = requestOption; //this can be Rate or Shop
            rateRequest.Request   = request;
            var shipment = new UPSRateService.ShipmentType();

            AddShipper(shipment);
            AddShipFromAddress(shipment);
            AddShipToAddress(shipment, isResidentialAddress);
            var service = new CodeDescriptionType();

            service.Code     = serviceCode;
            shipment.Service = service;
            var optype = new UPSRateService.ShipmentRatingOptionsType();

            optype.NegotiatedRatesIndicator = string.Empty;
            shipment.ShipmentRatingOptions  = optype;
            AddPackageArray(nrBoxes, itemsInLastBox, fullBoxWeight, partialBoxWeight, valuePerFullBox, valuePerPartialBox, details, packagingTypeCode, currencyCode, shipment);
            AddInvoiceTotalType(Qty, unitPrice, shipment);
            rateRequest.Shipment = shipment;
            rateResponse         = upsService.ProcessRate(rateRequest);
            return(rateResponse);
        }
예제 #5
0
파일: UPS.cs 프로젝트: olegp306/ToyCorp2017
        public List <ShippingOption> GetShippingOptions()
        {
            var shippingOptions = new List <ShippingOption>();

            try
            {
                var          service      = new RateService();
                RateRequest  request      = CreateRateRequest(service);
                RateResponse rateResponse = service.ProcessRate(request);
                shippingOptions = ParseAnswer(rateResponse);
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                Debug.LogError(ex, false);
            }
            catch (System.ServiceModel.CommunicationException ex)
            {
                Debug.LogError(ex, false);
            }
            catch (Exception ex)
            {
                Debug.LogError(ex);
            }
            return(shippingOptions);
        }
        public async Task <RateResponse> GetRatesAsync(string requestString, bool isDomestic = true)
        {
            var apiKey = isDomestic ? RATES_API_KEY_DOMESTIC : RATES_API_KEY_INTERNATIONAL;

            var responseStream = await _httpClient.GetStreamAsync($"?API={apiKey}&XML={requestString}");

            return(await RateResponse.LoadAsync(responseStream, isDomestic));
        }
예제 #7
0
        public static IEnumerable <ShippingRule> ToModel(this RateResponse response, Currency currency)
        {
            response.ValidateResponse();

            var rules = new List <ShippingRule>();

            var order = response.Order[0];

            foreach (var quote in order.Quotes)
            {
                var method = new ShippingRule
                {
                    id       = quote.method,
                    name     = quote.Service,
                    cost     = quote.Cost.value.ToString(),
                    currency = quote.Cost.currency
                };
                if (currency.code != "USD")
                {
                    method.cost =
                        CurrencyConverter.Instance.Convert("USD", currency.code, quote.Cost.value).ToString("n" +
                                                                                                            currency.
                                                                                                            decimalCount);
                }

                var min      = quote.DeliveryEstimate.Minimum.value;
                var max      = quote.DeliveryEstimate.Maximum.value;
                var timeunit = quote.DeliveryEstimate.Minimum.units;
                if (timeunit == "days")
                {
                    timeunit = "day";
                }
                else
                {
                    Syslog.Write(string.Format("Unknown timeunit: {0}", timeunit));
                }

                if (min == max)
                {
                    if (min == 1)
                    {
                        method.deliveryEstimate = string.Format("1 {0}", timeunit.Substring(0, timeunit.Length));
                    }
                    else
                    {
                        method.deliveryEstimate = string.Format("{0} {1}s", min, timeunit);
                    }
                }
                else
                {
                    method.deliveryEstimate = string.Format("{0} to {1} {2}s", min, max, timeunit);
                }

                rules.Add(method);
            }
            return(rules);
        }
예제 #8
0
        public IActionResult RateResults()
        {
            ViewBag.Logout = "Logout";
            string       serializedRates = HttpContext.Session.GetString("rates");
            RateResponse rateResults     = JsonConvert.DeserializeObject <RateResponse>(serializedRates);

            ViewBag.Rates = from r in rateResults.Rates orderby r.DeliveryDays select r;
            return(View());
        }
예제 #9
0
        private void MapShipmentServiceDescription(RateResponse resData)
        {
            List <ShipmentService> listShipmentService = new List <ShipmentService>();

            LoadServiceCodes(listShipmentService);

            foreach (var item in resData.RatedShipment)
            {
                item.Service.Description = listShipmentService.Where(m => String.Equals(m.ServiceCode, item.Service?.Code)).FirstOrDefault()?.ServiceDescription;
            }
        }
        public override void OnException(HttpActionExecutedContext context)
        {
            var request = context.ActionContext.Request;

            var response = new  RateResponse
            {
                returncode = 500,                      //temp assigning error code need to change 1 use for success
                err        = context.Exception.Message //just sending message,details exception message may require other property
            };

            context.Response = request.CreateResponse(HttpStatusCode.BadRequest, response);
        }
예제 #11
0
        public static string GetShippingServiceName(this RateResponse response, string shippingMethod)
        {
            var order = response.Order[0];
            var quote = order.Quotes.SingleOrDefault(x => x.method == shippingMethod);

            if (quote == null)
            {
                throw new Exception("Unable to find quote for method " + shippingMethod);
            }

            return(quote.Service);
        }
예제 #12
0
        private void FormatRateResponse(JObject resObj, RateResponse resData, string requestUrl)
        {
            if (resObj != null && !String.IsNullOrEmpty(resObj.ToString()))
            {
                if (resObj.ContainsKey(typeof(RateResponse).Name))
                {
                    //Assign Response
                    resData.Response = resObj[typeof(RateResponse).Name][typeof(Response).Name].ToObject <Response>();
                    //End Assign Response

                    //Add Alert
                    var responseObj = resObj[typeof(RateResponse).Name][typeof(Response).Name].ToObject <JObject>();
                    if (responseObj.ContainsKey(typeof(Alert).Name))
                    {
                        resData.Response.ListAlert = new List <Alert>();
                        JToken alerts = responseObj[typeof(Alert).Name];
                        if (alerts.ToString().Contains("["))
                        {
                            resData.Response.ListAlert.AddRange(alerts.ToObject <List <Alert> >());
                        }
                        else
                        {
                            resData.Response.ListAlert.Add(alerts.ToObject <Alert>());
                        }
                    }
                    //End Add Alert

                    RatedShipment ratedShipment;

                    if (requestUrl.Contains(AppSettings.UpsConfiguration.UpsRatingType.Shop)) //Shop Type
                    {
                        //Add RatedShipment
                        foreach (JObject item in resObj[typeof(RateResponse).Name][typeof(RatedShipment).Name].ToObject <List <JObject> >())
                        {
                            ratedShipment = CreateRatedShipment(item);
                            resData.RatedShipment.Add(ratedShipment);
                        }
                        //End Add RatedShipment
                    }

                    if (requestUrl.Contains(AppSettings.UpsConfiguration.UpsRatingType.Rate)) //Rate Type
                    {
                        //Add RatedShipment
                        ratedShipment = CreateRatedShipment(resObj[typeof(RateResponse).Name][typeof(RatedShipment).Name].ToObject <JObject>());
                        resData.RatedShipment.Add(ratedShipment);
                        //End Add RatedShipment
                    }
                }
            }
        }
예제 #13
0
        public static Cost GetCost(this RateResponse response, string shippingMethod)
        {
            response.ValidateResponse();

            var order = response.Order[0];
            var quote = order.Quotes.SingleOrDefault(x => x.method == shippingMethod);

            if (quote == null)
            {
                Syslog.Write("Unable to find quote for method " + shippingMethod);
                return(null);
            }

            return(quote.Cost);
        }
예제 #14
0
        public void GetRate_EmptyZipTest()
        {
            TaxJar       taxJar       = new TaxJar();
            RateResponse rateResponse = new RateResponse();

            string zip = "";

            var taxService = new TaxService.TaxService();

            Task.Run(async() =>
            {
                rateResponse.Rate = await taxService.GetRate(taxJar, zip);
            });

            Assert.IsNull(rateResponse.Rate);
        }
예제 #15
0
        private async Task <IEnumerable <RateResponse> > PerformRequest(string requestUrl)
        {
            var client = _httpClientFactory.GetRateHttpClient(GetType());

            using var response = await client.GetAsync(requestUrl);

            if (!response.IsSuccessStatusCode)
            {
                return(Enumerable.Empty <RateResponse>());
            }

            await using var stream = await response.Content.ReadAsStreamAsync();

            if (stream.Length == 0)
            {
                return(Enumerable.Empty <RateResponse>());
            }

            using var reader = XmlReader.Create(stream, new XmlReaderSettings
            {
                Async = true
            });
            RateResponse current = null;
            string       from    = null;
            string       to      = null;

            while (await reader.ReadAsync())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.Name.Equals("Valute"))
                    {
                        current = new RateResponse();
                    }

                    if (reader.Name.Equals("CharCode"))
                    {
                        current.To = Currency.GetCurrency(reader.Value);
                    }

                    break;
                }
            }

            return(new List <RateResponse>());
        }
예제 #16
0
        public RateResponse GetRate(RequestModel model)
        {
            if (model == null)
            {
                return(new RateResponse()
                {
                    err = "Invalid request", returncode = 400, timestamp = DateTime.UtcNow.Ticks
                });
            }
            decimal amount = model.amount;

            if (amount == 0)
            {
                amount = 1;
            }
            string        code         = model.currencyCode.ToUpper();
            List <string> fromCurrancy = new List <string> {
                "USD", "GBP", "AUD", "EUR", "CAD", "SGD"
            };

            if (code == string.Empty || !fromCurrancy.Contains(code))
            {
                code = "USD";
            }
            var ratePublisherService = Bootstrapper.Locate <IRatePublisherService>();
            var rate = ratePublisherService.GetRate(code);

            if (rate == null)
            {
                return(new RateResponse()
                {
                    err = "No data found", returncode = 404, timestamp = DateTime.UtcNow.Ticks
                });
            }
            var result = new RateResponse();

            result.SourceCurrency = rate.FromCurrancy;
            result.ConversionRate = rate.ToAmount;
            result.Amount         = amount;
            result.Total          = amount * rate.ToAmount;
            result.returncode     = 1;
            result.err            = "success";
            result.timestamp      = DateTime.UtcNow.Ticks;

            return(result);
        }
예제 #17
0
 public IActionResult SaveRate(Dictionary <string, string> data)
 {
     if (data != null)
     {
         string       serializedRates = HttpContext.Session.GetString("rates");
         RateResponse rateResponse    = JsonConvert.DeserializeObject <RateResponse>(serializedRates);
         foreach (Rate rate in rateResponse.Rates)
         {
             if (rate.RateId == data["rateId"])
             {
                 DbConnector.Execute($"INSERT INTO rate(rateRequestId, shipmentId, rateId, userId, carrierId, shippingAmount, deliveryDays, serviceType, createdAt, updatedAt) VALUES('{rateResponse.RateRequestId}', '{rateResponse.ShipmentId}', '{rate.RateId}', '{Request.Cookies["userCookie"]}', '{rate.CarrierId}', '{rate.ShippingAmount.Amount}', '{rate.DeliveryDays}', '{rate.ServiceType}', '{DateTime.Now.ToString()}', '{DateTime.Now.ToString()}')");
                 return(RedirectToAction("RateResults"));
             }
         }
     }
     return(RedirectToAction("RateResults"));
 }
예제 #18
0
        public void GetRate_SantaMonicaZipTest()
        {
            TaxJar       taxJar       = new TaxJar();
            RateResponse rateResponse = new RateResponse();

            //zip of city of Santa Monica
            string zip = "90404";

            var taxService = new TaxService.TaxService();

            Task.Run(async() =>
            {
                rateResponse.Rate = await taxService.GetRate(taxJar, zip);
            });

            Assert.IsTrue(rateResponse.Rate.City.Equals("SANTA MONICA"));
        }
        private async Task <AverageRateResponse> GetAverageResponse(Pair pair, DateTime dateTimeUtc)
        {
            dateTimeUtc = dateTimeUtc.ToUniversalTime();

            var rates = new RateResponse[]
            {
                await GetRateResponse(pair, Market.Lykke, dateTimeUtc),
                await GetRateResponse(pair, Market.Kraken, dateTimeUtc),
                await GetRateResponse(pair, Market.Bitfinex, dateTimeUtc)
            };

            // remove rates that do not have rate and are older by 10 minutes
            var validRates = rates
                             .Where(f => f.Rate.HasValue && f.CreatedUtc.HasValue && dateTimeUtc.Subtract(f.CreatedUtc.Value).Minutes < 10)
                             .OrderBy(f => f.Rate)
                             .ToList();

            if (!validRates.Any())
            {
                return(null);
            }

            if (validRates.Count() >= 3)
            {
                // remove more distant rate
                var firtDiff = validRates[1].Rate - validRates[0].Rate;
                var lastDiff = validRates[validRates.Count() - 1].Rate - validRates[validRates.Count() - 2].Rate;

                if (firtDiff > lastDiff)
                {
                    validRates.Remove(validRates.First());
                }
                else
                {
                    validRates.Remove(validRates.Last());
                }
            }

            return(new AverageRateResponse
            {
                Pair = Enum.GetName(typeof(Pair), pair),
                AverageRate = validRates.Average(f => f.Rate),
                Rates = rates
            });
        }
예제 #20
0
        public async Task <IActionResult> CheckTaxRate(Rate rate)
        {
            RateResponse rateResponse = new RateResponse();

            using (var httpClient = new HttpClient())
            {
                string url = string.Format("https://api.taxjar.com/v2/rates/{0}", rate.Zip);
                httpClient.DefaultRequestHeaders.Authorization
                    = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "2ddb34bc5852bd9acf8ed22e95076484");
                using (var response = await httpClient.GetAsync(url))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    rateResponse = JsonConvert.DeserializeObject <RateResponse>(apiResponse);
                }
            }
            return(View("TaxResponse", rateResponse));
        }
예제 #21
0
        public IHttpActionResult Post([FromBody] RateRequest rateReq)
        {
            RateResponse response = new RateResponse();

            //use this link to compare api result  https://currency-api.appspot.com/
            if (!ModelState.IsValid)
            {
                throw new Exception("Parameter validation failed");
            }

            //this will going to replace when i will do custome model binder to assign default value
            if (rateReq == null)
            {
                rateReq = new RateRequest {
                    Amount = 1, CurrencyCode = "USD"
                }
            }
            ;                                                                   //default if null

            //TODO : Dependency Injection for web api As it Is Important for Test Driven Environment
            //temporary I resolve with AutoFac Container
            var currencyService = EngineContext.Current.ContainerManager.Resolve <ICurrencyService>();
            var sourceCurrency  = currencyService.GetCurrencyByCode(rateReq.CurrencyCode);


            //calcultaing rate for given amount
            var rate = currencyService.ConvertToPrimaryExchangeRateCurrency(rateReq.Amount, sourceCurrency);



            //creating valid rate conversion response
            response.ConversionRate = Math.Round((1.000000m / sourceCurrency.Rate), 2);
            response.Total          = Math.Round(rate, 2);
            response.returncode     = ApiMessages.SuccessCode;
            response.SourceCurrency = sourceCurrency.CurrencyCode;
            response.err            = ApiMessages.SuccessMessage;
            response.TimeStamp      = (int)sourceCurrency.TimeStamp;
            response.Amount         = rateReq.Amount;

            return(Ok(response));
        }
    }
예제 #22
0
        public RateResponse GetRate(string requestUrl, HttpContent httpContent)
        {
            var resObj = _upsApiService.GetResultFromUpsApi(requestUrl, httpContent);

            RateResponse resData = new RateResponse()
            {
                RatedShipment = new List <RatedShipment>()
            };

            if (resObj.IsSuccessStatusCode)
            {
                FormatRateResponse(resObj.JObject, resData, requestUrl);
                MapShipmentServiceDescription(resData);
            }
            else
            {
            }

            return(resData);
        }
예제 #23
0
        public async void GetRateUpdates(RateRequest rateRequest)
        {
            ClientWebSocket = new ClientWebSocket();
            try
            {
                await ClientWebSocket.ConnectAsync(new Uri($"wss://10.0.2.2:7001/ratenotify"), CancellationToken.None);

                await SendData(
                    new RateRequest(
                        new List <ExchangeRate> {
                    new ExchangeRate(Currency.USD),
                    new ExchangeRate(Currency.ZAR)
                }));

                _timer.Start();

                var readBuffer = new ArraySegment <byte>(new byte[8192]);
                while (ClientWebSocket.State == WebSocketState.Open)
                {
                    RateResponse rateUpdate = null;

                    var result = await ClientWebSocket.ReceiveAsync(readBuffer, CancellationToken.None);

                    var str = Encoding.Default.GetString(readBuffer.Array, readBuffer.Offset, result.Count);
                    rateUpdate = JsonConvert.DeserializeObject <RateResponse>(str);
                    if (rateUpdate != null)
                    {
                        RateUpdateReceived?.Invoke(this, rateUpdate);
                    }
                }
            }
            catch (TaskCanceledException)
            {
                Debug.Write("WebSocket closed");
            }
            catch (Exception ex)
            {
                Debug.Write(ex.Message);
            }
        }
예제 #24
0
        public RateResponse GetRate(Package package)
        {
            var 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>";

            var lb        = package.WeightInOunces / 16;
            var oz        = package.WeightInOunces % 16;
            var container = package.PackageType.ToString().Replace("_", " ");

            if (container == "None")
            {
                url = url.Replace("<Container>{6}</Container>", "");
            }

            var fromZip = package.FromAddress.Zip;

            if (!string.IsNullOrEmpty(package.OriginZipcode))
            {
                fromZip = package.OriginZipcode;
            }


            url = GetURL() + url;
            url = string.Format(url, _userid, package.ServiceType.ToString(), fromZip, package.ToAddress.Zip, lb,
                                oz, container, package.PackageSize.ToString().Replace("_", " "));
            var xml = _uspsApiClient.DownloadString(url);

            if (xml.Contains("<Error>"))
            {
                var idx1    = xml.IndexOf("<Description>") + 13;
                var idx2    = xml.IndexOf("</Description>");
                var l       = xml.Length;
                var errDesc = xml.Substring(idx1, idx2 - idx1);
                throw new ErrorUspsApiResponseException(null);
            }

            return(RateResponse.FromXml(xml));
        }
예제 #25
0
파일: UPS.cs 프로젝트: olegp306/ToyCorp2017
        private List <ShippingOption> ParseAnswer(RateResponse rateResponse)
        {
            var res             = new List <ShippingOption>();
            var enabledServices = EnabledService;

            foreach (var rateDetail in rateResponse.RatedShipment)
            {
                var shippingOption = new ShippingOption();
                if (!String.IsNullOrEmpty(enabledServices) && !enabledServices.Contains(GetServiceName(rateDetail.Service.Code)))
                {
                    continue;
                }

                string serviceName = GetServiceName(rateDetail.Service.Code);
                shippingOption.Name = serviceName;

                var shippingRate = (Rate > 0) ? rateDetail.TotalCharges.MonetaryValue.TryParseFloat() * Rate + Extracharge
                                              : rateDetail.TotalCharges.MonetaryValue.TryParseFloat() + Extracharge;
                shippingOption.Rate = shippingRate;
                res.Add(shippingOption);
            }
            return(res);
        }
예제 #26
0
        public IMC.API.DTO.Rate GetTaxRateByLocation(APIRequestData apiRequest, int zipCode)
        {
            APIResponseData apiResponse = new APIResponseData();
            string          urlData     = string.Empty;

            apiRequest.VendorName      = "Taxjar";
            apiRequest.HttpRequestType = HttpRequestTypeEnum.GET;
            apiRequest.PostURL         = apiRequest.BaseURL + "rates/" + zipCode;

            //Execuring HTTP GET Action to make API call to Vendor API
            ApiHelper.ExecuteHttpAction(apiRequest, out apiResponse);

            RateResponse rateResp = JsonConvert.DeserializeObject <RateResponse>(apiResponse.ResponseContent);

            var toDTOMapperConfig = new MapperConfiguration(cfg => cfg.CreateMap <RateResponseAttributes, IMC.API.DTO.Rate>());
            var toDTOMapper       = toDTOMapperConfig.CreateMapper();

            IMC.API.DTO.Rate rate = toDTOMapper.Map <IMC.API.DTO.Rate>(rateResp.Rate);

            toDTOMapperConfig = null;
            toDTOMapper       = null;

            return(rate);
        }
예제 #27
0
        public async Task <RateResponse> GetRate(string zip)
        {
            RateResponse rateResponse = new RateResponse();
            string       url          = this.apiUrl + "rates/" + zip;

            try
            {
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.apiKey);
                    HttpResponseMessage httpResponse = await client.GetAsync(apiUrl);

                    if (httpResponse.IsSuccessStatusCode)
                    {
                        rateResponse = JsonConvert.DeserializeObject <RateResponse>(httpResponse.Content.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write("Error {0}", ex.Message);
            }
            return(rateResponse);
        }
예제 #28
0
파일: UPS.cs 프로젝트: AzarinSergey/learn
        private List<ShippingOption> ParseAnswer(RateResponse rateResponse)
        {
            var res = new List<ShippingOption>();
            var enabledServices = EnabledService;
            foreach (var rateDetail in rateResponse.RatedShipment)
            {
                var shippingOption = new ShippingOption();
                if (!String.IsNullOrEmpty(enabledServices) && !enabledServices.Contains(GetServiceName(rateDetail.Service.Code)))
                {
                    continue;
                }

                string serviceName = GetServiceName(rateDetail.Service.Code);
                shippingOption.Name = serviceName;

                var shippingRate = (Rate > 0) ? rateDetail.TotalCharges.MonetaryValue.TryParseFloat() * Rate + Extracharge
                                              : rateDetail.TotalCharges.MonetaryValue.TryParseFloat() + Extracharge;
                shippingOption.Rate = shippingRate;
                res.Add(shippingOption);
            }
            return res;
        }
예제 #29
0
        public static double UPSEstimatedRate(Person shipto, ProductCollection cart)
        {
            double temp = 0.0;  //return 0.0 if something is wrong

            try
            {
                RateService rate        = new RateService();
                RateRequest rateRequest = new RateRequest();
                UPSSecurity upss        = new UPSSecurity();
                UPSSecurityServiceAccessToken upssSvcAccessToken = new UPSSecurityServiceAccessToken();
                upssSvcAccessToken.AccessLicenseNumber = ConfigurationManager.AppSettings["UPSAccessLicenseNumber"];
                upss.ServiceAccessToken = upssSvcAccessToken;
                UPSSecurityUsernameToken upssUsrNameToken = new UPSSecurityUsernameToken();
                upssUsrNameToken.Username = ConfigurationManager.AppSettings["UPSUserName"];
                upssUsrNameToken.Password = ConfigurationManager.AppSettings["UPSPassword"];
                upss.UsernameToken        = upssUsrNameToken;
                rate.UPSSecurityValue     = upss;
                RequestType request       = new RequestType();
                String[]    requestOption = { "Rate" };
                request.RequestOption = requestOption;
                rateRequest.Request   = request;
                ShipmentType shipment = new ShipmentType();
                ShipperType  shipper  = new ShipperType();
                shipper.ShipperNumber = "54A177";   //***EAC Intentionally hard-coded.  DO NOT REPLACE WITH ONE IN WEB.CONFIG!

                UPSRateService.AddressType shipperAddress = new UPSRateService.AddressType();
                String[] addressLine = { ConfigurationManager.AppSettings["LMStreet"] };
                shipperAddress.AddressLine       = addressLine;
                shipperAddress.City              = ConfigurationManager.AppSettings["LMCity"];
                shipperAddress.StateProvinceCode = ConfigurationManager.AppSettings["LMState"];
                shipperAddress.PostalCode        = ConfigurationManager.AppSettings["LMZip"];
                shipperAddress.CountryCode       = ConfigurationManager.AppSettings["LMCountry"];
                shipperAddress.AddressLine       = addressLine;
                shipper.Address  = shipperAddress;
                shipment.Shipper = shipper;

                ShipFromType shipFrom = new ShipFromType();
                //UPSRateService.AddressType shipFromAddress = new UPSRateService.AddressType();
                //shipFromAddress.AddressLine = shipperAddress.AddressLine;
                //shipFromAddress.City = shipperAddress.City;
                //shipFromAddress.StateProvinceCode = shipperAddress.StateProvinceCode;
                //shipFromAddress.PostalCode = shipperAddress.PostalCode;
                //shipFromAddress.CountryCode = shipperAddress.CountryCode;
                shipFrom.Address  = shipperAddress;
                shipment.ShipFrom = shipFrom;


                ShipToType        shipTo        = new ShipToType();
                ShipToAddressType shipToAddress = new ShipToAddressType();
                String[]          addressLine1  = { shipto.Addr1 };
                shipToAddress.AddressLine       = addressLine1;
                shipToAddress.City              = shipto.City;
                shipToAddress.StateProvinceCode = shipto.State;
                shipToAddress.PostalCode        = shipto.Zip5;
                shipToAddress.CountryCode       = shipto.Country;
                shipTo.Address  = shipToAddress;
                shipment.ShipTo = shipTo;


                CodeDescriptionType service = new CodeDescriptionType();
                //Below code uses dummy date for reference. Please udpate as required.
                //service.Code = "03"; //01:nextdayair 02;2ndday 03:ground 12:3dayselect
                service.Code     = DAL2.DAL.GetShippingMethodValuebyID(cart.ShipMethod);
                shipment.Service = service;
                PackageType       package       = new PackageType();
                PackageWeightType packageWeight = new PackageWeightType();
                packageWeight.Weight = cart.TotalWeight.ToString();
                CodeDescriptionType uom = new CodeDescriptionType();
                uom.Code        = "LBS";
                uom.Description = "pounds";
                packageWeight.UnitOfMeasurement = uom;
                package.PackageWeight           = packageWeight;
                CodeDescriptionType packType = new CodeDescriptionType();
                packType.Code         = "02"; //02:pkgcustomer
                package.PackagingType = packType;
                PackageType[] pkgArray = { package };
                shipment.Package     = pkgArray;
                rateRequest.Shipment = shipment;
                System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

                RateResponse rateResponse = rate.ProcessRate(rateRequest);
                UPSNoelWrite("The transaction was a " + rateResponse.Response.ResponseStatus.Description);
                UPSNoelWrite("Total Shipment Charges " + rateResponse.RatedShipment[0].TotalCharges.MonetaryValue + rateResponse.RatedShipment[0].TotalCharges.CurrencyCode);
                temp = Double.Parse(rateResponse.RatedShipment[0].TotalCharges.MonetaryValue);
            }
            catch (Exception ex)
            {
                temp = 0.0;
            }
            return(temp);
            //catch (System.Web.Services.Protocols.SoapException ex)
            //{
            //    UPSNoelWrite("");
            //    UPSNoelWrite("---------Rate Web Service returns error----------------");
            //    UPSNoelWrite("---------\"Hard\" is user error \"Transient\" is system error----------------");
            //    UPSNoelWrite("SoapException Message= " + ex.Message);
            //    UPSNoelWrite("");
            //    UPSNoelWrite("SoapException Category:Code:Message= " + ex.Detail.LastChild.InnerText);
            //    UPSNoelWrite("");
            //    UPSNoelWrite("SoapException XML String for all= " + ex.Detail.LastChild.OuterXml);
            //    UPSNoelWrite("");
            //    UPSNoelWrite("SoapException StackTrace= " + ex.StackTrace);
            //    UPSNoelWrite("-------------------------");
            //    UPSNoelWrite("");
            //}
            //catch (System.ServiceModel.CommunicationException ex)
            //{
            //    UPSNoelWrite("");
            //    UPSNoelWrite("--------------------");
            //    UPSNoelWrite("CommunicationException= " + ex.Message);
            //    UPSNoelWrite("CommunicationException-StackTrace= " + ex.StackTrace);
            //    UPSNoelWrite("-------------------------");
            //    UPSNoelWrite("");

            //}
            //catch (Exception ex)
            //{
            //    UPSNoelWrite("");
            //    UPSNoelWrite("-------------------------");
            //    UPSNoelWrite(" Generaal Exception= " + ex.Message);
            //    UPSNoelWrite(" Generaal Exception-StackTrace= " + ex.StackTrace);
            //    UPSNoelWrite("-------------------------");

            //}
            //finally
            //{
            //    //Console.ReadKey();
            //}
        }
예제 #30
0
        public ActionResult Index()
        {
            UPSSecurity upss = new UPSSecurity();


            UPSSecurityServiceAccessToken upssSvcAccessToken = new UPSSecurityServiceAccessToken();

            upssSvcAccessToken.AccessLicenseNumber = "3D6A1DD5F39023B5";
            upss.ServiceAccessToken = upssSvcAccessToken;
            UPSSecurityUsernameToken upssUsrNameToken = new UPSSecurityUsernameToken();

            upssUsrNameToken.Username = "******";
            upssUsrNameToken.Password = "******";
            upss.UsernameToken        = upssUsrNameToken;

            RateRequest rateRequest = new RateRequest();

            RequestType request = new RequestType();

            String[] requestOption = { "Shoptimeintransit" };
            request.RequestOption = requestOption;
            rateRequest.Request   = request;


            ShipmentType shipment = new ShipmentType();

            TimeInTransitRequestType Time_Tran = new TimeInTransitRequestType();
            var packbillcode = "03";

            Time_Tran.PackageBillType        = packbillcode;
            shipment.DeliveryTimeInformation = Time_Tran;

            ShipperType shipper = new ShipperType();

            // shipper.ShipperNumber = "Your Shipper Number";

            var shipperAddress = new AddressType();

            // String[] addressLine = { "5555 main", "4 Case Cour", "Apt 3B" };
            //shipperAddress.AddressLine = addressLine;
            shipperAddress.City              = "San Diego";
            shipperAddress.PostalCode        = "92101";
            shipperAddress.StateProvinceCode = "CA";
            shipperAddress.CountryCode       = "US";
            // shipperAddress.AddressLine = addressLine;
            shipper.Address  = shipperAddress;
            shipment.Shipper = shipper;
            ShipFromType shipFrom        = new ShipFromType();
            var          shipFromAddress = new ShipAddressType();

            //shipFromAddress.AddressLine = addressLine;
            shipFromAddress.City              = "San Diego";
            shipFromAddress.PostalCode        = "92101";
            shipFromAddress.StateProvinceCode = "CA";
            shipFromAddress.CountryCode       = "US";
            shipFrom.Address  = shipFromAddress;
            shipment.ShipFrom = shipFrom;


            ShipToType        shipTo        = new ShipToType();
            ShipToAddressType shipToAddress = new ShipToAddressType();

            //String[] addressLine1 = { "10 E. Ritchie Way", "2", "Apt 3B" };
            //shipToAddress.AddressLine = addressLine1;
            shipToAddress.City              = "Canton";
            shipToAddress.PostalCode        = "02021";
            shipToAddress.StateProvinceCode = "MA";
            shipToAddress.CountryCode       = "US";
            shipTo.Address  = shipToAddress;
            shipment.ShipTo = shipTo;

            CodeDescriptionType service = new CodeDescriptionType();

            //Below code uses dummy date for reference. Please udpate as required.
            service.Code     = "02";
            shipment.Service = service;

            PackageType       package       = new PackageType();
            PackageWeightType packageWeight = new PackageWeightType();

            packageWeight.Weight = "1";
            CodeDescriptionType uom = new CodeDescriptionType();

            uom.Code        = "LBS";
            uom.Description = "pounds";
            packageWeight.UnitOfMeasurement = uom;
            package.PackageWeight           = packageWeight;
            CodeDescriptionType packType = new CodeDescriptionType();

            packType.Code         = "02";
            package.PackagingType = packType;
            PackageType[] pkgArray = { package };
            shipment.Package     = pkgArray;
            rateRequest.Shipment = shipment;
            //System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11; //This line will ensure the latest security protocol for consuming the web service call.
            // Console.WriteLine(rateRequest);
            var          client       = new RatePortTypeClient();
            RateResponse rateResponse = client.ProcessRate(upss, rateRequest);

            var model = new Rate_Package()
            {
                Response = rateResponse
            };

            return(View(model));
        }
예제 #31
0
        static void Main()
        {
            try
            {
                RateService rate        = new RateService();
                RateRequest rateRequest = new RateRequest();
                UPSSecurity upss        = new UPSSecurity();
                UPSSecurityServiceAccessToken upssSvcAccessToken = new UPSSecurityServiceAccessToken();
                upssSvcAccessToken.AccessLicenseNumber = "Your Access License Number";
                upss.ServiceAccessToken = upssSvcAccessToken;
                UPSSecurityUsernameToken upssUsrNameToken = new UPSSecurityUsernameToken();
                upssUsrNameToken.Username = "******";
                upssUsrNameToken.Password = "******";
                upss.UsernameToken        = upssUsrNameToken;
                rate.UPSSecurityValue     = upss;
                RequestType request       = new RequestType();
                String[]    requestOption = { "Rate" };
                request.RequestOption = requestOption;
                rateRequest.Request   = request;
                ShipmentType shipment = new ShipmentType();
                ShipperType  shipper  = new ShipperType();
                shipper.ShipperNumber = "Your Shipper Number";
                RateWSSample.RateWebReference.AddressType shipperAddress = new RateWSSample.RateWebReference.AddressType();
                String[] addressLine = { "5555 main", "4 Case Cour", "Apt 3B" };
                shipperAddress.AddressLine       = addressLine;
                shipperAddress.City              = "Roswell";
                shipperAddress.PostalCode        = "30076";
                shipperAddress.StateProvinceCode = "GA";
                shipperAddress.CountryCode       = "US";
                shipperAddress.AddressLine       = addressLine;
                shipper.Address  = shipperAddress;
                shipment.Shipper = shipper;
                ShipFromType shipFrom = new ShipFromType();
                RateWSSample.RateWebReference.AddressType shipFromAddress = new RateWSSample.RateWebReference.AddressType();
                shipFromAddress.AddressLine       = addressLine;
                shipFromAddress.City              = "Roswell";
                shipFromAddress.PostalCode        = "30076";
                shipFromAddress.StateProvinceCode = "GA";
                shipFromAddress.CountryCode       = "US";
                shipFrom.Address  = shipFromAddress;
                shipment.ShipFrom = shipFrom;
                ShipToType        shipTo        = new ShipToType();
                ShipToAddressType shipToAddress = new ShipToAddressType();
                String[]          addressLine1  = { "10 E. Ritchie Way", "2", "Apt 3B" };
                shipToAddress.AddressLine       = addressLine1;
                shipToAddress.City              = "Plam Springs";
                shipToAddress.PostalCode        = "92262";
                shipToAddress.StateProvinceCode = "CA";
                shipToAddress.CountryCode       = "US";
                shipTo.Address  = shipToAddress;
                shipment.ShipTo = shipTo;
                CodeDescriptionType service = new CodeDescriptionType();

                //Below code uses dummy date for reference. Please udpate as required.
                service.Code     = "02";
                shipment.Service = service;
                PackageType       package       = new PackageType();
                PackageWeightType packageWeight = new PackageWeightType();
                packageWeight.Weight = "125";
                CodeDescriptionType uom = new CodeDescriptionType();
                uom.Code        = "LBS";
                uom.Description = "pounds";
                packageWeight.UnitOfMeasurement = uom;
                package.PackageWeight           = packageWeight;
                CodeDescriptionType packType = new CodeDescriptionType();
                packType.Code         = "02";
                package.PackagingType = packType;
                PackageType[] pkgArray = { package };
                shipment.Package     = pkgArray;
                rateRequest.Shipment = shipment;
                System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
                Console.WriteLine(rateRequest);
                RateResponse rateResponse = rate.ProcessRate(rateRequest);
                Console.WriteLine("The transaction was a " + rateResponse.Response.ResponseStatus.Description);
                Console.WriteLine("Total Shipment Charges " + rateResponse.RatedShipment[0].TotalCharges.MonetaryValue + rateResponse.RatedShipment[0].TotalCharges.CurrencyCode);
                Console.ReadKey();
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                Console.WriteLine("");
                Console.WriteLine("---------Rate Web Service returns error----------------");
                Console.WriteLine("---------\"Hard\" is user error \"Transient\" is system error----------------");
                Console.WriteLine("SoapException Message= " + ex.Message);
                Console.WriteLine("");
                Console.WriteLine("SoapException Category:Code:Message= " + ex.Detail.LastChild.InnerText);
                Console.WriteLine("");
                Console.WriteLine("SoapException XML String for all= " + ex.Detail.LastChild.OuterXml);
                Console.WriteLine("");
                Console.WriteLine("SoapException StackTrace= " + ex.StackTrace);
                Console.WriteLine("-------------------------");
                Console.WriteLine("");
            }
            catch (System.ServiceModel.CommunicationException ex)
            {
                Console.WriteLine("");
                Console.WriteLine("--------------------");
                Console.WriteLine("CommunicationException= " + ex.Message);
                Console.WriteLine("CommunicationException-StackTrace= " + ex.StackTrace);
                Console.WriteLine("-------------------------");
                Console.WriteLine("");
            }
            catch (Exception ex)
            {
                Console.WriteLine("");
                Console.WriteLine("-------------------------");
                Console.WriteLine(" Generaal Exception= " + ex.Message);
                Console.WriteLine(" Generaal Exception-StackTrace= " + ex.StackTrace);
                Console.WriteLine("-------------------------");
            }
            finally {
                Console.ReadKey();
            }
        }