public IList <ShippingOption> GetAvailableOptions(IList <Product> products, Address shipperInfo, Address receiverInfo) { var shippingOptions = new List <ShippingOption>(); var shipmentTable = CreateShipmentConfig(products, shipperInfo, receiverInfo); var resource = InitResource(); var shipment = resource.CreateShipment(shipmentTable); if (shipment.Rates.Length == 0) { var error = JsonConvert.SerializeObject(shipment.Messages); throw new EvenCartException(error); } foreach (Rate rate in shipment.Rates) { var name = $"{rate.Provider + " - " + rate.Servicelevel.Name?.ToString()}"; shippingOptions.Add(new ShippingOption { Rate = Convert.ToDecimal(rate.Amount), DeliveryTime = rate.EstimatedDays?.ToString(), Description = rate.DurationTerms?.ToString(), Name = name, Remarks = rate.Servicelevel.Terms?.ToString(), Id = rate.ObjectId, }); } return(shippingOptions); }
private static string GetCustomerId(User user, PaymentMethod paymentMethod, Address address) { var customerId = user.GetPropertyValueAs <string>(StripeCustomerIdKey); if (!customerId.IsNullEmptyOrWhiteSpace()) { return(customerId); } var service = new CustomerService(); var options = new CustomerCreateOptions { Email = user.Email, Address = new AddressOptions() { City = address.City, Country = address.Country.Name, Line1 = address.Address1, Line2 = address.Address2, PostalCode = address.ZipPostalCode, State = address.StateProvinceName }, Name = user.Name + "-" + user.Email }; if (paymentMethod != null) { options.PaymentMethod = paymentMethod.Id; options.InvoiceSettings = new CustomerInvoiceSettingsOptions { DefaultPaymentMethod = paymentMethod.Id, }; } var customer = service.Create(options); customerId = customer.Id; //save for future use user.SetPropertyValue(StripeCustomerIdKey, customerId); return(customerId); }
private static void GetFinalAmountDetails(decimal inAmount, string inCurrencyCode, Address address, out string currencyCode, out decimal amount) { var priceAccountant = DependencyResolver.Resolve <IPriceAccountant>(); amount = inAmount; currencyCode = inCurrencyCode.ToLower(); //if target country in India, send converted amount if (address.Country.Code == "IN") { var indianCurrency = DependencyResolver.Resolve <ICurrencyService>() .FirstOrDefault(x => x.IsoCode == "INR"); if (indianCurrency == null) { return; } amount = 100 * priceAccountant.ConvertCurrency(amount, indianCurrency); currencyCode = indianCurrency.IsoCode.ToLower(); return; } amount = 100 * amount; }