/// <summary>
        /// Gerencia uma transação de cartão de crédito específica
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="orderKey">Chave do pedido</param>
        /// <param name="manageCreditCardTransaction">Dados da transação que será gerenciada</param>
        /// <returns></returns>
        public HttpResponse <ManageSaleResponse> Manage(ManageOperationEnum manageOperation, Guid orderKey, ManageCreditCardTransaction manageCreditCardTransaction)
        {
            Collection <ManageCreditCardTransaction> manageCreditCardTransactionCollection = new Collection <ManageCreditCardTransaction>();

            manageCreditCardTransactionCollection.Add(manageCreditCardTransaction);

            return(this.Manage(manageOperation, orderKey, manageCreditCardTransactionCollection));
        }
        /// <summary>
        /// Gerencia uma venda
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="orderKey">Chave do pedido</param>
        /// <returns></returns>
        public HttpResponse <ManageSaleResponse> Manage(ManageOperationEnum manageOperation, Guid orderKey)
        {
            ManageSaleRequest manageSaleRequest = new ManageSaleRequest();

            manageSaleRequest.OrderKey = orderKey;

            return(this.Manage(manageOperation, manageSaleRequest));
        }
        /// <summary>
        /// Gerencia uma coleção de transações de cartão de crédito.
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="orderKey">Chave do pedido</param>
        /// <param name="manageCreditCardTransactionCollection">Coleção de transações que serão gerenciadas</param>
        /// <returns></returns>
        public HttpResponse <ManageSaleResponse> Manage(ManageOperationEnum manageOperation, Guid orderKey, Collection <ManageCreditCardTransaction> manageCreditCardTransactionCollection)
        {
            ManageSaleRequest manageSaleRequest = new ManageSaleRequest();

            manageSaleRequest.OrderKey = orderKey;
            manageSaleRequest.CreditCardTransactionCollection = manageCreditCardTransactionCollection;

            return(this.Manage(manageOperation, manageSaleRequest));
        }
        /// <summary>
        /// Gerencia uam venda
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="manageSaleRequest">Dados da venda</param>
        /// <returns></returns>
        public HttpResponse <ManageSaleResponse> Manage(ManageOperationEnum manageOperation, ManageSaleRequest manageSaleRequest)
        {
            // Configura o action que será utilizado
            string actionName = manageOperation.ToString();

            // Configura MerchantKey e o header
            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            // Envia requisição
            return(this.HttpUtility.SubmitRequest <ManageSaleRequest, ManageSaleResponse>(manageSaleRequest,
                                                                                          string.Concat(this.HostUri, this.ResourceName, "/", actionName), HttpVerbEnum.Post, HttpContentTypeEnum.Json, headers));
        }
        /// <summary>
        /// Gerencia uma transação de cartão de crédito específica
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="orderKey">Chave do pedido</param>
        /// <param name="manageCreditCardTransaction">Dados da transação que será gerenciada</param>
        /// <returns></returns>
        public HttpResponse<ManageSaleResponse> Manage(ManageOperationEnum manageOperation, Guid orderKey, ManageCreditCardTransaction manageCreditCardTransaction) {

            Collection<ManageCreditCardTransaction> manageCreditCardTransactionCollection = new Collection<ManageCreditCardTransaction>();
            manageCreditCardTransactionCollection.Add(manageCreditCardTransaction);

            return this.Manage(manageOperation, orderKey, manageCreditCardTransactionCollection);
        }
        /// <summary>
        /// Gerencia uma coleção de transações de cartão de crédito.
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="orderKey">Chave do pedido</param>
        /// <param name="manageCreditCardTransactionCollection">Coleção de transações que serão gerenciadas</param>
        /// <returns></returns>
        public HttpResponse<ManageSaleResponse> Manage(ManageOperationEnum manageOperation, Guid orderKey, Collection<ManageCreditCardTransaction> manageCreditCardTransactionCollection) {

            ManageSaleRequest manageSaleRequest = new ManageSaleRequest();
            manageSaleRequest.OrderKey = orderKey;
            manageSaleRequest.CreditCardTransactionCollection = manageCreditCardTransactionCollection;

            return this.Manage(manageOperation, manageSaleRequest);
        }
        /// <summary>
        /// Gerencia uma venda
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="orderKey">Chave do pedido</param>
        /// <returns></returns>
        public HttpResponse<ManageSaleResponse> Manage(ManageOperationEnum manageOperation, Guid orderKey) {

            ManageSaleRequest manageSaleRequest = new ManageSaleRequest();
            manageSaleRequest.OrderKey = orderKey;

            return this.Manage(manageOperation, manageSaleRequest);
        }
        /// <summary>
        /// Gerencia uam venda
        /// </summary>
        /// <param name="manageOperation">Operação que deverá ser executada (captura ou cancelamento)</param>
        /// <param name="manageSaleRequest">Dados da venda</param>
        /// <returns></returns>
        public HttpResponse<ManageSaleResponse> Manage(ManageOperationEnum manageOperation, ManageSaleRequest manageSaleRequest) {

            // Configura o action que será utilizado
            string actionName = manageOperation.ToString();

            // Configura MerchantKey e o header
            NameValueCollection headers = this.GetHeaders();
            headers.Add("MerchantKey", this.MerchantKey.ToString());

            // Envia requisição
            return this.HttpUtility.SubmitRequest<ManageSaleRequest, ManageSaleResponse>(manageSaleRequest,
                string.Concat(this.HostUri, this.ResourceName, "/", actionName), HttpVerbEnum.Post, HttpContentTypeEnum.Json, headers);
        }