예제 #1
0
        public ClsFEXAuthRequest ObtenerTicketFex()
        {
            LoginTicket loginTicket = new LoginTicket();

            loginTicket.ObtenerLoginTicketResponse(this.idServicioNegocioFex, this.certSigner, false, this.storeName, this.storeLocation);

            ClsFEXAuthRequest feAuthRequest = new ClsFEXAuthRequest();

            feAuthRequest.Cuit  = Convert.ToInt64(this.cuit);
            feAuthRequest.Sign  = loginTicket.Sign;
            feAuthRequest.Token = loginTicket.Token;

            return(feAuthRequest);
        }
예제 #2
0
        private static void GetTiposMonedas()
        {
            //string certSigner = @"C:\Diego\Proyectos\FacturaElect\Afip - Ejemplos Codigo\FeCertificadoDesarrollo\certificadoAFIP.crt";
            string      certSigner    = @"C=AR, O=ENDESA, SERIALNUMBER=CUIT 23289508759, CN=TestFE";
            LoginTicket loginTicket   = new LoginTicket();
            string      ticketReponse = loginTicket.ObtenerLoginTicketResponse(DEFAULT_SERVICIO, certSigner, false, StoreName.TrustedPeople, StoreLocation.CurrentUser);

            string        cuit          = "23289508759";
            FEAuthRequest feAuthRequest = new FEAuthRequest();

            feAuthRequest.Cuit  = Convert.ToInt64(cuit);
            feAuthRequest.Sign  = loginTicket.Sign;
            feAuthRequest.Token = loginTicket.Token;

            Console.WriteLine("***Llamando al GetTiposMoneda en URL");
            WsfeClient client = new WsfeClient();

            FacturaElectronica.Afip.Ws.Wsfe.MonedaResponse result = client.GetTiposMonedas(feAuthRequest);
            Console.WriteLine("Result");
            foreach (var item in result.ResultGet)
            {
                Console.WriteLine("item Id: " + item.Id + " Desc: " + item.Desc);
            }
        }
        /// <summary>
        /// Funcion Main (consola)
        /// </summary>
        /// <param name="args">Argumentos de linea de comandos</param>
        /// <returns>0 si terminó bien, valores negativos si hubieron errores</returns>
        /// <remarks></remarks>
        public static int Main(string[] args)
        {
            MostrarVersion();

            string strUrlWsaaWsdl       = DEFAULT_URLWSAAWSDL;
            string strUrlWsfeWsdl       = DEFAULT_URLWSFEWSDL;
            string strIdServicioNegocio = DEFAULT_SERVICIO;
            string strRutaCertSigner    = DEFAULT_CERTSIGNER;
            string strPassword          = null;
            long   longCuit             = DEFAULT_CUIT;
            int    cbteTipo             = DEFAULT_CBTETIPO;
            int    ptoVta         = DEFAULT_PTOVTA;
            string strSalida      = DEFAULT_ARCHIVOSALIDA;
            bool   blnVerboseMode = DEFAULT_VERBOSE;

            // Analizo argumentos de linea de comandos
            if (args.Length == 0)
            {
                explicarUso();
                return(-1);
            }
            for (int i = 0; i <= args.Length - 1; i++)
            {
                string argumento;
                argumento = args[i];

                if (String.Compare(argumento, "-w", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsaaWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-x", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsfeWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-s", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el ID del servicio de negocio");
                        return(-1);
                    }
                    else
                    {
                        strIdServicioNegocio = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-c", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó ruta del certificado firmante");
                        return(-1);
                    }
                    else
                    {
                        strRutaCertSigner = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-p") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el password");
                        return(-1);
                    }
                    else
                    {
                        strPassword = args[i + 1];
                        i           = i + 1;
                    }
                }
                else if (String.Compare(argumento, "-t") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el CUIT");
                        return(-1);
                    }
                    else
                    {
                        longCuit = long.Parse(args[i + 1]);
                        i        = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-T") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el ComprobanteTipo (int)");
                        return(-1);
                    }
                    else
                    {
                        cbteTipo = int.Parse(args[i + 1]);
                        i        = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-P") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el Punto de Venta (int)");
                        return(-1);
                    }
                    else
                    {
                        ptoVta = int.Parse(args[i + 1]);
                        i      = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-o", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el archivo de salida");
                        return(-1);
                    }
                    else
                    {
                        strSalida = args[i + 1];
                        i         = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-v", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó modo: on|off");
                        return(-1);
                    }
                    else
                    {
                        blnVerboseMode = (String.Compare(args[i + 1], "on", true) == 0 ? true : false);
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-?", true) == 0)
                {
                    explicarUso();
                    return(0);
                }
                else
                {
                    Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

                    Console.WriteLine("Error: argumento desconocido: {0}", argumento);
                    Console.WriteLine("Para obtener ayuda: {0} -?", MyApplication.Info.AssemblyName);
                    return(-2);
                }
            }

            // Argumentos OK, entonces procesar normalmente...
            LoginTicket objTicketRespuesta;
            string      strTicketRespuesta;

            try
            {
                if (blnVerboseMode)
                {
                    Console.WriteLine("***Servicio a acceder: {0}", strIdServicioNegocio);
                    Console.WriteLine("***URL del WSAA: {0}", strUrlWsaaWsdl);
                    Console.WriteLine("***URL del WSFE: {0}", strUrlWsfeWsdl);
                    Console.WriteLine("***Ruta del certificado: {0}", strRutaCertSigner);
                    Console.WriteLine("***Password del certificado: {0}", (strPassword == null ? "-NO PASSWD-" : "*****"));
                    Console.WriteLine("***Comprobante Tipo: {0}", cbteTipo);
                    Console.WriteLine("***Punto de venta: {0}", ptoVta);
                    Console.WriteLine("***Archivo de salida: {0}", strSalida);
                    Console.WriteLine("***Nro de CUIT en certificado: {0}", longCuit);
                    Console.WriteLine("***Modo verbose: {0}", blnVerboseMode);
                }


                objTicketRespuesta = new LoginTicket();

                if (blnVerboseMode)
                {
                    Console.WriteLine("***Accediendo a {0}", strUrlWsaaWsdl);
                }

                strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strUrlWsaaWsdl, strRutaCertSigner, strPassword, blnVerboseMode);

                if (blnVerboseMode)
                {
                    Console.WriteLine("***CONTENIDO DEL TICKET RESPUESTA:");
                    Console.WriteLine(" Token: {0}", objTicketRespuesta.Token);
                    Console.WriteLine(" Sign: {0}", objTicketRespuesta.Sign);
                    Console.WriteLine(" GenerationTime: {0}", Convert.ToString(objTicketRespuesta.GenerationTime));
                    Console.WriteLine(" ExpirationTime: {0}", Convert.ToString(objTicketRespuesta.ExpirationTime));
                    Console.WriteLine(" Service: {0}", objTicketRespuesta.Service);
                    Console.WriteLine(" UniqueID: {0}", Convert.ToString(objTicketRespuesta.UniqueId));
                }
            }
            catch (Exception excepcionAlObtenerTicket)
            {
                Console.WriteLine("***EXCEPCION AL OBTENER TICKET:");
                Console.WriteLine(excepcionAlObtenerTicket.Message);
                return(-10);
            }

            WsfeFECompUltimoAutorizado wsfeFECompUltimoAutorizado = new WsfeFECompUltimoAutorizado(strUrlWsfeWsdl, objTicketRespuesta.Token, objTicketRespuesta.Sign);

            wsfeFECompUltimoAutorizado.verbose = blnVerboseMode;
            return(wsfeFECompUltimoAutorizado.send(longCuit, cbteTipo, ptoVta, strSalida));
        }
