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()); }
public CapitaController() { _paymentProvider = PaymentProviderFactory.GetProvider((ProviderType)Enum.Parse(typeof(ProviderType), _providerName, true), new TraceWriterLogAdapter()); }