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