예제 #4
0
        /// <summary>
        /// Funcion Main (consola)
        /// </summary>
        /// <param name="args">Argumentos de linea de comandos</param>
        /// <returns>0 si terminó bien, valores negativos si hubieron errores</returns>
        /// <remarks></remarks>
        public static int Main(string[] args)
        {
            MostrarVersion();

            string strUrlWsaaWsdl       = DEFAULT_URLWSAAWSDL;
            string strUrlWsfeWsdl       = DEFAULT_URLWSFEWSDL;
            string strIdServicioNegocio = DEFAULT_SERVICIO;
            string strRutaCertSigner    = DEFAULT_CERTSIGNER;
            string strPassword          = null;
            long   longCuit             = DEFAULT_CUIT;
            string strFactura           = DEFAULT_ARCHIVOFACTURA;
            string strSalida            = DEFAULT_ARCHIVOSALIDA;
            bool   blnVerboseMode       = DEFAULT_VERBOSE;

            // Analizo argumentos de linea de comandos
            if (args.Length == 0)
            {
                explicarUso();
                return(-1);
            }
            for (int i = 0; i <= args.Length - 1; i++)
            {
                string argumento;
                argumento = args[i];

                if (String.Compare(argumento, "-w", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsaaWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-x", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsfeWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-s", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el ID del servicio de negocio");
                        return(-1);
                    }
                    else
                    {
                        strIdServicioNegocio = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-c", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó ruta del certificado firmante");
                        return(-1);
                    }
                    else
                    {
                        strRutaCertSigner = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-p", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el password");
                        return(-1);
                    }
                    else
                    {
                        strPassword = args[i + 1];
                        i           = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-t", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el CUIT");
                        return(-1);
                    }
                    else
                    {
                        longCuit = long.Parse(args[i + 1]);
                        i        = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-f", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el archivo de entrada");
                        return(-1);
                    }
                    else
                    {
                        strFactura = args[i + 1];
                        i          = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-o", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el archivo de salida");
                        return(-1);
                    }
                    else
                    {
                        strSalida = args[i + 1];
                        i         = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-v", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó modo: on|off");
                        return(-1);
                    }
                    else
                    {
                        blnVerboseMode = (String.Compare(args[i + 1], "on", true) == 0 ? true : false);
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-?", true) == 0)
                {
                    explicarUso();
                    return(0);
                }
                else
                {
                    Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

                    Console.WriteLine("Error: argumento desconocido: {0}", argumento);
                    Console.WriteLine("Para obtener ayuda: {0} -?", MyApplication.Info.AssemblyName);
                    return(-2);
                }
            }
            if (isMissingParameter(longCuit))
            {
                return(-3);
            }

            //var x = new WsfeSolicitud("xxx", "token", "bla");
            //x.pruebas(12345678, "lalala.xml", "lalala.xml");
            // return 1;



            // Argumentos OK, entonces procesar normalmente...
            LoginTicket objTicketRespuesta;
            string      strTicketRespuesta;

            try
            {
                if (blnVerboseMode)
                {
                    Console.WriteLine("***Servicio a acceder: {0}", strIdServicioNegocio);
                    Console.WriteLine("***URL del WSAA: {0}", strUrlWsaaWsdl);
                    Console.WriteLine("***URL del WSFE: {0}", strUrlWsfeWsdl);
                    Console.WriteLine("***Ruta del certificado: {0}", strRutaCertSigner);
                    Console.WriteLine("***Password del certificado: {0}", (strPassword == null ? "-NO PASSWD-" : "*****"));
                    Console.WriteLine("***Archivo de factura: {0}", strFactura);
                    Console.WriteLine("***Archivo de salida: {0}", strSalida);
                    Console.WriteLine("***Nro de CUIT en certificado: {0}", longCuit);
                    Console.WriteLine("***Modo verbose: {0}", blnVerboseMode);
                    Console.WriteLine(" CWD: {0}", AppDomain.CurrentDomain.BaseDirectory);
                }


                objTicketRespuesta = new LoginTicket();

                if (blnVerboseMode)
                {
                    Console.WriteLine("***Accediendo a {0}", strUrlWsaaWsdl);
                }

                strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strUrlWsaaWsdl, strRutaCertSigner, strPassword, blnVerboseMode);

                if (blnVerboseMode)
                {
                    Console.WriteLine("***CONTENIDO DEL TICKET RESPUESTA:");
                    Console.WriteLine(" Token: {0}", objTicketRespuesta.Token);
                    Console.WriteLine(" Sign: {0}", objTicketRespuesta.Sign);
                    Console.WriteLine(" GenerationTime: {0}", Convert.ToString(objTicketRespuesta.GenerationTime));
                    Console.WriteLine(" ExpirationTime: {0}", Convert.ToString(objTicketRespuesta.ExpirationTime));
                    Console.WriteLine(" Service: {0}", objTicketRespuesta.Service);
                    Console.WriteLine(" UniqueID: {0}", Convert.ToString(objTicketRespuesta.UniqueId));
                }
            }
            catch (Exception excepcionAlObtenerTicket)
            {
                Console.WriteLine("***EXCEPCION AL OBTENER TICKET:");
                Console.WriteLine(excepcionAlObtenerTicket.Message);
                return(-10);
            }

            WsfeSolicitud wsfeSolicitud = new WsfeSolicitud(strUrlWsfeWsdl, objTicketRespuesta.Token, objTicketRespuesta.Sign);

            wsfeSolicitud.verbose = blnVerboseMode;
            return(wsfeSolicitud.send(longCuit, strFactura, strSalida));
        }
