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