public FinishReservationOperationResult VoidPayment(BarionClientLibrary.BarionSettings transactionSettings, BarionTransaction transaction, VoidPaymentRequest voidPaymentRequest)
        {
            var finishOpertation = new FinishReservationOperation();
            FinishReservationOperationResult finishOperatioResult = null;

            finishOpertation.PaymentId = Guid.Parse(transaction.PaymentId);

            var transactionToFinish = new TransactionToFinish();

            transactionToFinish.TransactionId = Guid.Parse(transaction.TransactionId);
            transactionToFinish.Total         = 0;

            finishOpertation.Transactions = new[] { transactionToFinish };

            using (var api = GetApiClient(transactionSettings))
            {
                finishOperatioResult = api.ExecuteAsync <FinishReservationOperationResult>(finishOpertation).Result;
            }

            if (!finishOperatioResult.IsOperationSuccessful)
            {
                throw new Exception("FinishReservation operation was not successful");
            }

            _logger.Information(_localizationService.GetResource("Barion.Void.Successful") + $" {voidPaymentRequest.Order.Id} ");

            return(finishOperatioResult);
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the BarionClientLibrary.BarionClient class.
        /// </summary>
        /// <param name="settings">Barion specific settings.</param>
        /// <param name="httpClient">HttpClient instance to use for sending HTTP requests.</param>
        public BarionClient(BarionSettings settings, HttpClient httpClient)
        {
            if (httpClient == null)
            {
                throw new ArgumentNullException(nameof(httpClient));
            }

#if NET45
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
#endif

            _httpClient = httpClient;

            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            if (settings.BaseUrl == null)
            {
                throw new ArgumentNullException(nameof(settings.BaseUrl));
            }

            if (!settings.BaseUrl.IsAbsoluteUri)
            {
                throw new ArgumentException($"BaseUrl must be an absolute Uri. Actual value: {settings.BaseUrl}", nameof(settings.BaseUrl));
            }

            _settings = settings;

            _retryPolicy = new ExponentialRetry();

            _timeout = DefaultTimeout;
        }
        public RefundOperationResult RefundPayment(BarionClientLibrary.BarionSettings transactionSettings, Domain.BarionTransaction transaction, RefundPaymentRequest refundPaymentRequest)
        {
            var refundOpertation = new RefundOperation();
            RefundOperationResult refundResult = null;

            refundOpertation.PaymentId = Guid.Parse(transaction.PaymentId);

            var transactionToRefund = new TransactionToRefund();

            transactionToRefund.TransactionId     = Guid.Parse(transaction.TransactionId);
            transactionToRefund.AmountToRefund    = refundPaymentRequest.AmountToRefund;
            refundOpertation.TransactionsToRefund = new[] { transactionToRefund };

            using (var api = GetApiClient(transactionSettings))
            {
                refundResult = api.ExecuteAsync <RefundOperationResult>(refundOpertation).Result;
            }

            if (!refundResult.IsOperationSuccessful)
            {
                throw new Exception("Refund operation was not successful");
            }

            _logger.Information(_localizationService.GetResource("Barion.Refund.Successful") + $"{refundPaymentRequest.Order.Id} ({refundPaymentRequest.AmountToRefund})");

            return(refundResult);
        }
        public GetPaymentStateOperationResult GetPaymentState(BarionClientLibrary.BarionSettings transactionSettings, BarionTransaction transaction)
        {
            GetPaymentStateOperationResult statusresult = null;

            var paymentStateOperation = new GetPaymentStateOperation
            {
                PaymentId = Guid.Parse(transaction.PaymentId)
            };

            using (var api = GetApiClient(transactionSettings))
            {
                statusresult = api.ExecuteAsync <GetPaymentStateOperationResult>(paymentStateOperation).Result;
            }

            if (!statusresult.IsOperationSuccessful)
            {
                throw new Exception("Get payment state operation was not successful.");
            }

            return(statusresult);
        }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the BarionClientLibrary.BarionClient class.
 /// </summary>
 /// <param name="settings">Barion specific settings.</param>
 public BarionClient(BarionSettings settings) : this(settings, new HttpClient())
 {
 }
 private BarionClientLibrary.BarionClient GetApiClient(BarionClientLibrary.BarionSettings settings)
 {
     return(new BarionClient(settings));
 }
        public StartPaymentOperationResult InitPayment(BarionClientLibrary.BarionSettings transactionSettings, BarionSettings storeSetting, Order order)
        {
            /// init barion api client
            using (var api = GetApiClient(transactionSettings))
            {
                if (storeSetting.LogPaymentProcess)
                {
                    _logger.Information($"Initialize payment client for Order {order.CustomOrderNumber}");
                }

                var startPaymentOperation = PreparePaymentOperation(order, storeSetting);

                if (storeSetting.LogPaymentProcess)
                {
                    _logger.Information($"Payment method was Initialized for Order {order.CustomOrderNumber}");
                }

                var transaction = new PaymentTransaction
                {
                    Payee            = storeSetting.BarionPayee,
                    POSTransactionId = Guid.NewGuid().ToString(),
                    Total            = order.OrderTotal,
                    Comment          = string.Format(_localizationService.GetResource("Barion.Order.Comment"), order.CustomOrderNumber)
                };


                if (storeSetting.LogPaymentProcess)
                {
                    _logger.Information($"Start preparing transaction for Order {order.CustomOrderNumber}");
                }

                BarionClientLibrary.Operations.Common.Item[] orderItems = prepareTransactionOrderItems(order);

                transaction.Items = orderItems;
                startPaymentOperation.Transactions = new[] { transaction };

                if (storeSetting.LogPaymentProcess)
                {
                    _logger.Information($"Transaction was initialized for Order {order.CustomOrderNumber}");
                }

                var result = api.ExecuteAsync <StartPaymentOperationResult>(startPaymentOperation).GetAwaiter().GetResult();

                if (storeSetting.LogPaymentProcess)
                {
                    _logger.Information($"Payment was initialized on Barion API for order {order.CustomOrderNumber}");
                }

                if (result.IsOperationSuccessful)
                {
                    return(result);
                }
                else
                {
                    if (result != null && result.Errors.Count() > 0)
                    {
                        throw new Exceptions.BarionOperationResultException(_localizationService.GetResource("Barion.Order.Comment"), result.Errors.ToList());
                    }
                }
            }

            return(null);
        }