/// <summary>
        /// Registro de cargos recurrentes  Se registra una solicitud para generar un plan de cargos recurrentes. En la respuesta se proporcionará una dirección URL que lo llevará al sitio donde se le solicitará ingresar los datos de tarjeta a la que se aplicarán los cargos de acuerdo al plan seleccionado.&lt;br&gt; Nota: Debe considerar que para hacer uso de esta funcionalidad debe contar con un scope  especial
        /// </summary>
        /// <exception cref="MX.Wire4.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Información de la solicitud para aplicar cargos recurrentes</param>
        /// <param name="authorization">Header para token</param>
        /// <returns>Task of ConfirmRecurringCharge</returns>
        public async System.Threading.Tasks.Task <ConfirmRecurringCharge> RegisterRecurringChargeUsingPOSTAsync(RecurringChargeRequest body, string authorization)
        {
            ApiResponse <ConfirmRecurringCharge> localVarResponse = await RegisterRecurringChargeUsingPOSTAsyncWithHttpInfo(body, authorization);

            return(localVarResponse.Data);
        }
        /// <summary>
        /// Registro de cargos recurrentes  Se registra una solicitud para generar un plan de cargos recurrentes. En la respuesta se proporcionará una dirección URL que lo llevará al sitio donde se le solicitará ingresar los datos de tarjeta a la que se aplicarán los cargos de acuerdo al plan seleccionado.&lt;br&gt; Nota: Debe considerar que para hacer uso de esta funcionalidad debe contar con un scope  especial
        /// </summary>
        /// <exception cref="MX.Wire4.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Información de la solicitud para aplicar cargos recurrentes</param>
        /// <param name="authorization">Header para token</param>
        /// <returns>Task of ApiResponse (ConfirmRecurringCharge)</returns>
        public async System.Threading.Tasks.Task <ApiResponse <ConfirmRecurringCharge> > RegisterRecurringChargeUsingPOSTAsyncWithHttpInfo(RecurringChargeRequest body, string authorization)
        {
            // verify the required parameter 'body' is set
            if (body == null)
            {
                throw new ApiException(400, "Missing required parameter 'body' when calling CargosRecurrentesApi->RegisterRecurringChargeUsingPOST");
            }
            // verify the required parameter 'authorization' is set
            if (authorization == null)
            {
                throw new ApiException(400, "Missing required parameter 'authorization' when calling CargosRecurrentesApi->RegisterRecurringChargeUsingPOST");
            }

            var    localVarPath         = "/recurring-charge";
            var    localVarPathParams   = new Dictionary <String, String>();
            var    localVarQueryParams  = new List <KeyValuePair <String, String> >();
            var    localVarHeaderParams = new Dictionary <String, String>(this.Configuration.DefaultHeader);
            var    localVarFormParams   = new Dictionary <String, String>();
            var    localVarFileParams   = new Dictionary <String, FileParameter>();
            Object localVarPostBody     = null;

            // to determine the Content-Type header
            String[] localVarHttpContentTypes = new String[] {
                "application/json"
            };
            String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes);

            // to determine the Accept header
            String[] localVarHttpHeaderAccepts = new String[] {
                "application/json"
            };
            String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts);

            if (localVarHttpHeaderAccept != null)
            {
                localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept);
            }

            if (authorization != null)
            {
                localVarHeaderParams.Add("Authorization", this.Configuration.ApiClient.ParameterToString(authorization));                        // header parameter
            }
            if (body != null && body.GetType() != typeof(byte[]))
            {
                localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter
            }
            else
            {
                localVarPostBody = body; // byte array
            }

            // make the HTTP request
            IRestResponse localVarResponse = (IRestResponse)await this.Configuration.ApiClient.CallApiAsync(localVarPath,
                                                                                                            Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams,
                                                                                                            localVarPathParams, localVarHttpContentType);

            int localVarStatusCode = (int)localVarResponse.StatusCode;

            if (ExceptionFactory != null)
            {
                Exception exception = ExceptionFactory("RegisterRecurringChargeUsingPOST", localVarResponse);
                if (exception != null)
                {
                    throw exception;
                }
            }

            return(new ApiResponse <ConfirmRecurringCharge>(localVarStatusCode,
                                                            localVarResponse.Headers.ToDictionary(x => x.Name, x => string.Join(",", x.Value)),
                                                            (ConfirmRecurringCharge)this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConfirmRecurringCharge))));
        }
        /// <summary>
        /// Registro de cargos recurrentes  Se registra una solicitud para generar un plan de cargos recurrentes. En la respuesta se proporcionará una dirección URL que lo llevará al sitio donde se le solicitará ingresar los datos de tarjeta a la que se aplicarán los cargos de acuerdo al plan seleccionado.&lt;br&gt; Nota: Debe considerar que para hacer uso de esta funcionalidad debe contar con un scope  especial
        /// </summary>
        /// <exception cref="MX.Wire4.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Información de la solicitud para aplicar cargos recurrentes</param>
        /// <param name="authorization">Header para token</param>
        /// <returns>ConfirmRecurringCharge</returns>
        public ConfirmRecurringCharge RegisterRecurringChargeUsingPOST(RecurringChargeRequest body, string authorization)
        {
            ApiResponse <ConfirmRecurringCharge> localVarResponse = RegisterRecurringChargeUsingPOSTWithHttpInfo(body, authorization);

            return(localVarResponse.Data);
        }