예제 #5
0
        /// <summary>
        /// Obtiene el Ticket de Acceso
        ///     Si esta vigente lo otiene de la ubicación establecida
        ///     Si no esta vigente lo obtiene del Web Service de AFIP
        /// </summary>
        /// <param name="ubicacion_TA">Ubicación del archivo local</param>
        /// <param name="strIdServicioNegocio">servicio al que se desea acceder</param>
        /// <param name="strUrlWsaaWsdl">URL del WSAA</param>
        /// <param name="strRutaCertSigner">Ruta del certificado X509 (con clave privada) usado para firmar</param>
        /// <param name="strPasswordSecureString">Password del certificado X509 (con clave privada) usado para firmar</param>
        /// <param name="strProxy">IP:port del proxy</param>
        /// <param name="strProxyUser">Usuario del proxy</param>
        /// <param name="strProxyPassword">Password del proxy</param>
        /// <param name="blnVerboseMode">Nivel detallado de descripcion? true/false</param>
        /// <returns>Retorna el Ticket de Acceso en caso de error retorna Null</returns>
        public LoginTicket obtenerTicketAcceso(string ubicacion_TA, string strIdServicioNegocio, string strUrlWsaaWsdl, string strRutaCertSigner, SecureString strPasswordSecureString, string strProxy, string strProxyUser, string strProxyPassword, FileStream archivoLog, StreamWriter flujoEscritura, bool blnVerboseMode = false)
        {
            LoginTicket objTicketRespuesta = null;
            string      strTicketRespuesta = null;
            bool        pedirTA            = true;
            //¿Hay que sincronizar las fechas?
            DateTime fechHoraActual = DateTime.Now;


            if (File.Exists(ubicacion_TA))
            {
                //Si existe, cargo el TA de la ubicación local
                try
                {
                    XmlDocument xmlTA = new XmlDocument();

                    xmlTA.Load(ubicacion_TA);

                    strTicketRespuesta = xmlTA.OuterXml;

                    objTicketRespuesta = new LoginTicket();

                    objTicketRespuesta.UniqueId       = UInt32.Parse(xmlTA.SelectSingleNode("//uniqueId").InnerText);
                    objTicketRespuesta.GenerationTime = DateTime.Parse(xmlTA.SelectSingleNode("//generationTime").InnerText);
                    objTicketRespuesta.ExpirationTime = DateTime.Parse(xmlTA.SelectSingleNode("//expirationTime").InnerText);
                    objTicketRespuesta.Sign           = xmlTA.SelectSingleNode("//sign").InnerText;
                    objTicketRespuesta.Token          = xmlTA.SelectSingleNode("//token").InnerText;
                }
                catch (Exception excepcionAlCargarTicket)
                {
                    if (archivoLog != null && flujoEscritura != null)
                    {
                        try
                        {
                            string inf = "";

                            string fecha = DateTime.Now.ToString();

                            inf = inf + "[" + fecha + "] ";


                            inf = inf + excepcionAlCargarTicket.Message + "\n";

                            //Escribo en el archivo

                            UtilClass.escribirArchivoLog(inf, archivoLog, flujoEscritura, _strLog);
                        }
                        catch (Exception e)
                        {
                            return(null);
                        }
                    }

                    return(null);
                }

                //Compruebo si el ticket de acceso está vigente
                if (objTicketRespuesta.GenerationTime <= fechHoraActual && fechHoraActual < objTicketRespuesta.ExpirationTime)
                {
                    //El ticket está vigente, lo retorno
                    pedirTA = false;
                    return(objTicketRespuesta);
                }
                else
                {
                    //Se debe obtener un nuevo Ticket de acceso
                    pedirTA = true;
                }
            }
            else
            {
                //No se encontró el ticket de acceso en la ubicación especificada, se debe obtener uno nuevo
                pedirTA = true;
            }



            try
            {
                //Obtener el Ticket de Acceso del Web Service
                if (pedirTA)
                {
                    objTicketRespuesta = new LoginTicket();

                    strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strUrlWsaaWsdl, strRutaCertSigner, strPasswordSecureString, strProxy, strProxyUser, strProxyPassword, blnVerboseMode);


                    //guardar Ticket

                    XmlDocument xmlTA = new XmlDocument();
                    xmlTA.LoadXml(strTicketRespuesta);

                    xmlTA.Save(ubicacion_TA);

                    return(objTicketRespuesta);
                }
            }
            catch (XmlException e)
            {
                try
                {
                    string inf = "";

                    string fecha = DateTime.Now.ToString();

                    inf = inf + "[" + fecha + "] ";


                    inf = inf + "***EXCEPCION XML: " + e.Message;

                    //Escribo en el archivo

                    UtilClass.escribirArchivoLog(inf, archivoLog, flujoEscritura, _strLog);
                }
                catch (Exception ex)
                {
                    return(null);
                }

                return(null);
            }
            catch (Exception excepcionObtUltComprobante)
            {
                try
                {
                    string inf = "";

                    string fecha = DateTime.Now.ToString();

                    inf = inf + "[" + fecha + "] ";


                    inf = inf + "***EXCEPCION AL CARGAR TICKET: " + excepcionObtUltComprobante.Message;

                    //Escribo en el archivo

                    UtilClass.escribirArchivoLog(inf, archivoLog, flujoEscritura, _strLog);
                }
                catch (Exception ex)
                {
                    return(null);
                }


                return(null);
            }


            return(objTicketRespuesta);
        }
