public void given_json_response_with_error_from_punto_pago_when_call_json_serializer_then_return_transaction_response_dto_with_error()
        {
            const string json = "{\"respuesta\":\"99\",\"token\":\"9XJ08401WN0071839\",\"trx_id\":\"9787415132\"}";
            _configuration.Setup(x => x.GetProcessTransactionUrl()).Returns("/url");
            var transactionResponseDto = new CreateTransactionResponseDto(JsonSerializerService.DeserializeFromString(json), _configuration.Object);

            Assert.AreEqual("9XJ08401WN0071839", transactionResponseDto.Token);
            Assert.AreEqual(9787415132, transactionResponseDto.TransactionId);
            Assert.IsTrue(transactionResponseDto.WithError);
            Assert.IsNull(transactionResponseDto.PaymentMethod);
            Assert.IsNull(transactionResponseDto.Currency);
            Assert.IsNullOrEmpty(transactionResponseDto.ErrorMessage);
            Assert.AreEqual("/url/9XJ08401WN0071839", transactionResponseDto.ProcessUrl);
        }
        /// <summary>
        /// Create the transaction in puntopago
        /// </summary>
        /// <param name="transactionDto">Data for the token that begins the payment process.</param>
        /// <returns>CreateTransactionResponseDto with contains the Token and Url for the payment process</returns>
        public CreateTransactionResponseDto CreateTransaction(CreateTransactionRequestDto transactionDto)
        {
            _logger.Debug(string.Format("Call to Create Transaction for TransactionId: {0}, and amount: {1}", transactionDto.TransactionId, transactionDto.Currency));
            var dateNow = DateTime.UtcNow;
            var message = string.Format("{0}{1}{2}{1}{3}{1}{4}", _configuration.GetCreateTransactionFunction(), "\n",
                                        transactionDto.TransactionId, transactionDto.Currency, dateNow.ToString("r"));
            _logger.Debug(string.Format("Generate message {0}, for PuntoPago", message));

            var authorization = _authorization.GetAuthorizationHeader(message);

            var response = _webExecute.Execute(_configuration.GetCreateTransactionUrl(), "POST", transactionDto.GetJson(), authorization, dateNow);
            _logger.Debug("End create transaction, start CreateTransactionResponseDto");

            var createTransactionResponseDto = new CreateTransactionResponseDto(response, _configuration);
            _logger.Info(string.Format("Create new Transaction for TransactionId: {0} with Token: {1}",
                                       createTransactionResponseDto.TransactionId, createTransactionResponseDto.Token));
            return createTransactionResponseDto;
        }