![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Estoy teniendo muchos problemas a la hora de firmar las facturas, ¿Alguien lo ha conseguido en C#?
Empecé adaptando la aplicación que ofrecen en PAe y he logrado firmar XMLs con una estructura muy similar a la que muestran en el ejemplo oficial, no obstante algunas etiquetas como "<DataObjectFormat>" parecen tener algunos campos distintos, (Podría ser un problema) pero en general creo que podría dar el pego. El caso es que siempre recibo el siguiente error: "org.apache.axis.types.URI$MalformedURIException: No scheme found in URI" Lo que no es de extrañar ya que el campo donde se encuentra la URI <xades:Identifier> y los tres de la política de firma no hay donde entenderlos, en cada documento dicen unos valores distintos... Actualmente la política la genero así: Código:
<xades:SignaturePolicyIdentifier> <xades:SignaturePolicyId> <xades:SigPolicyId> <xades:Identifier>Politica de firma TicketBAI 1.0</xades:Identifier> <xades:Description/> </xades:SigPolicyId> <xades:SigPolicyHash> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <ds:DigestValue>6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0=</ds:DigestValue> </xades:SigPolicyHash> <xades:SigPolicyQualifiers> <xades:SigPolicyQualifier> <xades:SPURI>https://www.gipuzkoa.eus/documents/2456431/12093238/TicketBAI_Pol%C3%ADtica_firma_v_1_0.pdf/3c6e5431-bb1d-34ed-5b26-206aaf085452</xades:SPURI> </xades:SigPolicyQualifier> </xades:SigPolicyQualifiers> </xades:SignaturePolicyId> </xades:SignaturePolicyIdentifier> ¿Qué datos insertasteis?, ¿Usasteis algún algoritmo concreto?, ¿Dónde hay documentación medio clara sobre el tema? En fin, cualquier ayuda es bien recibida, gracias de antemano. |
|
#2
|
|||
|
|||
|
Cita:
"url" => "https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf", Suerte |
|
#3
|
|||
|
|||
|
Firmar xml ticketBAI utilizando c#
Hola, yo también estoy intentando firmar las facturas para tickeBAI en C# y no consigo que me acepten la factura como válida.
Código:
<?xml version="1.0" encoding="utf-8"?>
<ResultadosValidacion>
<Codigo>008</Codigo>
<Descripcion>El mensaje ha sido modificado en tránsito o la firma no está bien realizada -- Reference URI="#Signature509508-SignedProperties932727" failed to verify. Reference URI="" failed to verify. [src/xml2signatureobj.cpp(315)] - (10606)</Descripcion>
Coincido con Noe277 en que la documentación no es suficientemente detallada para firmar los xml. Cualquier ayuda se agradece! Muchas gracias! Cita:
|
|
#4
|
||||
|
||||
|
Cita:
En esta página hemos hablado de ese error: https://www.clubdelphi.com/foros/sho...d.php?p=540615 Posible que esté relacionado con la codificación. Revisa además si tienes caracteres extraños en el mensaje (en la razón social, por ejemplo) como ñáéüç...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#5
|
|||
|
|||
|
Cita:
Elimina los acentos en el xml previo a la firma y también en el firmador que utilices Espero que sea eso |
|
#6
|
|||
|
|||
|
Cita:
no tengo ningún carácter con tilde en el xml. |
|
#7
|
||||
|
||||
|
Revisa entonces que en algun momento no esté cambiando la codificación o que estés realizando el envío con una codificación incorrecta. Por ejemplo, que no estés guardando en un paso intermedio a fichero y al guardar/recuperar esté cambiando.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#8
|
|||
|
|||
|
Genero el xml y a continuación lo firmo como indicó bilbur, en php.
Lo que no sé es si han tenido en cuenta que el carácter + forma parte de base64 https_//es.wikipedia.org/wiki/Base64 Hay un párrafo que pone: Cita:
¿sería posible reemplazar los caracteres '+' y '/' por '-' y '_' de la firma y que esta siga siendo válida? |
|
#9
|
|||
|
|||
|
Hola, gracias por las respuestas bilbur y Neftali
Pues sí que va a ser eso de los acentos... al leer vuestras respuestas he revisado la factura que me daba ese error y he visto que en la dirección del cliente había un acento "ú". He hecho otra factura exactamente igual pero poniendo la letra sin acento y ya no ha dado el error de la firma. Lo que no acabo de ver es como solucionarlo porque ya estoy haciendo todo lo que proponéis (creo). 1. Al crear el fichero TicketBAI y guardarlo en disco lo hago en UTF8: Código:
var encoding = System.Text.Encoding.UTF8;
FileMgr.Save(Path.Combine(filePath, fileName), xmltbai, encoding, false);
Código:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new UTF8Encoding();
using (var writer = XmlWriter.Create(fileName, settings))
{
this.Document.Save(writer);
}
Código:
using (StreamReader sr = new StreamReader(filePath, Encoding.UTF8))
{
string content = sr.ReadToEnd();
return content;
}
Código:
var encoding = Encoding.UTF8;
byte[] contentBytes = encoding.GetBytes(content);
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.AllowAutoRedirect = true;
httpWebRequest.ClientCertificates.Add(certificate);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/xml";
httpWebRequest.ContentLength = contentBytes.Length;
var postStream = httpWebRequest.GetRequestStream();
postStream.Write(contentBytes, 0, contentBytes.Length);
postStream.Flush();
postStream.Close();
He enviado correos con los dos ficheros y la dos respuestas al correo de consultas técnicas de Gipuzkoa pero... deben estar colapsados porque hace mucho que no me contestan, creo que llevan más de 2 semanas de retraso en las respuestas T_T También he escrito a Araba preguntando por su entorno de pruebas y me han dicho que lo están desarrollando y que tiene previsto que para septiembre estará operativo :'( Bueno voy a seguir investigando. Ya sé que el foro es de Delphi y mi código es c# .net pero bueno, si alguien me puede dar otro consejo lo agradeceré. Muchas gracias! |
|
#10
|
||||
|
||||
|
Cita:
Revisa cada uno de los pasos con el contenido hexadecimal del fichero o del stream (revisando el character con acento). Desde la generación del XML hasta el envío, a ver si en algún momento encuentras que la codificación de ese character cambia. Si el envío lo estás haciendo con UTF8, revisa que la firma (el componente o lo que usas) no la esté haciendo como ANSI internamente, eso expñlicaría que lo que has firmado no "cuadra" con lo que estás enviando.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#11
|
|||
|
|||
|
contentType para envio httpWebRequest c#
Buenas tardes y muchas gracias a todos por la ayuda.
Me han contestado de la agencia foral de Gipuzkoa y me han confirmado que el fichero firmado es correcto (se lo envié adjunto) y que es distinto de lo que recibieron ellos (me lo han enviado). La diferencia está en las letras con acentos. Por lo tanto el problema está en el envío. Para solucionarlo he modificado la sentencia del content type, antes solo tenía el valor "application/xml" y para que funcione correctamente debo indicar que es utf8 también: Código:
... httpWebRequest.ContentType = "application/xml; charset=utf-8"; ... Cita:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice | newtron | Internet | 3716 | 19-01-2026 20:01:34 |
| Como utilizar la ayuda del nuevo Sistema Operativo | gluglu | Humor | 3 | 24-09-2007 09:39:05 |
| Aplicacion Agencia De Viajes | ArdiIIa | Varios | 9 | 20-01-2007 16:49:53 |
| El Vasco Aguirre | Al González | La Taberna | 5 | 26-05-2006 09:22:28 |
| Microsoft ha lanzado su nuevo sistema operativo | DarkByte | Humor | 0 | 25-01-2004 09:21:14 |
|