Exemple #1
0
        public bool Capture(PaymentMethod currentPayment)
        {
            Mediachase.Commerce.Orders.Payment payment = (Mediachase.Commerce.Orders.Payment)currentPayment.Payment;
            Log.InfoFormat("Capturing payment with ID:{0} belonging to order with ID: {1}", payment.Id, payment.OrderGroupId);

            int transactionId;

            if (!int.TryParse(payment.AuthorizationCode, out transactionId))
            {
                Log.ErrorFormat("Could not get PayEx transaction ID from payment with ID:{0} belonging to order with ID: {1}", payment.Id, payment.OrderGroupId);
                return(false);
            }
            Log.InfoFormat("PayEx transaction ID is {0} on payment with ID:{1} belonging to order with ID: {2}", transactionId, payment.Id, payment.OrderGroupId);

            long          amount      = payment.Amount.RoundToLong();
            string        orderNumber = OrderNumberFormatter.MakeNumeric(currentPayment.PurchaseOrder.TrackingNumber);
            CaptureResult result      = _paymentManager.Capture(transactionId, amount, orderNumber, currentPayment.Payment.Vat, string.Empty);

            bool success = false;

            if (result.Success && !string.IsNullOrWhiteSpace(result.TransactionNumber))
            {
                Log.InfoFormat("Setting PayEx transaction number to {0} on payment with ID:{1} belonging to order with ID: {2} during capture", result.TransactionNumber, payment.Id, payment.OrderGroupId);
                payment.ValidationCode = result.TransactionNumber;
                payment.AcceptChanges();
                success = true;
                Log.InfoFormat("Successfully captured payment with ID:{0} belonging to order with ID: {1}", currentPayment.Payment.Id, currentPayment.OrderGroupId);
            }

            if (_paymentCapturer != null)
            {
                return(_paymentCapturer.Capture(currentPayment) && success);
            }
            return(success);
        }
Exemple #2
0
        }                   // Needed for unit testing

        public PayPal(Mediachase.Commerce.Orders.Payment payment, IPaymentManager paymentManager,
                      IParameterReader parameterReader, ICartActions cartActions, IOrderNumberGenerator orderNumberGenerator,
                      IAdditionalValuesFormatter additionalValuesFormatter, IPaymentActions paymentActions)
            : base(payment)
        {
            _paymentManager            = paymentManager;
            _parameterReader           = parameterReader;
            _cartActions               = cartActions;
            _orderNumberGenerator      = orderNumberGenerator;
            _additionalValuesFormatter = additionalValuesFormatter;
            _paymentActions            = paymentActions;
        }
        } // Needed for unit testing

        public MasterPass(Mediachase.Commerce.Orders.Payment payment, IPaymentManager paymentManager,
                          IParameterReader parameterReader, ICartActions cartActions, IOrderNumberGenerator orderNumberGenerator,
                          IAdditionalValuesFormatter additionalValuesFormatter, IPaymentActions paymentActions,
                          IMasterPassShoppingCartFormatter masterPassShoppingCartFormatter)
            : base(payment)
        {
            _paymentManager            = paymentManager;
            _parameterReader           = new MasterPassParameterReader(parameterReader);
            _cartActions               = cartActions;
            _orderNumberGenerator      = orderNumberGenerator;
            _additionalValuesFormatter = new MasterPassAdditionalValuesFormatter(additionalValuesFormatter,
                                                                                 _parameterReader.AddShoppingCartXml(this.PaymentMethodDto), masterPassShoppingCartFormatter);
            _paymentActions = paymentActions;
        }
        /// <summary>
        /// Main entry point of ECF Payment Gateway.
        /// </summary>
        /// <param name="payment">The payment to process</param>
        /// <param name="message">The message.</param>
        /// <returns>return false and set the message will make the WorkFlow activity raise PaymentExcetion(message)</returns>
        public override bool ProcessPayment(Mediachase.Commerce.Orders.Payment payment, ref string message)
        {
            var orderGroup = payment.Parent.Parent;

            var paymentProcessingResult = ProcessPayment(orderGroup, payment);

            if (!string.IsNullOrEmpty(paymentProcessingResult.RedirectUrl))
            {
                HttpContext.Current.Response.Redirect(paymentProcessingResult.RedirectUrl);
            }

            message = paymentProcessingResult.Message;
            return(paymentProcessingResult.IsSuccessful);
        }
Exemple #5
0
        public PaymentMethod Create(Mediachase.Commerce.Orders.Payment payment)
        {
            if (payment == null)
            {
                return(null);
            }

            Log.InfoFormat("Attempting to resolve the PaymentMethod for payment with ID:{0}. PaymentMethodId:{1}", payment.Id, payment.PaymentMethodId);
            if (!(payment is PayExPayment))
            {
                Log.ErrorFormat("Payment with ID:{0} is not a PayExPayment and therefore it cannot be processed by the PayEx Payment Provider!", payment.Id);
                return(null);
            }

            PaymentMethodDto paymentMethodDto =
                Mediachase.Commerce.Orders.Managers.PaymentManager.GetPaymentMethod(payment.PaymentMethodId);
            string systemKeyword = paymentMethodDto.PaymentMethod.FindByPaymentMethodId(payment.PaymentMethodId).SystemKeyword;

            Log.InfoFormat("Resolving the PaymentMethod for payment with ID:{0}. The systemKeyword for this payment method is {1}", payment.Id, systemKeyword);

            switch (systemKeyword)
            {
            case Constants.Payment.DirectDebit.SystemKeyword:
                return(new DirectBankDebit(payment, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));

            case Constants.Payment.Giftcard.SystemKeyword:
                return(new GiftCard(payment, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));

            case Constants.Payment.Invoice.SystemKeyword:
                return(new Invoice(payment, _verificationManager, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));

            case Constants.Payment.InvoiceLedger.SystemKeyword:
                return(new InvoiceLedger(payment, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));

            case Constants.Payment.PartPayment.SystemKeyword:
                return(new PartPayment(payment, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));

            case Constants.Payment.PayPal.SystemKeyword:
                return(new PayPal(payment, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));

            case Constants.Payment.CreditCard.SystemKeyword:
                return(new CreditCard(payment, _paymentManager, _parameterReader, _cartActions, _orderNumberGenerator, _additionalValuesFormatter, _paymentActions));
            }

            Log.ErrorFormat("Could not resolve the PaymentMethod for payment with ID:{0}. The systemKeyword for this payment method is {1}", payment.Id, systemKeyword);
            return(null);
        }
        } // Needed for unit testing

        public FinancingInvoice(Mediachase.Commerce.Orders.Payment payment, IPaymentManager paymentManager,
                                IParameterReader parameterReader,
                                ICartActions cartActions, IOrderNumberGenerator orderNumberGenerator,
                                IAdditionalValuesFormatter additionalValuesFormatter,
                                IFinancialInvoicingOrderLineFormatter financialInvoicingOrderLineFormatter, IPaymentActions paymentActions,
                                string paymentMethodCode, IUpdateAddressHandler updateAddressHandler)
            : base(payment)
        {
            _paymentManager       = paymentManager;
            _parameterReader      = new FinancingInvoiceParameterReader(parameterReader);
            _cartActions          = cartActions;
            _orderNumberGenerator = orderNumberGenerator;

            _financialInvoicingOrderLineFormatter = financialInvoicingOrderLineFormatter;
            financialInvoicingOrderLineFormatter.IncludeOrderLines =
                _parameterReader.UseOnePhaseTransaction(this.PaymentMethodDto);
            _additionalValuesFormatter = new FinancingInvoiceAdditionalValuesFormatter(additionalValuesFormatter,
                                                                                       financialInvoicingOrderLineFormatter);
            _paymentActions       = paymentActions;
            _paymentMethodCode    = paymentMethodCode;
            _updateAddressHandler = updateAddressHandler;
        }
 /// <inheritdoc/>
 public override bool ProcessPayment(Mediachase.Commerce.Orders.Payment payment, ref string message)
 {
     //Simply accept the payment gateway.
     return(true);
 }