public void CapturePaymentTest_InvalidTransaction_PaymentNotCaptured() { var responseMessage = "Invalid transaction"; var checkoutService = new Mock <IHelcimCheckoutService>(); var paymentService = new Mock <IHelcimPaymentService>(); paymentService.Setup(x => x.CapturePayment(It.IsAny <HelcimTransactionRequest>())).Returns((HelcimTransactionRequest request) => new HelcimPaymentResponse() { ResponseMessage = responseMessage }); var paymentMethod = new HelcimCheckoutPaymentMethod(checkoutService.Object, s => paymentService.Object); paymentMethod.Settings = GetTestSettings(""); var context = new CaptureProcessPaymentEvaluationContext() { Payment = new PaymentIn() { PaymentStatus = PaymentStatus.Authorized, Transactions = new List <PaymentGatewayTransaction>() } }; var result = paymentMethod.CaptureProcessPayment(context); Assert.False(result.IsSuccess); Assert.Equal(responseMessage, result.ErrorMessage); }
public override void Initialize() { _container.RegisterType <IHelcimClient, HelcimClient>(); Func <string, IHelcimPaymentService> helcimServiceFactory = endpoint => new HelcimPaymentService(endpoint, _container.Resolve <IHelcimClient>()); _container.RegisterInstance(helcimServiceFactory); _container.RegisterType <IHelcimCheckoutService, HelcimCheckoutService>(); var settingsManager = ServiceLocator.Current.GetInstance <ISettingsManager>(); Func <HelcimCheckoutPaymentMethod> helcimPaymentMethod = () => { var paymentMethod = new HelcimCheckoutPaymentMethod(_container.Resolve <IHelcimCheckoutService>(), _container.Resolve <Func <string, IHelcimPaymentService> >()); paymentMethod.Name = "Helcim Payment Gateway"; paymentMethod.Description = "Helcim payment gateway integration"; paymentMethod.LogoUrl = "https://raw.githubusercontent.com/VirtoCommerce/vc-module-helcim/master/Helcim.PaymentGateway.Web/Content/logo.svg"; paymentMethod.Settings = settingsManager.GetModuleSettings("Helcim.PaymentGateway").OrderBy(x => x.Title).ToArray(); return(paymentMethod); }; var paymentMethodsService = _container.Resolve <IPaymentMethodsService>(); paymentMethodsService.RegisterPaymentMethod(helcimPaymentMethod); }
public void PostProcessPaymentTest_CallbackSuccessInvalidTransaction_PaymentNotProcessed() { var responseMessage = "Invalid transaction"; var checkoutService = new Mock <IHelcimCheckoutService>(); var paymentService = new Mock <IHelcimPaymentService>(); paymentService.Setup(x => x.GetTransaction(It.IsAny <HelcimTransactionRequest>())).Returns((HelcimTransactionRequest request) => new HelcimPaymentResponse() { ResponseMessage = responseMessage }); var paymentMethod = new HelcimCheckoutPaymentMethod(checkoutService.Object, s => paymentService.Object); paymentMethod.Settings = GetTestSettings(""); var context = new PostProcessPaymentEvaluationContext() { Payment = new PaymentIn { Transactions = new List <PaymentGatewayTransaction>() }, Parameters = new NameValueCollection() { { "response", "1" } } }; var result = paymentMethod.PostProcessPayment(context); Assert.False(result.IsSuccess); Assert.Equal(responseMessage, result.ErrorMessage); }
public void ValidatePostProcessRequestTest_ValidTransaction_RequestValid() { var transactionId = "123"; var code = "HelcimCheckout"; var checkoutService = new Mock <IHelcimCheckoutService>(); var paymentService = new Mock <IHelcimPaymentService>(); var paymentMethod = new HelcimCheckoutPaymentMethod(checkoutService.Object, s => paymentService.Object); paymentMethod.Settings = GetTestSettings(""); var result = paymentMethod.ValidatePostProcessRequest(new NameValueCollection() { { "transactionId", transactionId }, { "code", code } }); Assert.True(result.IsSuccess); Assert.Equal(transactionId, result.OuterId); }
public void PostProcessPaymentTest_CallbackSuccessAuthorize_PaymentProcessed() { var transactionId = "123"; var checkoutService = new Mock <IHelcimCheckoutService>(); var paymentService = new Mock <IHelcimPaymentService>(); paymentService.Setup(x => x.GetTransaction(It.IsAny <HelcimTransactionRequest>())).Returns((HelcimTransactionRequest request) => new HelcimPaymentResponse() { Response = 1, Transaction = new HelcimPaymentTransaction() { Id = transactionId, } }); var paymentMethod = new HelcimCheckoutPaymentMethod(checkoutService.Object, s => paymentService.Object); paymentMethod.Settings = GetTestSettings("Authorize"); var context = new PostProcessPaymentEvaluationContext() { Payment = new PaymentIn { Transactions = new List <PaymentGatewayTransaction>() }, Parameters = new NameValueCollection() { { "response", "1" }, { "transactionId", transactionId } } }; var result = paymentMethod.PostProcessPayment(context); Assert.True(result.IsSuccess); Assert.Equal(PaymentStatus.Authorized, result.NewPaymentStatus); Assert.Equal(transactionId, result.OuterId); Assert.Equal(transactionId, context.Payment.OuterId); Assert.False(context.Payment.IsApproved); }
public void ProcessPaymentTest() { var checkoutService = new Mock <IHelcimCheckoutService>(); checkoutService.Setup(x => x.GetCheckoutFormContent(It.IsAny <HelcimCheckoutSettings>())).Returns((HelcimCheckoutSettings setting) => "formcontent"); var paymentService = new Mock <IHelcimPaymentService>(); var paymentMethod = new HelcimCheckoutPaymentMethod(checkoutService.Object, s => paymentService.Object); paymentMethod.Settings = GetTestSettings(""); var result = paymentMethod.ProcessPayment(new ProcessPaymentEvaluationContext() { Order = new CustomerOrder(), Store = new Store(), Payment = new PaymentIn() }); Assert.True(result.IsSuccess); Assert.Equal(PaymentStatus.Pending, result.NewPaymentStatus); Assert.Equal("formcontent", result.HtmlForm); }
public void CapturePaymentTest_ValidTransaction_PaymentCaptured() { var transactionId = "123"; var checkoutService = new Mock <IHelcimCheckoutService>(); var paymentService = new Mock <IHelcimPaymentService>(); paymentService.Setup(x => x.CapturePayment(It.IsAny <HelcimTransactionRequest>())).Returns((HelcimTransactionRequest request) => new HelcimPaymentResponse() { Response = 1, Transaction = new HelcimPaymentTransaction() { TransactionId = transactionId } }); var paymentMethod = new HelcimCheckoutPaymentMethod(checkoutService.Object, s => paymentService.Object); paymentMethod.Settings = GetTestSettings(""); var context = new CaptureProcessPaymentEvaluationContext() { Payment = new PaymentIn() { PaymentStatus = PaymentStatus.Authorized, OuterId = transactionId, Transactions = new List <PaymentGatewayTransaction>() } }; var result = paymentMethod.CaptureProcessPayment(context); Assert.True(result.IsSuccess); Assert.True(context.Payment.IsApproved); Assert.Equal(PaymentStatus.Paid, result.NewPaymentStatus); Assert.Equal(PaymentStatus.Paid, context.Payment.PaymentStatus); }