public async Task <string> Pay(Transaction transaction) { if (transaction == null) { throw new ArgumentNullException(nameof(transaction)); } PaymentState paymentResult = await _bankClientService.PostAsync(_transactionMapper.Map(transaction)); string paymentId = Guid.NewGuid().ToString(); TransactionResult result = _transactionResultMapper.Map(paymentResult, transaction); result.PaymentId = paymentId; await _transactionResultRepository.InsertTransaction(result); return(paymentId); }