예제 #6
0
        public static int ObtenerTicketAcceso()
        {
            MostrarVersion();

            string strUrlWsaaWsdl       = DEFAULT_URLWSAAWSDL;
            string strIdServicioNegocio = DEFAULT_SERVICIO;
            string strRutaCertSigner    = DEFAULT_CERTSIGNER;
            bool   blnVerboseMode       = DEFAULT_VERBOSE;

            #region -Comment-
            // Analizo argumentos de linea de comandos
            //if (args.Length == 0)
            //{
            //    ExplicarUso();
            //    return -1;
            //}
            //Console.ReadKey();
            //for (int i = 0; i <= args.Length - 1; i++)
            //{
            //    string argumento;
            //    argumento = args[i];

            //    if (String.Compare(argumento, "-w", true) == 0)
            //    {
            //        if (args.Length < (i + 2))
            //        {
            //            Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
            //            return -1;
            //        }
            //        else
            //        {
            //            strUrlWsaaWsdl = args[i + 1];
            //            i = i + 1;
            //        }
            //    }

            //    else if (String.Compare(argumento, "-s", true) == 0)
            //    {
            //        if (args.Length < (i + 2))
            //        {
            //            Console.WriteLine("Error: no se especificó el ID del servicio de negocio");
            //            return -1;
            //        }
            //        else
            //        {
            //            strIdServicioNegocio = args[i + 1];
            //            i = i + 1;
            //        }
            //    }

            //    else if (String.Compare(argumento, "-c", true) == 0)
            //    {
            //        if (args.Length < (i + 2))
            //        {
            //            Console.WriteLine("Error: no se especificó ruta del certificado firmante");
            //            return -1;
            //        }
            //        else
            //        {
            //            strRutaCertSigner = args[i + 1];
            //            i = i + 1;
            //        }
            //    }

            //    else if (String.Compare(argumento, "-v", true) == 0)
            //    {
            //        if (args.Length < (i + 2))
            //        {
            //            Console.WriteLine("Error: no se especificó modo: on|off");
            //            return -1;
            //        }
            //        else
            //        {
            //            blnVerboseMode = (String.Compare(args[i + 1], "on", true) == 0 ? true : false);
            //            i = i + 1;
            //        }
            //    }

            //    else if (String.Compare(argumento, "-?", true) == 0)
            //    {
            //        ExplicarUso();
            //        return 0;
            //    }
            //    else
            //    {

            //        Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

            //        Console.WriteLine("Error: argumento desconocido: {0}", argumento);
            //        Console.WriteLine("Para obtener ayuda: {0} -?", MyApplication.Info.AssemblyName);
            //        return -2;
            //    }
            //}
            #endregion
            // Argumentos OK, entonces procesar normalmente...

            LoginTicket objTicketRespuesta;
            string      strTicketRespuesta;

            try
            {
                if (blnVerboseMode)
                {
                    Console.WriteLine("***Servicio a acceder: {0}", strIdServicioNegocio);
                    Console.WriteLine("***URL del WSAA: {0}", strUrlWsaaWsdl);
                    Console.WriteLine("***Ruta del certificado: {0}", strRutaCertSigner);
                    Console.WriteLine("***Modo verbose: {0}", blnVerboseMode);
                }

                objTicketRespuesta = new LoginTicket();

                if (blnVerboseMode)
                {
                    Console.WriteLine("***Accediendo a {0}", strUrlWsaaWsdl);
                }

                strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strRutaCertSigner, blnVerboseMode, StoreName.TrustedPeople, StoreLocation.CurrentUser);

                if (blnVerboseMode)
                {
                    Console.WriteLine("***CONTENIDO DEL TICKET RESPUESTA:");
                    Console.WriteLine(" Token: {0}", objTicketRespuesta.Token);
                    Console.WriteLine(" Sign: {0}", objTicketRespuesta.Sign);
                    Console.WriteLine(" GenerationTime: {0}", Convert.ToString(objTicketRespuesta.GenerationTime));
                    Console.WriteLine(" ExpirationTime: {0}", Convert.ToString(objTicketRespuesta.ExpirationTime));
                    Console.WriteLine(" Service: {0}", objTicketRespuesta.Service);
                    Console.WriteLine(" UniqueID: {0}", Convert.ToString(objTicketRespuesta.UniqueId));
                }
            }

            catch (Exception excepcionAlObtenerTicket)
            {
                Console.WriteLine("***EXCEPCION AL OBTENER TICKET:");
                Console.WriteLine(excepcionAlObtenerTicket.Message);
                Console.ReadKey();
                return(-10);
            }

            Console.ReadKey();
            return(0);
        }