public static CaptureOperationResult CapturePayment(BarionClient barionClient, GetPaymentStateOperationResult beforeFinishReservationState) { var capturePayment = new CaptureOperation { PaymentId = beforeFinishReservationState.PaymentId }; var transactionToCapture = new TransactionToFinish { TransactionId = beforeFinishReservationState.Transactions .Single(t => t.POSTransactionId == POSTransactionId).TransactionId, Total = 500 }; capturePayment.Transactions = new[] { transactionToCapture }; Console.WriteLine("Sending Capture..."); var captureResult = barionClient.ExecuteAsync <CaptureOperationResult>(capturePayment).Result; if (!captureResult.IsOperationSuccessful) { throw new Exception("Capture operation was not successful."); } return(captureResult); }
public void ImmediatePayment() { var barionClient = new BarionClient(_settings); var paymentResult = Operations.StartPayment(barionClient, _settings, PaymentType.Immediate); BrowserScriptRunner.RunPaymentScript(paymentResult); GetPaymentStateOperationResult statusresult = Operations.GetPaymentState(barionClient, paymentResult); Assert.Equal(PaymentStatus.Succeeded, statusresult.Status); }
public static StartPaymentOperationResult StartPayment(BarionClient barionClient, BarionSettings settings, PaymentType paymentType, TimeSpan?reservationPeriod = null, bool initiateRecurrence = false, string recurrenceId = null) { var startPaymentOperation = new StartPaymentOperation { GuestCheckOut = true, PaymentType = paymentType, ReservationPeriod = reservationPeriod, FundingSources = new[] { FundingSourceType.All }, PaymentRequestId = "P1", OrderNumber = "1_0", Currency = Currency.EUR, CallbackUrl = "http://index.sk", Locale = CultureInfo.CurrentCulture, RedirectUrl = "http://index.sk", InitiateRecurrence = initiateRecurrence, RecurrenceId = recurrenceId }; var transaction = new PaymentTransaction { Payee = settings.Payee, POSTransactionId = POSTransactionId, Total = new decimal(1000), Comment = "comment" }; var item = new Item { Name = "Test", Description = "Test", ItemTotal = new decimal(1000), Quantity = 1, Unit = "piece", UnitPrice = new decimal(1000), SKU = "SKU" }; transaction.Items = new[] { item }; startPaymentOperation.Transactions = new[] { transaction }; Console.WriteLine("Sending StartPayment..."); var result = barionClient.ExecuteAsync <StartPaymentOperationResult>(startPaymentOperation).Result; if (!result.IsOperationSuccessful) { throw new Exception("Start payment operation was not successful."); } return(result); }
public void Recurring() { var barionClient = new BarionClient(_settings); var paymentResult = Operations.StartPayment(barionClient, _settings, PaymentType.Immediate, initiateRecurrence: true, recurrenceId: "R"); BrowserScriptRunner.RunPaymentScript(paymentResult); Assert.Equal(RecurrenceResult.Successful, paymentResult.RecurrenceResult); var paymentResult2 = Operations.StartPayment(barionClient, _settings, PaymentType.Immediate, initiateRecurrence: false, recurrenceId: "R"); Assert.Equal(PaymentStatus.Succeeded, paymentResult2.Status); }
protected override void Dispose(bool disposing) { if (disposing && !_disposed) { _disposed = true; if (_barionClient != null) { _barionClient.Dispose(); _barionClient = null; } } base.Dispose(disposing); }
public static GetPaymentStateOperationResult GetPaymentState(BarionClient barionClient, StartPaymentOperationResult result) { var paymentStateOperation = new GetPaymentStateOperation { PaymentId = result.PaymentId }; var statusresult = barionClient.ExecuteAsync <GetPaymentStateOperationResult>(paymentStateOperation).Result; if (!statusresult.IsOperationSuccessful) { throw new Exception("Get payment state operation was not successful."); } return(statusresult); }
public BarionClientTests() { _httpMessageHandler = new TestHttpMessageHandler(); _httpClient = new HttpClient(_httpMessageHandler); _retryPolicy = new TestRetryPolicy(); _barionClientSettings = new BarionSettings { BaseUrl = new Uri("https://api.barion.com"), POSKey = Guid.NewGuid() }; _barionClient = new BarionClient(_barionClientSettings, _httpClient) { RetryPolicy = _retryPolicy }; }
public void ReserveThenFinishReservation() { var barionClient = new BarionClient(_settings); var paymentResult = Operations.StartPayment(barionClient, _settings, PaymentType.Reservation, TimeSpan.FromDays(1)); BrowserScriptRunner.RunPaymentScript(paymentResult); GetPaymentStateOperationResult beforeFinishReservationState = Operations.GetPaymentState(barionClient, paymentResult); Assert.Equal(PaymentStatus.Reserved, beforeFinishReservationState.Status); var finishReservationResult = Operations.FinishReservation(barionClient, beforeFinishReservationState); Assert.Equal(PaymentStatus.Succeeded, finishReservationResult.Status); }
public void Capturing() { var barionClient = new BarionClient(_settings); var paymentResult = Operations.StartPayment(barionClient, _settings, PaymentType.DelayedCapture, TimeSpan.FromDays(1)); BrowserScriptRunner.RunPaymentScript(paymentResult); GetPaymentStateOperationResult beforeCaptureState = Operations.GetPaymentState(barionClient, paymentResult); Assert.Equal(PaymentStatus.Authorized, beforeCaptureState.Status); var captureResult = Operations.CapturePayment(barionClient, beforeCaptureState); Assert.Equal(PaymentStatus.Succeeded, captureResult.Status); }
public void Refund() { var barionClient = new BarionClient(_settings); var paymentResult = Operations.StartPayment(barionClient, _settings, PaymentType.Immediate); BrowserScriptRunner.RunPaymentScript(paymentResult); GetPaymentStateOperationResult beforeRefundState = Operations.GetPaymentState(barionClient, paymentResult); var refundResult = Operations.Refund(barionClient, paymentResult); Assert.Equal(1, refundResult.RefundedTransactions.Length); Assert.Equal("Succeeded", refundResult.RefundedTransactions[0].Status); GetPaymentStateOperationResult afterRefundState = Operations.GetPaymentState(barionClient, paymentResult); Assert.Equal(beforeRefundState.Total - refundResult.RefundedTransactions[0].Total, afterRefundState.Total); }
public static RefundOperationResult Refund(BarionClient barionClient, StartPaymentOperationResult result) { var refundOpertation = new RefundOperation(); refundOpertation.PaymentId = result.PaymentId; var transactionToRefund = new TransactionToRefund(); transactionToRefund.TransactionId = result.Transactions.Single(t => t.POSTransactionId == POSTransactionId).TransactionId; transactionToRefund.AmountToRefund = new decimal(50); refundOpertation.TransactionsToRefund = new[] { transactionToRefund }; Console.WriteLine("Sending Refund..."); var refundResult = barionClient.ExecuteAsync <RefundOperationResult>(refundOpertation).Result; if (!refundResult.IsOperationSuccessful) { throw new Exception("Refund operation was not successful"); } return(refundResult); }
public static FinishReservationOperationResult FinishReservation(BarionClient barionClient, GetPaymentStateOperationResult beforeFinishReservationState) { var finishReservation = new FinishReservationOperation(); finishReservation.PaymentId = beforeFinishReservationState.PaymentId; var transactionToFinish = new TransactionToFinish(); transactionToFinish.TransactionId = beforeFinishReservationState.Transactions.Single(t => t.POSTransactionId == POSTransactionId).TransactionId; transactionToFinish.Total = 500; finishReservation.Transactions = new[] { transactionToFinish }; Console.WriteLine("Sending FinishReservation..."); var finishReservationResult = barionClient.ExecuteAsync <FinishReservationOperationResult>(finishReservation).Result; if (!finishReservationResult.IsOperationSuccessful) { throw new Exception("Finish reservation operation was not successful."); } return(finishReservationResult); }
public BarionController(BarionClient barionClient, BarionSettings barionSettings) { _barionClient = barionClient; _barionSettings = barionSettings; }
public static void Run() { var settings = new BarionSettings { BaseUrl = new Uri(AppSettings.BarionBaseAddress), POSKey = Guid.Parse(AppSettings.BarionPOSKey), Payee = AppSettings.BarionPayee }; using (var barionClient = new BarionClient(settings)) { var startPaymentOperation = new StartPaymentOperation { GuestCheckOut = true, PaymentType = PaymentType.Reservation, ReservationPeriod = TimeSpan.FromDays(1), FundingSources = new[] { FundingSourceType.All }, PaymentRequestId = "P1", OrderNumber = "1_0", Currency = Currency.HUF, CallbackUrl = "http://index.hu", Locale = CultureInfo.CurrentCulture, RedirectUrl = "http://index.hu" }; var transaction = new PaymentTransaction { Payee = settings.Payee, POSTransactionId = "T1", Total = new decimal(1000), Comment = "comment" }; var item = new Item { Name = "Test", Description = "Test", ItemTotal = new decimal(1000), Quantity = 1, Unit = "piece", UnitPrice = new decimal(1000), SKU = "SKU" }; transaction.Items = new[] { item }; startPaymentOperation.Transactions = new[] { transaction }; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Sending StartPayment..."); var result = barionClient.ExecuteAsync <StartPaymentOperationResult>(startPaymentOperation).Result; Console.ResetColor(); Console.WriteLine("StartPayment result:"); if (result.IsOperationSuccessful) { Console.ForegroundColor = ConsoleColor.Green; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"\tSuccess: {result.IsOperationSuccessful}"); Console.WriteLine($"\tPaymentId: {result.PaymentId}"); Console.WriteLine($"\tStatus: {result.Status}"); Console.ResetColor(); Console.WriteLine(); Console.WriteLine("Starting the browser with the barion pay page."); System.Diagnostics.Process.Start(result.GatewayUrl); Console.WriteLine("Press any key to continue the flow..."); Console.ReadKey(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Sending GetPaymentState..."); var statusOperation = new GetPaymentStateOperation(); statusOperation.PaymentId = result.PaymentId; var result2 = barionClient.ExecuteAsync <GetPaymentStateOperationResult>(statusOperation).Result; Console.ResetColor(); Console.WriteLine("GetPaymentState result:"); if (result.IsOperationSuccessful) { Console.ForegroundColor = ConsoleColor.Green; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"\tSuccess: {result2.IsOperationSuccessful}"); Console.WriteLine($"\tPaymentId: {result2.PaymentId}"); Console.WriteLine($"\tStatus: {result2.Status}"); var finishReservation = new FinishReservationOperation(); finishReservation.PaymentId = result2.PaymentId; var transactionToFinish = new TransactionToFinish(); transactionToFinish.TransactionId = result2.Transactions.Single(t => t.POSTransactionId == "T1").TransactionId; transactionToFinish.Total = 500; finishReservation.Transactions = new[] { transactionToFinish }; Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Sending FinishReservation..."); var result3 = barionClient.ExecuteAsync <FinishReservationOperationResult>(finishReservation).Result; Console.ResetColor(); Console.WriteLine("FinishReservation result:"); if (result.IsOperationSuccessful) { Console.ForegroundColor = ConsoleColor.Green; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine($"\tSuscess: {result3.IsOperationSuccessful}"); Console.WriteLine($"\tPaymentId: {result3.PaymentId}"); Console.WriteLine($"\tStatus: {result3.Status}"); } }