public bool PaymentMethodRequiresSocialSecurityNumber(PaymentSelection paymentSelection)
 {
     // TODO: Needs to check against known payment methods that require SSN, like Klarna
     return(false);
     //return paymentSelection.SelectedPayment == new Guid("8dca4a96-a5bb-4e85-82a4-2754f04c2117") ||
     //       paymentSelection.SelectedPayment == new Guid("c2ea88f8-c702-4331-819e-0e77e7ac5450");
 }
 public bool PaymentMethodRequiresSocialSecurityNumber(PaymentSelection paymentSelection)
 {
     // TODO: Needs to check against known payment methods that require SSN, like Klarna
     return false;
     //return paymentSelection.SelectedPayment == new Guid("8dca4a96-a5bb-4e85-82a4-2754f04c2117") ||
     //       paymentSelection.SelectedPayment == new Guid("c2ea88f8-c702-4331-819e-0e77e7ac5450");
 }
        public async Task <IActionResult> Post([Required] PaymentSelection paymentSelection)
        {
            try
            {
                if (!string.IsNullOrEmpty(paymentSelection.Type))
                {
                    var response = new PaymentSelection()
                    {
                        Type = await this.paymentGatewayService.Process(paymentSelection.Type.ToLower())
                    };
                    return(Ok(response));
                }

                return(BadRequest("Provide valid payment type from given types"));
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }
        }
Example #4
0
        private PaymentSelection GetPaymentInfo()
        {
            var paymentMethods = PaymentManager.GetPaymentMethods(_currentMarket.GetCurrentMarket().DefaultLanguage.ToString());
            var paymentInfo    = new PaymentSelection();

            foreach (var paymentMethodRow in paymentMethods.PaymentMethod.OrderBy(p => p.Ordering))
            {
                var methodInfo = new PaymentMethodInfo();
                methodInfo.PaymentMethod = paymentMethodRow;

                // Enrich with payment information from page
                var page = _paymentRegistry.GetPaymentContentPageByMethodId(paymentMethodRow.PaymentMethodId);
                methodInfo.Description = page.Description != null?page.Description.ToHtmlString() : string.Empty;

                paymentInfo.PaymentMethods.Add(methodInfo);
            }

            // if there is only 1 choice, select it as default
            if (paymentInfo.PaymentMethods.Count == 1)
            {
                paymentInfo.PaymentMethods.First().PaymentMethod.IsDefault = true;
            }
            return(paymentInfo);
        }
Example #5
0
        public ActionResult Index(CheckoutPage currentPage, CheckoutViewModel model, PaymentSelection paymentSelection, int[] SelectedCategories)
        {
            model.PaymentSelection    = paymentSelection;
            model.AvailableCategories = GetAvailableCategories();
            model.SelectedCategories  = SelectedCategories;

            bool requireSSN = _paymentRegistry.PaymentMethodRequiresSocialSecurityNumber(paymentSelection);

            // validate input!
            ValidateFields(model, requireSSN);

            CartHelper ch = new CartHelper(Cart.DefaultName);

            // Verify that we actually have the items we're about to sell
            ConfirmStocks(ch.LineItems);

            if (ModelState.IsValid)
            {
                var    billingAddress  = model.BillingAddress.ToOrderAddress(Constants.Order.BillingAddressName);
                var    shippingAddress = model.ShippingAddress.ToOrderAddress(Constants.Order.ShippingAddressName);
                string username        = model.Email.Trim();
                billingAddress.Email = username;
                billingAddress.DaytimePhoneNumber = model.Phone;

                HandleUserCreation(model, billingAddress, shippingAddress, username);

                if (ModelState.IsValid)
                {
                    // Checkout:

                    ch.Cart.OrderAddresses.Add(billingAddress);
                    ch.Cart.OrderAddresses.Add(shippingAddress);

                    AddShipping(ch.Cart, shippingAddress);

                    ch.Cart.OrderForms[0][Constants.Metadata.OrderForm.CustomerClub] = model.MemberClub;
                    if (model.SelectedCategories != null)
                    {
                        ch.Cart.OrderForms[0][Constants.Metadata.OrderForm.SelectedCategories] = string.Join(",", model.SelectedCategories);
                    }
                    OrderGroupWorkflowManager.RunWorkflow(ch.Cart, OrderGroupWorkflowManager.CartPrepareWorkflowName);

                    AddPayment(ch.Cart, paymentSelection.SelectedPayment.ToString(), billingAddress);

                    ch.Cart.AcceptChanges();

                    var url = _paymentRegistry.GetPaymentMethodPageUrl(model.PaymentSelection.SelectedPayment.ToString());

                    if (url != null)
                    {
                        return(Redirect(url));
                    }
                }
            }

            Guid?selectedPayment = model.PaymentSelection.SelectedPayment;

            model.PaymentSelection = GetPaymentInfo();
            if (selectedPayment.HasValue)
            {
                model.PaymentSelection.SelectedPayment = selectedPayment.Value;
            }
            model.TermsArticle = currentPage.TermsArticle;

            return(View(model));
        }