コード例 #1
0
        public IHttpActionResult AddressUpdate(int orderGroupId, [FromBody] CallbackAddressUpdateRequest addressUpdateRequest)
        {
            var cart     = _orderRepository.Load <ICart>(orderGroupId);
            var response = _klarnaCheckoutService.UpdateAddress(cart, addressUpdateRequest);

            return(Ok(response));
        }
コード例 #2
0
        public virtual AddressUpdateResponse UpdateAddress(ICart cart, CallbackAddressUpdateRequest addressUpdateRequest)
        {
            var configuration      = GetConfiguration(cart.MarketId);
            var shipment           = cart.GetFirstShipment();
            var validationIssues   = new Dictionary <ILineItem, List <ValidationIssue> >();
            var rewardDescriptions = Enumerable.Empty <RewardDescription>();

            if (shipment != null)
            {
                shipment.ShippingAddress = addressUpdateRequest.ShippingCheckoutAddress.ToOrderAddress(cart);
                validationIssues         = _klarnaCartValidator.ValidateCart(cart);
                rewardDescriptions       = _klarnaCartValidator.ApplyDiscounts(cart);
                _orderRepository.Save(cart);
            }

            var totals = _orderGroupCalculator.GetOrderGroupTotals(cart);
            var result = new AddressUpdateResponse
            {
                OrderAmount      = AmountHelper.GetAmount(totals.Total),
                OrderTaxAmount   = AmountHelper.GetAmount(totals.TaxTotal),
                OrderLines       = GetOrderLines(cart, totals, configuration.SendProductAndImageUrl),
                PurchaseCurrency = cart.Currency.CurrencyCode,
                ShippingOptions  = configuration.ShippingOptionsInIFrame
                    ? GetShippingOptions(cart, cart.Currency)
                    : Enumerable.Empty <ShippingOption>(),
                ValidationIssues   = validationIssues,
                RewardDescriptions = rewardDescriptions
            };

            if (ServiceLocator.Current.TryGetExistingInstance(out ICheckoutOrderDataBuilder checkoutOrderDataBuilder))
            {
                checkoutOrderDataBuilder.Build(result, cart, configuration);
            }

            return(result);
        }