/// <summary> /// Genera el CFDI a partir de los datos ingresados /// </summary> /// <param name="Peticion"></param> /// <param name="RutaCertificado"></param> /// <param name="RutaLlavePrivada"></param> /// <param name="ContraseñaCertificado"></param> /// <returns></returns> public bool GeneraCFDI(CFDIPeticion Peticion, string RutaCertificado, string RutaLlavePrivada, string ContraseñaCertificado) { AdministradorArchivos = new Archivos(); var Certificado = AdministradorArchivos.ConvertirStreamToByte(AdministradorArchivos.Abrir(RutaCertificado)); var LlavePrivada = AdministradorArchivos.ConvertirStreamToByte(AdministradorArchivos.Abrir(RutaLlavePrivada)); return(GeneraCFDI(Peticion, Certificado, LlavePrivada, ContraseñaCertificado)); }
/// <summary> /// Genera el CFDI a partir de los datos ingresados /// </summary> /// <param name="Peticion"></param> /// <param name="Certificado"></param> /// <param name="LlavePrivada"></param> /// <param name="ContraseñaCertificado"></param> /// <returns></returns> public bool GeneraCFDI(CFDIPeticion Peticion, Stream Certificado, Stream LlavePrivada, string ContraseñaCertificado) { AdministradorArchivos = new Archivos(); var arregloCertificado = AdministradorArchivos.ConvertirStreamToByte(Certificado); var arregloLlavePrivada = AdministradorArchivos.ConvertirStreamToByte(LlavePrivada); return(GeneraCFDI(Peticion, arregloCertificado, arregloLlavePrivada, ContraseñaCertificado)); }
/// <summary> /// Genera el CFDI a partir de los datos ingresados /// </summary> /// <param name="Peticion"></param> /// <param name="Certificado"></param> /// <param name="LlavePrivada"></param> /// <param name="ContraseñaCertificado"></param> /// <returns></returns> public bool GeneraCFDI(CFDIPeticion Peticion, Byte[] Certificado, Byte[] LlavePrivada, string ContraseñaCertificado) { #region "Variables" MensajeError = string.Empty; Mensaje = string.Empty; Resultado = false; AdministradorArchivos = new Archivos(); Utilerias utilerias = new Utilerias(); #endregion "Variables" #region "Valores Predeterminados" Peticion.DatosGenerales.Version = "3.3"; Peticion.DatosGenerales.SellaCFDI = "true"; Peticion.DatosGenerales.TimbraCFDI = "true"; if (string.IsNullOrEmpty(Peticion.DatosGenerales.OpcionDecimales)) { Peticion.DatosGenerales.OpcionDecimales = "2"; // Valores permitidos 1: Truncar (Operaciones exactas) 2: Redondear hacia arriba o hacia abajo las cantidades } if (string.IsNullOrEmpty(Peticion.DatosGenerales.NumeroDecimales)) { Peticion.DatosGenerales.NumeroDecimales = "2"; } var configuracion = new Configuracion(); Resultado = configuracion.CargaCertificado(Certificado, LlavePrivada, ContraseñaCertificado, Peticion.Encabezado.Emisor.RFC); if (Resultado == true) { Peticion.DatosGenerales.CSD = AdministradorArchivos.ConvertirByteToBase64(Certificado); Peticion.DatosGenerales.LlavePrivada = AdministradorArchivos.ConvertirByteToBase64(LlavePrivada); Peticion.DatosGenerales.CSDPassword = ContraseñaCertificado; } else { Mensaje = configuracion.Mensaje; } if (Peticion.Encabezado.Emisor != null) { Resultado = utilerias.ValidaRFC(Peticion.Encabezado.Emisor.RFC); if (Resultado == false) { Mensaje = "El RFC del emisor es incorrecto"; return(false); } } else { Mensaje = "El RFC del emisor es incorrecto"; return(false); } if (Peticion.Encabezado.Receptor != null) { Resultado = utilerias.ValidaRFC(Peticion.Encabezado.Receptor.RFC); if (Resultado == false) { Mensaje = "El RFC del receptor es incorrecto"; return(false); } } else { Mensaje = "El RFC del receptor es incorrecto"; return(false); } if (!string.IsNullOrEmpty(Peticion.DatosGenerales.ReceptorEmail)) { Resultado = utilerias.ValidaCorreos(Peticion.DatosGenerales.ReceptorEmail); if (Resultado == false) { Mensaje = "El email del destinatario es incorrecto"; return(false); } } if (!string.IsNullOrEmpty(Peticion.DatosGenerales.ReceptorEmailCC)) { Resultado = utilerias.ValidaCorreos(Peticion.DatosGenerales.ReceptorEmailCC); if (Resultado == false) { Mensaje = "El email de la copia es incorrecto"; return(false); } } if (!string.IsNullOrEmpty(Peticion.DatosGenerales.ReceptorEmailCCO)) { Resultado = utilerias.ValidaCorreos(Peticion.DatosGenerales.ReceptorEmailCCO); if (Resultado == false) { Mensaje = "El email de la copia oculta es incorrecto"; return(false); } } #endregion "Valores Predeterminados" Resultado = false; WebServiceFacturoPorTi Api = new WebServiceFacturoPorTi(SandBox); Timbrado = Api.ConsumeServicio <CFDIPeticion, GeneraCFDIApiRespuesta>("ApiTimbrarCFDI", FacturoPorTi.Api.Cfdi.Genericos.TipoVerboHttp.Post, Peticion); if (Timbrado != null) { MensajeError = Api.MensajeError; if (Timbrado.Estatus.Codigo == "000") { Resultado = true; Mensaje = "Factura generada correctamente"; } else { Mensaje = Timbrado.Estatus.Descripcion + Environment.NewLine + Environment.NewLine + Timbrado.Estatus.InformacionTecnica; } } else { MensajeError = Api.MensajeError; Mensaje = "No se pudo realizar el timbrado si el problema persiste comuniquese a [email protected]"; } return(Resultado); }