public void AuthorizeTransaction(string account, string currency, int amount)
        {
            var paymentTransaction = _paymentTransactionRepository.GetPaymentTransaction(Guid.NewGuid().ToString());

            paymentTransaction.AuthorizeTransaction(account, currency, amount);
            _paymentTransactionRepository.Save(paymentTransaction);
        }
Example #2
0
        public async Task <PaymentResponse> Handle(MakeAPaymentRequest request, CancellationToken cancellationToken)
        {
            using (LogContext.PushProperty("transactionId", request.TransactionId))
            {
                await _validator.ValidateAndThrowAsync(request);

                var previousTransaction = await _repository.GetPaymentTransaction(request);

                if (previousTransaction != null)
                {
                    return(new PaymentResponse
                    {
                        TransactionSucessful = previousTransaction.TransactionSucessful,
                        TransactionId = previousTransaction.TransactionId,
                        Message = previousTransaction.BankTransactionMessage
                    });
                }

                var responseFromBank = await _bankPaymentAdapter.PayAsync(request);

                var transaction = request.ToPaymentTransaction(responseFromBank);

                await _repository.SaveAsync(transaction);

                return(new PaymentResponse
                {
                    TransactionSucessful = responseFromBank.TransactionSucessful,
                    TransactionId = request.TransactionId,
                    Message = responseFromBank.Message
                });
            }
        }
        public async Task <PaymentTransaction> Handle(GetTransactionRequest request, CancellationToken cancellationToken)
        {
            var transaction = await _repository.GetPaymentTransaction(request.TransactionId);

            return(transaction == null ?
                   transaction :
                   _masker.Mask(transaction));
        }