Esempio n. 1
0
        RespuestaSincrono IServicioSunatDocumentos.EnviarDocumento(DocumentoSunat request)
        {
            var dataOrigen = Convert.FromBase64String(request.TramaXml);
            var response   = new RespuestaSincrono();

            try
            {
                _proxyDocumentos.Open();
                var resultado = _proxyDocumentos.sendBill(request.NombreArchivo, dataOrigen);



                _proxyDocumentos.Close();

                response.ConstanciaDeRecepcion = Convert.ToBase64String(resultado);
                response.Exito = true;
            }
            catch (FaultException ex)
            {
                response.MensajeError = string.Concat(ex.Code.Name, ex.Message);
            }
            catch (Exception ex)
            {
                var msg = string.Concat(ex.InnerException?.Message, ex.Message);
                if (msg.Contains(Formatos.FaultCode))
                {
                    var posicion    = msg.IndexOf(Formatos.FaultCode, StringComparison.Ordinal);
                    var codigoError = msg.Substring(posicion + Formatos.FaultCode.Length, 4);
                    msg = $"El Código de Error es {codigoError}";
                }
                response.MensajeError = msg;
            }

            return(response);
        }
Esempio n. 2
0
        RespuestaSincrono IServicioSunatDocumentos.ConsultarTicket(string numeroTicket)
        {
            var response = new RespuestaSincrono();

            try
            {
                _proxyDocumentos.Open();
                var resultado = _proxyDocumentos.getStatus(numeroTicket);

                _proxyDocumentos.Close();

                var estado = (resultado.statusCode != "98");

                response.ConstanciaDeRecepcion = estado  ?   Convert.ToBase64String(resultado.content)   :   "Aun en proceso";
                response.Exito = true;
            }
            catch (FaultException ex)
            {
                response.MensajeError = string.Concat(ex.Code.Name, ex.Message);
            }
            catch (Exception ex)
            {
                var msg = ex.InnerException != null?string.Concat(ex.InnerException.Message, ex.Message) :   ex.Message;

                if (msg.Contains(Formatos.FaultCode))
                {
                    var posicion    = msg.IndexOf(Formatos.FaultCode, StringComparison.Ordinal);
                    var codigoError = msg.Substring(posicion + Formatos.FaultCode.Length, 4);
                    msg = $"El Código de Error es {codigoError}";
                }
                response.MensajeError = msg;
            }

            return(response);
        }
        public async Task <EnviarDocumentoResponse> Generar(string organization, DocumentoElectronico model)
        {
            EmpresaModel empresa = await _repositoryempresa.Get(organization);

            model.Emisor = HelperTo.ToEmisor(empresa);
            IEstructuraXml invoice     = _documentoXml.Generar(model);
            string         XmlSinFirma = await _serializador.GenerarXml(invoice);

            CertificadoDigitalModel certificado = await _repositorycert.GetCertificate(organization);

            FirmadoRequest  firmado       = HelperTo.ToSignedModel(certificado, XmlSinFirma, false);
            FirmadoResponse responseFirma = await _certificador.FirmarXml(firmado);

            ParametroEmpresaModel parametro = await _repositoryparam.GetConfiguration(certificado.Empresa);

            EnviarDocumentoRequest request = HelperTo.ToSendDocument(model, parametro, responseFirma);

            File.WriteAllBytes("invoice.xml", Convert.FromBase64String(responseFirma.TramaXmlFirmado));

            EnviarDocumentoResponse response = new EnviarDocumentoResponse();
            var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}";
            var tramaZip      = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo);

            _servicioSunatDocumentos.Inicializar(new ParametrosConexion
            {
                Ruc         = request.Ruc,
                UserName    = request.UsuarioSol,
                Password    = request.ClaveSol,
                EndPointUrl = request.EndPointUrl
            });

            RespuestaSincrono resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat
            {
                TramaXml      = tramaZip,
                NombreArchivo = $"{nombreArchivo}.zip"
            });

            if (!resultado.Exito)
            {
                response.Exito        = false;
                response.MensajeError = resultado.MensajeError;
            }
            else
            {
                response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion);

                File.WriteAllBytes("cdr_invoice.zip", Convert.FromBase64String(response.TramaZipCdr));
                // Quitamos la R y la extensión devueltas por el Servicio.
                response.NombreArchivo = nombreArchivo;
            }
            //guardar la respuesta
            return(response);
        }
Esempio n. 4
0
        private async void kryptonButton1_Click(object sender, EventArgs e)
        {
            ISerializador           serializador            = new Serializador();
            IServicioSunatConsultas servicioSunatDocumentos = new ServicioSunatConsultas();
            RespuestaSincrono       respuestaEnvio          = new RespuestaSincrono();

            var response = new EnviarDocumentoResponse();

            var request = new DatosDocumento
            {
                TipoComprobante = "01",
                Serie           = "F005",
                Numero          = 3,
                RucEmisor       = "20561278441"
            };

            servicioSunatDocumentos.Inicializar(new ParametrosConexion
            {
                Ruc         = "20561278441",
                UserName    = "******",
                Password    = "******",
                EndPointUrl = "https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"
            });

            respuestaEnvio = servicioSunatDocumentos.ConsultarConstanciaDeRecepcion(request);

            if (respuestaEnvio.Exito)
            {
                response = await serializador.GenerarDocumentoRespuesta(respuestaEnvio.ConstanciaDeRecepcion);

                if (response.Exito)
                {
                    MessageBox.Show(response.MensajeRespuesta);

                    File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{request.RucEmisor}-{request.TipoComprobante}-{request.Serie}-{request.Numero}.zip",
                                       Convert.FromBase64String(respuestaEnvio.ConstanciaDeRecepcion));
                }
                else
                {
                    MessageBox.Show(response.MensajeError);
                }
            }
            else
            {
                MessageBox.Show(respuestaEnvio.MensajeError);
            }
        }