public GenericPaymentViewModel(Guid paymentMethod, T currentPage, OrderInfo orderInfo, Cart cart) : base(currentPage)
        {
            PaymentMethodDto payment = PaymentManager.GetPaymentMethod(paymentMethod);

            _paymentMethod = payment;
            _currentCart   = cart;

            DIBSPaymentGateway gw = new DIBSPaymentGateway();

            orderInfo.Merchant = gw.Merchant;

            Mediachase.Commerce.Orders.Payment[] payments;
            if (CurrentCart != null && CurrentCart.OrderForms != null && CurrentCart.OrderForms.Count > 0)
            {
                payments = CurrentCart.OrderForms[0].Payments.ToArray();
            }
            else
            {
                payments = new Mediachase.Commerce.Orders.Payment[0];
            }
            _payment = payments.FirstOrDefault(c => c.PaymentMethodId.Equals(payment.PaymentMethod.Rows[0]["PaymentMethodId"]));


            OrderID = orderInfo.OrderId;
        }
        public DibsPaymentViewModel(IContentRepository contentRepository, DibsPaymentPage currentPage, OrderInfo orderInfo, Cart cart) : base(new Guid(currentPage.PaymentMethod), currentPage, orderInfo, cart)
        {
            SiteConfiguration configuration = SiteConfiguration.Current();
            PaymentMethodDto  dibs          = PaymentManager.GetPaymentMethodBySystemName(DIBSSystemName, SiteContext.Current.LanguageName);

            _paymentMethod = dibs;
            _currentCart   = cart;

            DIBSPaymentGateway gw = new DIBSPaymentGateway();

            orderInfo.Merchant = gw.Merchant;

            var paymentRedirectUrl = GetViewUrl(currentPage.ContentLink);

            IsTest = orderInfo.IsTest;

            var baseUrl = GetBaseUrl();

            AcceptReturnUrl           = baseUrl + paymentRedirectUrl + "ProcessPayment";
            orderInfo.AcceptReturnUrl = AcceptReturnUrl;

            CancelReturnUrl           = baseUrl + paymentRedirectUrl + "CancelPayment";
            orderInfo.CancelReturnUrl = CancelReturnUrl;

            Mediachase.Commerce.Orders.Payment[] payments;
            if (CurrentCart != null && CurrentCart.OrderForms != null && CurrentCart.OrderForms.Count > 0)
            {
                payments = CurrentCart.OrderForms[0].Payments.ToArray();
            }
            else
            {
                payments = new Mediachase.Commerce.Orders.Payment[0];
            }
            _payment      = payments.FirstOrDefault(c => c.PaymentMethodId.Equals(dibs.PaymentMethod.Rows[0]["PaymentMethodId"]));
            ProcessingUrl = DIBSPaymentGateway.GetParameterByName(dibs, DIBSPaymentGateway.ProcessingUrl).Value;
            Key           = gw.Key;
            OrderID       = orderInfo.OrderId;

            ShaCalculator calculator = new ShaCalculator(Key);

            if (CurrentCart != null && CurrentCart.OrderForms != null && CurrentCart.OrderForms.Count > 0)
            {
                // Note, the orderinfo is changed inside this method
                Products = GenerateLineItemInformation(CurrentCart.OrderForms[0].LineItems, ref orderInfo);
            }
            else
            {
                Products = new List <string>();
            }

            MAC = calculator.GetMac(orderInfo);


            this.OrderInfo = orderInfo.ToString();
        }