public static OrderManagementAddressInfo ToAddress(this IOrderAddress orderAddress) { var address = new OrderManagementAddressInfo(); address.GivenName = orderAddress.FirstName; address.FamilyName = orderAddress.LastName; address.StreetAddress = orderAddress.Line1; address.StreetAddress2 = orderAddress.Line2; address.PostalCode = orderAddress.PostalCode; address.City = orderAddress.City; address.Country = CountryCodeHelper.GetTwoLetterCountryCode(orderAddress.CountryCode); if (orderAddress.CountryCode != null && address.Country.Equals("us", StringComparison.InvariantCultureIgnoreCase) && !string.IsNullOrEmpty(orderAddress.RegionName)) { address.Region = CountryCodeHelper.GetStateCode(CountryCodeHelper.GetTwoLetterCountryCode(orderAddress.CountryCode), orderAddress.RegionName); } else { address.Region = orderAddress.RegionName; } address.Email = orderAddress.Email; address.Phone = orderAddress.DaytimePhoneNumber ?? orderAddress.EveningPhoneNumber; return(address); }
public virtual PaymentOrderRequest GetPaymentOrderRequest( IOrderGroup orderGroup, IMarket market, PaymentMethodDto paymentMethodDto, string description, string consumerProfileRef = null) { if (orderGroup == null) { throw new ArgumentNullException(nameof(orderGroup)); } if (market == null) { throw new ArgumentNullException(nameof(market)); } var marketCountry = CountryCodeHelper.GetTwoLetterCountryCode(market.Countries.FirstOrDefault()); if (string.IsNullOrWhiteSpace(marketCountry)) { throw new ConfigurationException($"Please select a country in Commerce Manager for market {orderGroup.MarketId}"); } List <OrderItem> orderItems = new List <OrderItem>(); foreach (var orderGroupForm in orderGroup.Forms) { foreach (var shipment in orderGroupForm.Shipments) { orderItems.AddRange(GetOrderItems(market, orderGroup.Currency, shipment.ShippingAddress, shipment.LineItems)); orderItems.Add(GetShippingOrderItem(shipment, market)); } } return(CreatePaymentOrderRequest(orderGroup, market, consumerProfileRef, orderItems, description)); }
private CheckoutOrderData GetCheckoutOrderData( ICart cart, IMarket market, PaymentMethodDto paymentMethodDto) { var totals = _orderGroupCalculator.GetOrderGroupTotals(cart); var shipment = cart.GetFirstShipment(); var marketCountry = CountryCodeHelper.GetTwoLetterCountryCode(market.Countries.FirstOrDefault()); if (string.IsNullOrWhiteSpace(marketCountry)) { throw new ConfigurationException($"Please select a country in CM for market {cart.MarketId}"); } var checkoutConfiguration = GetCheckoutConfiguration(market); var orderData = new PatchedCheckoutOrderData { PurchaseCountry = marketCountry, PurchaseCurrency = cart.Currency.CurrencyCode, Locale = ContentLanguage.PreferredCulture.Name, // Non-negative, minor units. Total amount of the order, including tax and any discounts. OrderAmount = AmountHelper.GetAmount(totals.Total), // Non-negative, minor units. The total tax amount of the order. OrderTaxAmount = AmountHelper.GetAmount(totals.TaxTotal), MerchantUrls = GetMerchantUrls(cart), OrderLines = GetOrderLines(cart, totals, checkoutConfiguration.SendProductAndImageUrl) }; if (checkoutConfiguration.SendShippingCountries) { orderData.ShippingCountries = GetCountries().ToList(); } // KCO_6 Setting to let the user select shipping options in the iframe if (checkoutConfiguration.SendShippingOptionsPriorAddresses) { if (checkoutConfiguration.ShippingOptionsInIFrame) { orderData.ShippingOptions = GetShippingOptions(cart, cart.Currency, ContentLanguage.PreferredCulture); } else { if (shipment != null) { orderData.SelectedShippingOption = ShippingManager.GetShippingMethod(shipment.ShippingMethodId) ?.ShippingMethod?.FirstOrDefault() ?.ToShippingOption(); } } } if (paymentMethodDto != null) { orderData.Options = GetOptions(cart.MarketId); } return(orderData); }
private Session GetSessionRequest(ICart cart, PaymentsConfiguration config, Uri siteUrl, bool includePersonalInformation = false) { var market = _marketService.GetMarket(cart.MarketId); var totals = _orderGroupCalculator.GetOrderGroupTotals(cart); var request = new Session { PurchaseCountry = CountryCodeHelper.GetTwoLetterCountryCode(market.Countries.FirstOrDefault()), OrderAmount = AmountHelper.GetAmount(totals.Total), // Non-negative, minor units. The total tax amount of the order. OrderTaxAmount = AmountHelper.GetAmount(totals.TaxTotal), PurchaseCurrency = cart.Currency.CurrencyCode, Locale = _languageService.GetPreferredCulture().Name, OrderLines = GetOrderLines(cart, totals, config.SendProductAndImageUrlField).ToArray() }; var paymentMethod = PaymentManager.GetPaymentMethodBySystemName( Constants.KlarnaPaymentSystemKeyword, _languageService.GetPreferredCulture().Name, returnInactive: true); if (paymentMethod != null) { request.MerchantUrl = new MerchantUrl { Confirmation = ToFullSiteUrl(siteUrl, config.ConfirmationUrl), Notification = ToFullSiteUrl(siteUrl, config.NotificationUrl), }; request.Options = GetWidgetOptions(paymentMethod, cart.MarketId); request.AutoCapture = config.AutoCapture; } if (includePersonalInformation) { var shipment = cart.GetFirstShipment(); var payment = cart.GetFirstForm()?.Payments.FirstOrDefault(); if (shipment?.ShippingAddress != null) { request.ShippingAddress = shipment.ShippingAddress.ToAddress(); } if (payment?.BillingAddress != null) { request.BillingAddress = payment.BillingAddress.ToAddress(); } else if (request.ShippingAddress != null) { request.BillingAddress = new OrderManagementAddressInfo() { Email = request.ShippingAddress?.Email, Phone = request.ShippingAddress?.Phone }; } } return(request); }
public static OrderManagementAddressInfo ToOrderAddress(this CustomerAddress customerAddress) { var address = new OrderManagementAddressInfo { GivenName = customerAddress.FirstName, FamilyName = customerAddress.LastName, StreetAddress = customerAddress.Line1, StreetAddress2 = customerAddress.Line2, PostalCode = customerAddress.PostalCode, City = customerAddress.City, Email = customerAddress.Email, Phone = customerAddress.DaytimePhoneNumber ?? customerAddress.EveningPhoneNumber }; var countryCode = CountryCodeHelper.GetTwoLetterCountryCode(customerAddress.CountryCode); address.Country = countryCode; if (customerAddress.CountryCode != null && customerAddress.RegionName != null) { address.Region = CountryCodeHelper.GetStateCode(countryCode, customerAddress.RegionName); } return(address); }
public virtual Consumer InitiateConsumerSession(CultureInfo currentLanguage, string email = null, string mobilePhone = null, string ssn = null) { var market = _currentMarket.GetCurrentMarket(); var swedbankPayClient = _swedbankPayClientFactory.Create(market); var config = _checkoutConfigurationLoader.GetConfiguration(market.MarketId); try { var initiateConsumerSessionRequest = _requestFactory.GetConsumerResourceRequest(new Language(currentLanguage.TextInfo.CultureName), config.ShippingAddressRestrictedToCountries.Select(x => new RegionInfo(CountryCodeHelper.GetTwoLetterCountryCode(x))), string.IsNullOrEmpty(email) ? null : new EmailAddress(email), string.IsNullOrEmpty(mobilePhone) ? null : new Msisdn(mobilePhone), string.IsNullOrEmpty(ssn) ? null : new NationalIdentifier(new RegionInfo(currentLanguage.TextInfo.CultureName), ssn)); return(AsyncHelper.RunSync(() => swedbankPayClient.Consumers.InitiateSession(initiateConsumerSessionRequest))); } catch (Exception ex) { _logger.Error(ex.Message, ex); throw; } }
protected virtual CheckoutOrder GetCheckoutOrderData( ICart cart, IMarket market, PaymentMethodDto paymentMethodDto) { var totals = _orderGroupCalculator.GetOrderGroupTotals(cart); var shipment = cart.GetFirstShipment(); var marketCountry = CountryCodeHelper.GetTwoLetterCountryCode(market.Countries.FirstOrDefault()); if (string.IsNullOrWhiteSpace(marketCountry)) { throw new ConfigurationException($"Please select a country in CM for market {cart.MarketId}"); } var checkoutConfiguration = GetCheckoutConfiguration(market); var orderData = new CheckoutOrder { PurchaseCountry = marketCountry, PurchaseCurrency = cart.Currency.CurrencyCode, Locale = _languageService.ConvertToLocale(Thread.CurrentThread.CurrentCulture.Name), // Non-negative, minor units. Total amount of the order, including tax and any discounts. OrderAmount = AmountHelper.GetAmount(totals.Total), // Non-negative, minor units. The total tax amount of the order. OrderTaxAmount = AmountHelper.GetAmount(totals.TaxTotal), MerchantUrls = GetMerchantUrls(cart), OrderLines = GetOrderLines(cart, totals, checkoutConfiguration.SendProductAndImageUrl) }; if (checkoutConfiguration.SendShippingCountries) { orderData.ShippingCountries = GetCountries().ToList(); } // KCO_6 Setting to let the user select shipping options in the iframe if (checkoutConfiguration.SendShippingOptionsPriorAddresses) { if (checkoutConfiguration.ShippingOptionsInIFrame) { orderData.ShippingOptions = GetShippingOptions(cart, cart.Currency).ToList(); } else { if (shipment != null) { orderData.SelectedShippingOption = ShippingManager.GetShippingMethod(shipment.ShippingMethodId) ?.ShippingMethod?.FirstOrDefault() ?.ToShippingOption(); } } } if (paymentMethodDto != null) { orderData.CheckoutOptions = GetOptions(cart.MarketId); } if (checkoutConfiguration.PrefillAddress) { // KCO_4: In case of signed in user the email address and default address details will be prepopulated by data from Merchant system. var customerContact = CustomerContext.Current.GetContactById(cart.CustomerId); if (customerContact?.PreferredBillingAddress != null) { orderData.BillingCheckoutAddress = customerContact.PreferredBillingAddress.ToAddress(); } if (orderData.CheckoutOptions.AllowSeparateShippingAddress) { if (customerContact?.PreferredShippingAddress != null) { orderData.ShippingCheckoutAddress = customerContact.PreferredShippingAddress.ToAddress(); } if (shipment?.ShippingAddress != null) { orderData.ShippingCheckoutAddress = shipment.ShippingAddress.ToCheckoutAddress(); } } } return(orderData); }