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