public void InitializeValues() { var startPage = _contentLoader.GetStartPage(); if (!startPage.KlarnaCheckoutEnabled || !IsActive) { return; } var cart = _cartService.LoadCart(_cartService.DefaultCartName); var orderData = AsyncHelper.RunSync(() => _klarnaCheckoutService.CreateOrUpdateOrder(cart)); HtmlSnippet = orderData.HtmlSnippet; }
private IEnumerable <PaymentMethodViewModel <IPaymentMethod> > GetPaymentMethodsByMarketIdAndLanguageCode(string marketId, string languageCode) { var foundMethods = _paymentManager.GetPaymentMethodsByMarket(marketId) .PaymentMethod .Where(x => x.IsActive && languageCode.Equals(x.LanguageId, StringComparison.OrdinalIgnoreCase)) .OrderBy(x => x.Ordering) .Select(x => new PaymentMethodViewModel <IPaymentMethod> { PaymentMethod = _paymentMethods.SingleOrDefault(method => method.SystemKeyword == x.SystemKeyword), IsDefault = x.IsDefault }).ToList(); var startPage = _contentLoader.GetStartPage(); var methods = new List <PaymentMethodViewModel <IPaymentMethod> >(); if (startPage.KlarnaCheckoutEnabled) { var method = foundMethods.FirstOrDefault(x => x.PaymentMethod.SystemKeyword == Klarna.Checkout.Constants.KlarnaCheckoutSystemKeyword); if (method != null) { methods.Add(method); } } if (startPage.KlarnaPaymentsEnabled) { var method = foundMethods.FirstOrDefault(x => x.PaymentMethod.SystemKeyword == Klarna.Payments.Constants.KlarnaPaymentSystemKeyword); if (method != null) { methods.Add(method); } } if (startPage.OtherPaymentsEnabled) { var klarnaKeywoards = new[] { Klarna.Checkout.Constants.KlarnaCheckoutSystemKeyword, Klarna.Payments.Constants.KlarnaPaymentSystemKeyword }; var other = foundMethods.Where(x => !klarnaKeywoards.Contains(x.PaymentMethod.SystemKeyword)); methods.AddRange(other); } return(methods); }
public void InitializeValues() { var startPage = _contentLoader.GetStartPage(); if (!startPage.KlarnaPaymentsEnabled || !IsActive) { return; } var cart = _cartService.LoadCart(_cartService.DefaultCartName); var siteUrl = SiteDefinition.Current.SiteUrl; if (AsyncHelper.RunSync(() => _klarnaPaymentsService.CreateOrUpdateSession(cart, new SessionSettings(siteUrl)))) { ClientToken = cart.GetKlarnaClientToken(); PaymentMethodCategories = cart.GetKlarnaPaymentMethodCategories(); } }
public async Task <ActionResult> KlarnaCheckoutConfirmation(int orderGroupId, string klarna_order_id) { var cart = _klarnaCheckoutService.GetCartByKlarnaOrderId(orderGroupId, klarna_order_id); if (cart != null) { var market = _marketService.GetMarket(cart.MarketId); var order = await _klarnaCheckoutService.GetOrder(klarna_order_id, market).ConfigureAwait(false); if (order.Status == "checkout_complete") { var purchaseOrder = _checkoutService.CreatePurchaseOrderForKlarna(klarna_order_id, order, cart); if (purchaseOrder == null) { ModelState.AddModelError("", "Error occurred while creating a purchase order"); return(RedirectToAction("Index")); } var currentPage = _contentLoader.Get <CheckoutPage>(_contentLoader.GetStartPage().CheckoutPage); var address = new Shared.Models.AddressModel { Email = purchaseOrder.GetFirstForm().Payments.FirstOrDefault()?.BillingAddress.Email }; _checkoutService.SendConfirmation(new CheckoutViewModel { CurrentPage = currentPage, BillingAddress = address }, purchaseOrder); return(Redirect(_checkoutService.BuildRedirectionUrl(purchaseOrder))); } else { return(RedirectToAction("Index")); } } return(HttpNotFound()); }
public virtual bool SendConfirmation(CheckoutViewModel viewModel, IPurchaseOrder purchaseOrder) { var queryCollection = new NameValueCollection { { "contactId", _customerContext.CurrentContactId.ToString() }, { "orderNumber", purchaseOrder.OrderLink.OrderGroupId.ToString(CultureInfo.CurrentCulture) } }; var confirmationPage = _contentRepository.GetChildren <OrderConfirmationPage>(viewModel.CurrentPage.ContentLink).First(); try { _mailService.Send(_contentLoader.GetStartPage().OrderConfirmationMail, queryCollection, viewModel.BillingAddress.Email, confirmationPage.Language.Name); } catch (Exception e) { _log.Warning($"Unable to send purchase receipt to '{viewModel.BillingAddress.Email}'.", e); return(false); } return(true); }