Ver Mensaje Individual
  #1175  
Antiguo 23-07-2021
JoseLeeTo JoseLeeTo is offline
Miembro
 
Registrado: jun 2021
Posts: 65
Reputación: 3
JoseLeeTo Va por buen camino
Cita:
Empezado por unomasmas Ver Mensaje
Tengo problemas para subir el fichero de alta TicketBAI al entorno de pruebas de Gipuzkoa. No entiendo muy bien qué está ocurriendo. Estoy haciendo el script en C#. En los diferentes métodos que he empleado me ocurren dos tipos de problema:

[Problema 1:]
Código:
        <ResultadosValidacion>
            <Codigo>002</Codigo>
            <Descripcion>Error: El fichero de alta TicketBAI no cumple el esquema XSD. No se ha podido procesar el mensaje. Detalle del error: Content is not allowed in prolog.</Descripcion>
            <Azalpena>Errorea: TicketBAI altako fitxategiak ez du betetzen XSD eskema. Mezua ezin da prozesatu. Errorearen xehetasuna: Content is not allowed in prolog.</Azalpena>
        </ResultadosValidacion>
Este es el código utilizado:
Código:
            string urlconexion = "h t t p s://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta";
            string file = @"D:\Datos_Desarrollo\tBAI\6936.XSIG";
            var client = new RestClient(urlconexion);
            client.ClientCertificates = new X509CertificateCollection() { certificate };
            var restrequest = new RestRequest(Method.POST);
            restrequest.AddHeader("Content-Type", "application/xml;charset=UTF-8");
            restrequest.AddFile("mifichero", file, "text/xml");
            IRestResponse response = client.Execute(restrequest);
            System.Diagnostics.Debug.WriteLine(response.Content);
RestClient y RestRequest son clases de RestSharp
IRestResponse es un contenedor de RestSharp que recoge la respuesta del servidor.
certificate es una instancia de la clase X509Certificate2 de System.Security.Cryptography.X509Certificates


[Problema 2:]
Código:
        <ResultadosValidacion>
            <Codigo>007</Codigo>
            <Descripcion>Error: Certificado remitente no válido para emisor factura.</Descripcion>
            <Azalpena>Errorea: Bidaltzailearen ziurtagiria ez da baliagarria fakturaren egilearentzat.</Azalpena>
        </ResultadosValidacion>
Este es el código utilizado:
Código:
            string urlconexion =  "h t t p s://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta";
            string file = @"D:\Datos_Desarrollo\tBAI\6936.XSIG";
            HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(urlconexion);
            wr.ContentType = "application/xml;charset=UTF-8";
            wr.Method = "POST";
            wr.ClientCertificates = new X509CertificateCollection() { certificate };
            Stream rs = wr.GetRequestStream();
            rs = wr.GetRequestStream();
            FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[4096];
            int bytesRead = 0;
            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
            {
                rs.Write(buffer, 0, bytesRead);
            }
            WebResponse wresp = null;
            try
            {
                wresp = wr.GetResponse();
                Stream stream2 = wresp.GetResponseStream();
                StreamReader reader2 = new StreamReader(stream2);
                System.Diagnostics.Debug.WriteLine(reader2.ReadToEnd());
            }
HttpWebRequest se incluye en System.Net
certificate es igualmente una instancia de la clase X509Certificate2 de System.Security.Cryptography.X509Certificates
Me imagino que en este segundo caso el problema puede estar en la manipulación del fichero (por haberlo subido como stream) pero no veo cómo comprobarlo. Si alguien me pudiera echar una mano se lo agradecería tanto como el tiempo que llevo tratando de encontrar una solución (un mogollón). Gracias ya por haberme leido.

Buenas. Yo también estoy con C#, aunque no utilizo RestSharp, sino HttpClient. En el caso del problema 2, tiene pinta de que el nombre del emisor de la factura, no coincide con el del certificado, y así tiene que ser.
El certificado tiene que ser el del propio obligado tributario, que tiene que coincidir con el emisor de la factura.
Responder Con Cita