public CheckoutResult CheckoutWithOnSitePayment(CheckoutOrderInfo checkoutOrderInfo)
        {
            if (!checkoutOrderInfo.RequiresPayment)
            {
                checkoutOrderInfo.PaymentProvider = PaymentProviderName.None;
            }

            CheckoutOrderValidator checkoutOrderValidator = new CheckoutOrderValidator();
            ValidationResult       validationResult       = checkoutOrderValidator.Validate(checkoutOrderInfo);

            if (validationResult.IsValid)
            {
                Order pendingOrder = CreateOrder(checkoutOrderInfo, OrderStatusName.Processing);

                if (checkoutOrderInfo.PaymentProvider != PaymentProviderName.None)
                {
                    PaymentStatusName paymentStatus = pendingOrder.PaymentStatus;
                    if (pendingOrder.PaymentStatus != PaymentStatusName.Completed)
                    {
                        PaymentProvider paymentProcessor = PaymentProviderFactory.GetProvider(checkoutOrderInfo.PaymentProvider, storeContext.CurrentStore);

                        HttpWebResponse response = paymentProcessor.SubmitDirectPaymentRequest(pendingOrder, checkoutOrderInfo.CreditCard);
                        paymentStatus = paymentProcessor.ProcessDirectPaymentResponse(pendingOrder, response);
                    }

                    OrderStatusName orderStatus = (paymentStatus == PaymentStatusName.Completed) ? OrderStatusName.Processing : pendingOrder.OrderStatus;
                    UpdateOrderStatus(pendingOrder, orderStatus, paymentStatus);

                    pendingOrder.Save();
                }
                else
                {
                    // does not require payment (free order / order total == 0)
                    UpdateOrderStatus(pendingOrder, OrderStatusName.Processing, PaymentStatusName.Completed);
                }

                return(DoPostCheckoutProcessing(pendingOrder, true));
            }
            else
            {
                // failed validation
                return(new CheckoutResult()
                {
                    SubmittedOrder = null,
                    Errors = validationResult.Errors.ToList().ConvertAll(e => e.ErrorMessage)
                });
            }
        }
 public DefaultController()
 {
     _paymentProvider = PaymentProviderFactory.GetProvider((ProviderType)Enum.Parse(typeof(ProviderType), _providerName, true),
                                                           new TraceWriterLogAdapter());
     _paymentProviderBackend = PaymentProviderBackendFactory.GetProvider(ProviderType.Realex, new TraceWriterLogAdapter());
 }
Exemple #3
0
 public CapitaController()
 {
     _paymentProvider = PaymentProviderFactory.GetProvider((ProviderType)Enum.Parse(typeof(ProviderType), _providerName, true),
                                                           new TraceWriterLogAdapter());
 }