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); }
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); }
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); } }