Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        protected override void Dispose(bool disposing)
        {
            if (disposing && !_disposed)
            {
                _disposed = true;

                if (_barionClient != null)
                {
                    _barionClient.Dispose();
                    _barionClient = null;
                }
            }

            base.Dispose(disposing);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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
            };
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 public BarionController(BarionClient barionClient, BarionSettings barionSettings)
 {
     _barionClient   = barionClient;
     _barionSettings = barionSettings;
 }
Esempio n. 14
0
        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}");
            }
        }