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();
            }
        }
Example #4
0
        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());
        }
Example #5
0
        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);
        }