Пример #1
0
        public EDEEnviarDocumentoResponse ProcesarComunicacionBaja(EDEComunicacionBaja objEComunicacionBaja, EDEDocumentoElectronico objEDocumentoElectronico)
        {
            EDECommonRequest objEDECommonRequest = new EDECommonRequest();

            objEDECommonRequest.NombreMetodoProcesoAPI = "api/GenerarComunicacionBaja";
            objEDECommonRequest.NombreMetodoEnvioAPI   = "api/EnviarDocumento";
            objEDECommonRequest.TipoDocumento          = "CB";//CB
            objEDECommonRequest.NombreCarpetaSinFirmar = "XML_Sin_Firmar_ComunicacionBaja";
            objEDECommonRequest.NombreCarpetaFirmado   = "XML_Firmado_ComunicacionBaja";
            objEDECommonRequest.NombreCarpeaCDR        = "CDR_Response_ComunicacionBaja";
            //REEMPLAZAR AQUI
            objEDECommonRequest.RUC        = objEDocumentoElectronico.RUC;        // "20512588868";
            objEDECommonRequest.UsuarioSOL = objEDocumentoElectronico.UsuarioSOL; //"MODDATOS";
            objEDECommonRequest.ClaveSOL   = objEDocumentoElectronico.ClaveSOL;   //"MODDATOS";

            byte[] fileBytes;
            string someUrl = objEDocumentoElectronico.URLCertificado;//"http://files.centrixperu.com/cliente_1/certificado_digital/certificado.pfx";

            using (var webClient = new WebClient())
            {
                fileBytes = webClient.DownloadData(someUrl);
            }
            objEDECommonRequest.URLCertificado = Convert.ToBase64String(fileBytes);
            objEDECommonRequest.ClaveDigital   = objEDocumentoElectronico.ClaveDigital;//"Linsoft3233";
            return(ProcesarFAE <EDEComunicacionBaja>(objEComunicacionBaja, objEDECommonRequest, objEComunicacionBaja.IdDocumento));
        }
Пример #2
0
        private EDEEnviarDocumentoResponse ProcesarFAE <T>(T objFAE, EDECommonRequest objEDECommonRequest, string IdDocumento)
        {
            objEDERespuesta = new EDEEnviarDocumentoResponse();
            //Generacion de XML
            var respuestaGenerarXMLRequest = RequestApiService <T, EDEDocumentoResponse>(objEDECommonRequest.NombreMetodoProcesoAPI, objFAE);

            if (respuestaGenerarXMLRequest.Exito)
            {
                //Guardar XML
                WriteResponsePackage(objEDECommonRequest.IdCliente.ToString(), objEDECommonRequest.IdTienda.ToString(),
                                     objEDECommonRequest.NombreCarpetaSinFirmar, $"{IdDocumento}.xml",
                                     respuestaGenerarXMLRequest.TramaXmlSinFirma);

                //Firmar el documento XML
                var firmadoRequest = new EDEFirmadoRequest
                {
                    TramaXmlSinFirma    = respuestaGenerarXMLRequest.TramaXmlSinFirma,
                    CertificadoDigital  = objEDECommonRequest.URLCertificado,
                    PasswordCertificado = objEDECommonRequest.ClaveDigital,
                    UnSoloNodoExtension = objEDECommonRequest.TipoDocumento == "RC" ? true : false
                };
                var respuestaFirmarXML = RequestApiService <EDEFirmadoRequest, EDEFirmadoResponse>("api/Firmar", firmadoRequest);
                if (respuestaFirmarXML.Exito)
                {
                    objEDERespuesta.Pila = respuestaFirmarXML.ResumenFirma;

                    //Guardar XML Firmado
                    WriteResponsePackage(objEDECommonRequest.IdCliente.ToString(), objEDECommonRequest.IdTienda.ToString(),
                                         objEDECommonRequest.NombreCarpetaFirmado, $"{IdDocumento}.xml",
                                         respuestaFirmarXML.TramaXmlFirmado);

                    //Enviar XML firmado a SUNAT
                    EDEEnviarDocumentoRequest enviarDocumentoRequest;
                    //Uso de discriminante para comunicacion de baja
                    if (objEDECommonRequest.TipoDocumento != "CB")
                    {
                        enviarDocumentoRequest = new EDEEnviarDocumentoRequest
                        {
                            Ruc             = objEDECommonRequest.RUC,
                            UsuarioSol      = objEDECommonRequest.UsuarioSOL,
                            ClaveSol        = objEDECommonRequest.ClaveSOL,
                            EndPointUrl     = ConfigurationManager.AppSettings["EndPointBoletaSUNAT"].ToString(),
                            IdDocumento     = IdDocumento,
                            TipoDocumento   = objEDECommonRequest.TipoDocumento,
                            TramaXmlFirmado = respuestaFirmarXML.TramaXmlFirmado
                        };
                    }
                    else
                    {
                        enviarDocumentoRequest = new EDEEnviarDocumentoRequest
                        {
                            Ruc             = objEDECommonRequest.RUC,
                            UsuarioSol      = objEDECommonRequest.UsuarioSOL,
                            ClaveSol        = objEDECommonRequest.ClaveSOL,
                            EndPointUrl     = ConfigurationManager.AppSettings["EndPointBoletaSUNAT"].ToString(),
                            IdDocumento     = IdDocumento,
                            TramaXmlFirmado = respuestaFirmarXML.TramaXmlFirmado
                        };
                    }
                    EDEEnviarDocumentoResponse respuestaEnvio = RequestApiService <EDEEnviarDocumentoRequest, EDEEnviarDocumentoResponse>(objEDECommonRequest.NombreMetodoEnvioAPI, enviarDocumentoRequest);
                    if (respuestaEnvio.Exito)
                    {
                        //Guardar CDR
                        WriteResponsePackage(objEDECommonRequest.IdCliente.ToString(), objEDECommonRequest.IdTienda.ToString(),
                                             objEDECommonRequest.NombreCarpeaCDR, $"{IdDocumento}.zip",
                                             respuestaEnvio.TramaZipCdr != null ? respuestaEnvio.TramaZipCdr : string.Empty);
                        objEDERespuesta.TramaZipCdr      = respuestaEnvio.TramaZipCdr;
                        objEDERespuesta.MensajeRespuesta = respuestaEnvio.MensajeRespuesta != null ? respuestaEnvio.MensajeRespuesta : string.Format("Correcto {0}", respuestaEnvio.NombreArchivo);
                        objEDERespuesta.Exito            = true;
                    }
                    else
                    {
                        objEDERespuesta.Exito           = false;
                        objEDERespuesta.CodigoRespuesta = respuestaEnvio.CodigoRespuesta;
                        objEDERespuesta.MensajeError    = respuestaEnvio.MensajeError;
                    }
                }
                else
                {
                    objEDERespuesta.Exito        = false;
                    objEDERespuesta.MensajeError = respuestaFirmarXML.MensajeError;
                }
            }
            else
            {
                objEDERespuesta.Exito        = false;
                objEDERespuesta.MensajeError = respuestaGenerarXMLRequest.MensajeError;
            }
            return(objEDERespuesta);
        }