private static void ConsultarTicket(string nroTicket) { var consultarTicketRequest = new ConsultaTicketRequest { Ruc = _ruc, NroTicket = nroTicket, UsuarioSol = "MODDATOS", ClaveSol = "MODDATOS", EndPointUrl = UrlSunat }; var response = RestHelper <ConsultaTicketRequest, EnviarDocumentoResponse> .Execute("ConsultarTicket", consultarTicketRequest); if (!response.Exito) { Console.WriteLine(response.MensajeError); return; } var archivo = response.NombreArchivo.Replace(".xml", string.Empty); Console.WriteLine($"Escribiendo documento en la carpeta del ejecutable... {archivo}"); File.WriteAllBytes($"{archivo}.zip", Convert.FromBase64String(response.TramaZipCdr)); Console.WriteLine($"Código: {response.CodigoRespuesta} => {response.MensajeRespuesta}"); }
public async Task <EnviarDocumentoResponse> Post([FromBody] ConsultaTicketRequest request) { var response = new EnviarDocumentoResponse(); try { _servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = _servicioSunatDocumentos.ConsultarTicket(request.NroTicket); if (!resultado.Exito) { response.Exito = false; response.MensajeError = resultado.MensajeError; } else { response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion); } } catch (Exception ex) { response.MensajeError = ex.Source == "DotNetZip" ? "El Ticket no existe" : ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } return(response); }
private async void BtnGetStatus_Click(object sender, EventArgs e) { try { Cursor = Cursors.WaitCursor; using (var frm = new FrmTicket()) { if (frm.ShowDialog() != DialogResult.OK) { return; } if (string.IsNullOrEmpty(frm.txtNroTicket.Text)) { return; } var consultaTicketRequest = new ConsultaTicketRequest { Ruc = txtNroRuc.Text, UsuarioSol = txtUsuarioSol.Text, ClaveSol = txtClaveSol.Text, EndPointUrl = ValorSeleccionado(), IdDocumento = txtSerieCorrelativo.Text, NroTicket = frm.txtNroTicket.Text }; ISerializador serializador = new Serializador(); IServicioSunatDocumentos servicioSunatDocumentos = new ServicioSunatDocumentos(); EnviarDocumentoResponse respuestaEnvio = await new ConsultarTicket(servicioSunatDocumentos, serializador).Post(consultaTicketRequest); if (!respuestaEnvio.Exito || !string.IsNullOrEmpty(respuestaEnvio.MensajeError)) { throw new InvalidOperationException(respuestaEnvio.MensajeError); } File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}"; if (chkVoz.Checked) { Hablar(); } } } catch (Exception ex) { txtResult.Text = ex.Message; } finally { Cursor = Cursors.Default; } }
private void btnGetStatus_Click(object sender, EventArgs e) { var consultaTicketRequest = new ConsultaTicketRequest { Ruc = txtRUC.Text, UsuarioSol = txtUsuarioSol.Text, ClaveSol = txtClaveSol.Text, EndPointUrl = "https://e-factura.sunat.gob.pe/ol-ti-itcpfegem/billService", IdDocumento = txtNoDoc.Text }; }
private async void btnGetStatus_Click(object sender, EventArgs e) { try { Cursor = Cursors.WaitCursor; using (var frm = new FrmTicket()) { if (frm.ShowDialog() != DialogResult.OK) { return; } if (string.IsNullOrEmpty(frm.txtNroTicket.Text)) { return; } var consultaTicketRequest = new ConsultaTicketRequest { Ruc = txtNroRuc.Text, UsuarioSol = txtUsuarioSol.Text, ClaveSol = txtClaveSol.Text, EndPointUrl = ValorSeleccionado(), IdDocumento = txtSerieCorrelativo.Text, NroTicket = frm.txtNroTicket.Text }; var jsonConsultaTicket = await _client.PostAsJsonAsync("api/ConsultarTicket", consultaTicketRequest); var respuestaEnvio = await jsonConsultaTicket.Content.ReadAsAsync <EnviarDocumentoResponse>(); if (!respuestaEnvio.Exito) { throw new ApplicationException(respuestaEnvio.MensajeError); } File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}"; Hablar(); } } catch (Exception ex) { txtResult.Text = ex.Message; } finally { Cursor = Cursors.Default; } }
/// <summary> /// Consulta comprobante de recepción en la SUNAT /// </summary> /// <param name="txtNroTicket"></param> /// <param name="IdDocumento"></param> /// <param name="emisorNroDocumento"></param> /// <returns></returns> public async Task ConsultaCDR(String txtNroTicket, String IdDocumento, String emisorNroDocumento) { _consultaCDRExito = false; var consultaTicketRequest = new ConsultaTicketRequest { Ruc = emisorNroDocumento, UsuarioSol = trxVenta.Ruta_certificadoPac, ClaveSol = trxVenta.Contrasenia_clavePac, EndPointUrl = _Param.URLwebServPAC, IdDocumento = IdDocumento, NroTicket = txtNroTicket }; var jsonConsultaTicket = await _client.PostAsJsonAsync("api/ConsultarTicket", consultaTicketRequest); jsonConsultaTicket.EnsureSuccessStatusCode(); var respuestaEnvio = await jsonConsultaTicket.Content.ReadAsAsync <EnviarDocumentoResponse>(); if (!respuestaEnvio.Exito || !string.IsNullOrEmpty(respuestaEnvio.MensajeError)) { throw new InvalidOperationException(string.Concat(respuestaEnvio.MensajeError, " [ConsultaCDR]")); } if (string.IsNullOrEmpty(respuestaEnvio.TramaZipCdr) || respuestaEnvio.TramaZipCdr.Equals("Aun en proceso")) { throw new InvalidOperationException("El CDR todavía está en proceso en la SUNAT. Intente consultar más tarde. "); } _codigoRespuesta = respuestaEnvio.CodigoRespuesta; int iCodRespuesta = 0; if (Int32.TryParse(respuestaEnvio.CodigoRespuesta, out iCodRespuesta)) { if (iCodRespuesta >= 100 && iCodRespuesta < 2000) { throw new ApplicationException(string.Concat("La SUNAT no procesó el CDR. Codigo: ", respuestaEnvio.CodigoRespuesta, " ", respuestaEnvio.MensajeError, Environment.NewLine, respuestaEnvio.MensajeRespuesta, " Corrija el problema e intente nuevamente.")); } } else { throw new ApplicationException(string.Concat("Código de respuesta desconocido. ", respuestaEnvio.CodigoRespuesta, " ", respuestaEnvio.MensajeError, Environment.NewLine, respuestaEnvio.MensajeRespuesta)); } tramaZipCdr = respuestaEnvio.TramaZipCdr; nombreArchivoCdr = $"R{respuestaEnvio.NombreArchivo}.zip"; //File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); //txtResult.Text = $@"{respuestaEnvio.MensajeRespuesta}"; _consultaCDRExito = respuestaEnvio.Exito; _mensajeSunat = respuestaEnvio.MensajeRespuesta; }
private async void btnGetStatus_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(txtNroTicket.Text)) { return; } var consultaTicketRequest = new ConsultaTicketRequest { Ruc = Convert.ToString(DtEmpresa.Rows[0]["EmpresaRuc"]), UsuarioSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaUsuarioSol"]), ClaveSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaClaveSol"]), EndPointUrl = ValorSeleccionado(), IdDocumento = "RC-20170908-001.xml", NroTicket = txtNroTicket.Text }; var jsonConsultaTicket = await _client.PostAsJsonAsync("api/ConsultarTicket", consultaTicketRequest); var respuestaEnvio = await jsonConsultaTicket.Content.ReadAsAsync <EnviarDocumentoResponse>(); if (!respuestaEnvio.Exito || !string.IsNullOrEmpty(respuestaEnvio.MensajeError)) { throw new InvalidOperationException(respuestaEnvio.MensajeError); } File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}"; Hablar(); } catch (Exception ex) { txtResult.Text += ex.Message + Environment.NewLine; } }
private async void BtnConsultaTicket_Click(object sender, EventArgs e) { string vPath; string vNro; try { Cursor = Cursors.WaitCursor; vNro = txtNroTicket.Text; var consultaTicketRequest = new ConsultaTicketRequest { Ruc = TxtRuc.Text, UsuarioSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaUsuarioSol"]), ClaveSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaclaveSol"]), EndPointUrl = vUrlSunat, IdDocumento = TxtXml.Text, NroTicket = txtNroTicket.Text }; var jsonConsultaTicket = await _client.PostAsJsonAsync("api/ConsultarTicket", consultaTicketRequest); var respuestaEnvio = await jsonConsultaTicket.Content.ReadAsAsync <EnviarDocumentoResponse>(); string vStr = ""; Boolean vOk = false; txtResult.Text = ""; if (!respuestaEnvio.Exito) { vStr = " Servidor SUNAT no responde "; } else { if (!string.IsNullOrEmpty(respuestaEnvio.MensajeError)) { vStr = respuestaEnvio.MensajeError; } else { if (!string.IsNullOrEmpty(respuestaEnvio.MensajeRespuesta)) { vOk = true; vStr = respuestaEnvio.MensajeRespuesta; } } if (vOk) { vPath = vRutaCdr; vPath += Path.Combine(vPath, $"/{respuestaEnvio.NombreArchivo}.zip"); // File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", File.WriteAllBytes(vPath, Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); vStr = $@"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}"; // ModFunc.ActualizaEnviosDia(DtAceptados, Convert.ToString(DtDocumentos.Rows[0]["item"]), vNro, VGCnxSqlE); } } txtResult.Text = $@"{vStr}"; Hablar(); } catch (Exception ex) { txtResult.Text = ex.Message; } finally { Cursor = Cursors.Default; } }
public EnviarDocumentoResponse Post([FromBody] ConsultaTicketRequest request) { var response = new EnviarDocumentoResponse(); try { var conexionSunat = new ConexionSunat(new ConexionSunat.Parametros { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = conexionSunat.ObtenerEstado(request.NroTicket); if (resultado.Item2) { var returnByte = Convert.FromBase64String(resultado.Item1); using (var memRespuesta = new MemoryStream(returnByte)) { using (var zipFile = ZipFile.Read(memRespuesta)) { foreach (var entry in zipFile.Entries) { if (!entry.FileName.EndsWith(".xml")) { continue; } using (var ms = new MemoryStream()) { entry.Extract(ms); ms.Position = 0; var responseReader = new StreamReader(ms); var responseString = responseReader.ReadToEnd(); try { var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(responseString); var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable); xmlnsManager.AddNamespace("ar", EspacioNombres.ar); xmlnsManager.AddNamespace("cac", EspacioNombres.cac); xmlnsManager.AddNamespace("cbc", EspacioNombres.cbc); response.CodigoRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoResponseCode, xmlnsManager)?.InnerText; response.MensajeRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoDescription, xmlnsManager)?.InnerText; response.TramaZipCdr = resultado.Item1; response.Exito = true; } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } } } } } } else { response.Exito = true; response.MensajeRespuesta = resultado.Item1; } } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } return(response); }