Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 06-10-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Cita:
Empezado por keys Ver Mensaje
En el_firmante.r_Nombre_firma tengo el número de serie del certificado.
¿Pones eso porque hay que ponerlo, o por poner algo? Yo en mi caso pongo el nombre de la empresa "firmante".
Vamos, no creo que sea por esto.

El resto está igual, salvo detalles como estos:

El r_SigPolicyHash yo lo tenía en minúsculas, tu en mayúsculas.
firmante.r_ID ambos lo tenemos en blanco. O al menos en tu código no lo veo. No sé si realmente se utiliza.

En tu código, tienes esta línea 2 veces:

sbxXAdESSigner1.Config('SigPolicyHashAlgorithm=.........

Primero con el valor http://www.w3.org/2000/09/xmldsig#sha1 y más adelante SHA256.

He añadido estas dos líneas, que yo no usaba, tras generar la factura (antes de firmarla):

xmldocument1.Version := '1.0';
XMLDocument1.StandAlone := 'no';

Tras cambiar las cabeceras, vuelvo a guardar el archivo así:

FicheroCorregir.WriteBOM := false;
FicheroCorregir.SaveToFile('factura.xml', TEncoding.UTF8);

¿Es esto necesario? De todas formas, estoy modificando el original (sin firmar), así que no creo que esto influya.

Yo uso dos ficheros: sin firmar y firmado, que tampoco creo que influya.


En cualquier caso... ahora me muestra otro 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.

Resumiendo...
Si hago esto:

Código Delphi [-]
        XMLDocument1.XML.Text:=f.XML;
        xmldocument1.Active:=True;
        xmldocument1.Version := '1.0';
        XMLDocument1.Encoding:='UTF-8';
        XMLDocument1.StandAlone := 'no';

        if FileExists('factura.xml') then
           DeleteFile('factura.xml');

        xmldocument1.SaveToFile('factura.xml');

        FicheroCorregir := TStringList.Create;
        FicheroCorregir.LoadFromFile('factura.xml');
        FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '','');
        FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'', '');

        FicheroCorregir.WriteBOM := false;
        FicheroCorregir.SaveToFile('factura.xml', TEncoding.UTF8);

La factura (sin firmar) se guarda bien, con esta línea al principio...

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

...y supuestamente en UTF-8 SIN BOM, según veo en RJ TextEdit y Notepad++

Después, con tu código para la firma...

Código Delphi [-]
    firmante.r_Nombre_firma := empresa_cliente;
    firmante.r_ID := '';
    firmante.r_Metodo_Canonicalization := '';
    firmante.r_Hash_algorithm := 'SHA256';
    firmante.r_SigPolicyHashAlgorithm := 'SHA256';

    //Bizkaia
    if combobox1.ItemIndex=0 then
    begin
        firmante.r_SigPolicyID := 'https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf';                                   //https://ticketbai.eus/politicafirma
        firmante.r_SigPolicyHash := '42ECE7F7CC773CC6D21F06D4CDA8F97F928EA621F4BBC6EF9B06DB6CD90EF44B';    //Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es= convertido a HEX es 42ECE7F7CC773CC6D21F06D4CDA8F97F928EA621F4BBC6EF9B06DB6CD90EF44B
        firmante.r_SigPolicyURI := 'https://www.batuz.eus/fitxategiak/batuz/ticketbai/sinadura_elektronikoaren_zehaztapenak_especificaciones_de_la_firma_electronica_v1_0.pdf';
    end
    else
    //Gipuzkoa
    if combobox1.ItemIndex=1 then
    begin
        firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura';                            //https://www.gipuzkoa.eus/ticketbai/sinadura
        firmante.r_SigPolicyHash := 'E8DACA026EB4A3BBBAD85510C3365EC36E2B6B6BDEF4F4506300B6D4033A227D';     //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX es e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d
        firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura';
    end
    else
    //Araba
    if combobox1.ItemIndex=2 then
    begin
        firmante.r_SigPolicyID := 'https://ticketbai.araba.eus/tbai/sinadura/';                            //https://www.gipuzkoa.eus/ticketbai/sinadura
        firmante.r_SigPolicyHash := '88E82F917EFFC8720345188FCBF2D84345149FB415F3FD750F50456ECF3232E4';     //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX es e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d
        firmante.r_SigPolicyURI := 'https://ticketbai.araba.eus/tbai/sinadura/';
    end;

    //Método 2
    p_firmar_xml('factura.xml',firmante,true);


...y sin hacer nada más después, el fichero resultante ahora tiene BOM (según Notepad++ y RJ TextEdit) y esto en la primera línea:

<?xml version="1.0" encoding="utf-8" standalone="no"?> (con utf-8 ahora en minúsculas)

¿Conclusión? Suicidio
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 14:09:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi