public void AuthorizeTransaction(string account, string currency, int amount) { var paymentTransaction = _paymentTransactionRepository.GetPaymentTransaction(Guid.NewGuid().ToString()); paymentTransaction.AuthorizeTransaction(account, currency, amount); _paymentTransactionRepository.Save(paymentTransaction); }
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)); }