public void SubTicketAFIP() { //Dimensiono una variable propia (todas las vp... lo son) vpAFIPTicket TicketAccAFIP = default(vpAFIPTicket); //Esta Function Obtiene un ticket de acceso a la AFIP TicketAccAFIP = AFIP.TicketAccesoAFIP(); //Aqui lo que se hace es pasar los datos del token y el sign para dos txt que estan en el formulario //La idea es sacar estas lineas pronto porque son obsoletas //30/5/13 lblToken.Text = TicketAccAFIP.vpAFIPTicketToken; lblSign.Text = TicketAccAFIP.vpAFIPTicketSign; //Cargo los datos del Ticket en una clase publica que esta en el MDI //de esta manera lo que hago es que este disponible para todo el proyecto //Cada vez que se use en una factura corroborará el ticket y de esta manera no hay que //cerrar la ventana para hacer otra factura. //El ticket es algo importante por eso pienso que debe estar en el MDI para que sea de acceso //publico. //30/5/13 MDIPrincipal.ClaseAFIP.ptAFIPTicketToken = TicketAccAFIP.vpAFIPTicketToken; MDIPrincipal.ClaseAFIP.ptAFIPTicketSign = TicketAccAFIP.vpAFIPTicketSign; MDIPrincipal.ClaseAFIP.ptAFIPTicketGenerationTime = TicketAccAFIP.vpAFIPTicketGenerationTime; MDIPrincipal.ClaseAFIP.ptAFIPTicketExpirationTime = TicketAccAFIP.vpAFIPTicketExpirationTime; MDIPrincipal.ClaseAFIP.ptAFIPTicketService = TicketAccAFIP.vpAFIPTicketService; MDIPrincipal.ClaseAFIP.ptAFIPTicketUniqueID = TicketAccAFIP.vpAFIPTicketUniqueID; My.MyProject.Forms.MDIPrincipal.ToolStripStatusEstadoServidor.Text = "SI"; }
/// <summary> /// Obtiene un Ticket de Acceso para consumir WS /// </summary> /// <returns></returns> public static vpAFIPTicket TicketAccesoAFIP() { #region VARIABLES vpAFIPTicket Ticket = new vpAFIPTicket(); string strUrlWsaaWsdl = "https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL"; string strIdServicioNegocio = "wsfe"; string strRutaCertSigner = ConfigurationManager.AppSettings["AFIPCertificadosRuta"] + ConfigurationManager.AppSettings["AFIPCertificadosCert"]; //string strRutaCertSigner = "C:\\OpenSSL-Win32\\bin\\2017alias.pfx" ; //TODO: poner en donde esta el certificado string clave = "AF"; SecureString strPasswordSecureString = new SecureString(); //Setea a Nulo LoginTicket objTicketRespuesta = null; string strTicketRespuesta = null; #endregion //Esto hace la clave del certificado foreach (char c in clave) { strPasswordSecureString.AppendChar(c); } strPasswordSecureString.MakeReadOnly(); try { objTicketRespuesta = new LoginTicket(); strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strUrlWsaaWsdl, strRutaCertSigner, strPasswordSecureString); MessageBox.Show("***CONTENIDO DEL TICKET RESPUESTA:" + Environment.NewLine + " Token:" + objTicketRespuesta.Token + Environment.NewLine + " Sign:" + objTicketRespuesta.Sign + Environment.NewLine + " GenerationTime:" + Convert.ToString(objTicketRespuesta.GenerationTime) + Environment.NewLine + " ExpirationTime:" + Convert.ToString(objTicketRespuesta.ExpirationTime) + Environment.NewLine + " Service:" + objTicketRespuesta.Service + Environment.NewLine + " UniqueID:" + Convert.ToString(objTicketRespuesta.UniqueId)); Ticket.vpAFIPTicketSign = objTicketRespuesta.Sign; Ticket.vpAFIPTicketToken = objTicketRespuesta.Token; Ticket.vpAFIPTicketGenerationTime = objTicketRespuesta.GenerationTime; Ticket.vpAFIPTicketExpirationTime = objTicketRespuesta.ExpirationTime; Ticket.vpAFIPTicketService = objTicketRespuesta.Service; Ticket.vpAFIPTicketUniqueID = objTicketRespuesta.UniqueId; } catch (Exception excepcionAlObtenerTicket) { MessageBox.Show("***EXCEPCION AL OBTENER TICKET: " + excepcionAlObtenerTicket.Message); } //HASTA ACA EL EL TEMA DEL TICKET //LO QUE SIGUE TENDRIA QUE IR EN OTRA FUNCION //12/06/2012 La AFIP retiro unilateralmente la posibilidad de obtener el Tipo de Cambio //frmDocFiscal3.lblDolar.Text = CotizacionDivisa("DOL", Ticket.vpAFIPTicketToken, Ticket.vpAFIPTicketSign) //frmDocFiscal3.lblDolar.Text = CotizacionDivisa("PES", Ticket.vpAFIPTicketToken, Ticket.vpAFIPTicketSign) //Facturacion Electronica Requerimiento de Autorizacion servicios1.afip.gov.ar.FEAuthRequest objFEAuthRequest = new servicios1.afip.gov.ar.FEAuthRequest(); objFEAuthRequest.Cuit = Convert.ToInt64("30708466200"); //este es el CUIT guardado en la compu objFEAuthRequest.Token = Ticket.vpAFIPTicketToken; objFEAuthRequest.Sign = Ticket.vpAFIPTicketSign; //ESTO ES DEL TICKET PARA GUARDARLO EN EL DISCO // Obtengo los XML de request/response y los escribo en el disco XmlSerializer writer1 = new XmlSerializer(typeof(servicios1.afip.gov.ar.FEAuthRequest)); StreamWriter file1 = new StreamWriter("C:\\" + Convert.ToString(objTicketRespuesta.Service) + " - " + Convert.ToString(objTicketRespuesta.UniqueId) + " - " + Ticket.vpAFIPTicketExpirationTime.ToString().Replace("/", "-").ToString().Replace(":", "=") + ".xml"); writer1.Serialize(file1, objFEAuthRequest); file1.Close(); return(Ticket); }