예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }