Ejemplo n.º 1
0
        /// <summary>
        /// Process register payment step
        /// </summary>
        /// <param name="payment"></param>
        /// <param name="orderForm"></param>
        /// <param name="orderGroup"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public override PaymentStepResult Process(IPayment payment, IOrderForm orderForm, IOrderGroup orderGroup)
        {
            var paymentMethodDto = PaymentManager.GetPaymentMethod(payment.PaymentMethodId);

            if (payment.TransactionType == TransactionType.Authorization.ToString() && string.IsNullOrEmpty(payment.ProviderTransactionID))
            {
                var transactionId = "";
                try
                {
                    transactionId = this.Client.Register(CreatePaymentRequest(paymentMethodDto, payment, orderForm, orderGroup));
                }
                catch (Exception ex)
                {
                    Logger.Error(ex.Message);
                    AddNoteAndSaveChanges(orderGroup, "Payment Registered - Error", "Payment Registered - Error: " + ex.Message);
                    return(Fail(ex.Message));
                }

                payment.ProviderTransactionID = transactionId;
                AddNoteAndSaveChanges(orderGroup, "Payment - Registered", $"Payment - Registered with transactionId {transactionId}");

                var isProduction = bool.Parse(paymentMethodDto.GetParameter(NetaxeptConstants.IsProductionField, "false"));
                var merchantId   = paymentMethodDto.GetParameter(NetaxeptConstants.MerchantIdField);
                var redirectUrl  = TerminalHelper.GetRedirectUrl(merchantId, transactionId, isProduction);

                return(Success(redirectUrl));
            }
            else if (Successor != null)
            {
                return(Successor.Process(payment, orderForm, orderGroup));
            }

            return(Fail(null));
        }
Ejemplo n.º 2
0
        public async void CanProcessAuthorize()
        {
            var appSettings = ConfigurationManager.AppSettings;

            var merchantId   = appSettings["Netaxept:MerchantId"];
            var token        = appSettings["Netaxept:Token"];
            var isProduction = false;

            var client = new NetaxeptServiceClient(new ClientConnection(merchantId, token, isProduction));

            var paymentRequest = CreatePaymentRequest();
            var transactionId  = client.Register(paymentRequest);

            var redirectUrl = TerminalHelper.GetRedirectUrl(merchantId, transactionId, isProduction);

            var browserFetcher = new BrowserFetcher();
            var launchOptions  = new LaunchOptions {
                Headless = true
            };
            await browserFetcher.DownloadAsync();

            using (var browser = await Puppeteer.LaunchAsync(launchOptions))
                using (var page = await browser.NewPageAsync())
                {
                    await page.GoToAsync(redirectUrl);
                    await ExecuteCustomerPaymentAutomation(page, "#Visa", "4925000000000004", DateTime.UtcNow.AddYears(1), "123");

                    // For some reason, page.WaitForNavigationAsync doesn't work
                    // 5 seconds seems enough time for Nets to process
                    await page.WaitForTimeoutAsync(5000);

                    Assert.StartsWith(paymentRequest.SuccessUrl, page.Url);
                }

            var processResult = client.Authorize(transactionId);

            Assert.Equal("OK", processResult.ResponseCode);

            var paymentResult = client.Query(transactionId);

            Assert.True(paymentResult.Authorized);
        }