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); }
} // 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); }
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); }