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 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 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); }
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 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 IActionResult PaymentCallback(string paymentId) { if (string.IsNullOrEmpty(paymentId)) { return(NotFound()); } var currentStoreSettings = _settingService.LoadSetting <BarionSettings>(_storeContext.ActiveStoreScopeConfiguration); var transactionSettings = _barionPaymentService.GetBarionClientSettings(currentStoreSettings); if (currentStoreSettings.LogPaymentProcess) { _logger.Information($"PaymentCallback was called with paymentId parameter : {paymentId}"); } var transaction = _transactionService.GetTransactionByPaymentId(paymentId); if (transaction == null) { return(NotFound()); } var order = _orderService.GetOrderById(transaction.OrderId); if (order == null) { return(NotFound()); } GetPaymentStateOperationResult paymentState = _barionPaymentService.GetPaymentState(transactionSettings, transaction); if (!paymentState.IsOperationSuccessful) { _logger.Error(Newtonsoft.Json.JsonConvert.SerializeObject(paymentState.Errors)); return(NotFound()); } // save transaction state transaction.PaymentStatus = paymentState.Status; _transactionService.Update(transaction); if (paymentState.Status == BarionClientLibrary.Operations.Common.PaymentStatus.Succeeded) { if (currentStoreSettings.MarkOrderCompletedAfterPaid) { _orderProcessingService.MarkOrderAsPaid(order); } else { // change order payment state order.PaymentStatus = Core.Domain.Payments.PaymentStatus.Paid; _orderService.UpdateOrder(order); } var eventData = new BarionTransactionDTO { OrderId = order.Id, OrderTotal = order.OrderTotal, PaymentId = transaction.PaymentId, PaymentStatus = (int)paymentState.Status }; _eventPublisher.Publish(new TransactionApprovedEvent(eventData)); } if (paymentState.Status == BarionClientLibrary.Operations.Common.PaymentStatus.Reserved) { order.PaymentStatus = Core.Domain.Payments.PaymentStatus.Authorized; order.OrderStatus = Core.Domain.Orders.OrderStatus.Processing; _orderService.UpdateOrder(order); } return(Ok()); }