Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Registros de Facturacion y Eventos (XML)
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2024
Sandy656 Sandy656 is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
Sandy656 Va por buen camino
Hola a todos.

He realizado la firma para guardar el xml firmado pero me coloca la firma al inicio del xml y al enviarlo para comprobar si está correcto me devuelve esto:

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Body>
        <env:Fault>
            <faultcode>env:Server</faultcode>
            <faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2000/09/xmldsig#}Signature</faultstring>
        </env:Fault>
    </env:Body>
</env:Envelope>
Si cambio manualmente el xml y coloco todo el bloque signature al final ,antes del nodo </RegFactuSistemaFacturacion> me lo da como correcto.

¿Cómo se puede realizar la firma colocando todo correcto?

gracias a todos.
Responder Con Cita
  #2  
Antiguo 15-11-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Sandy656 Ver Mensaje
Hola a todos.

He realizado la firma para guardar el xml firmado pero me coloca la firma al inicio del xml y al enviarlo para comprobar si está correcto me devuelve esto:

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Body>
        <env:Fault>
            <faultcode>env:Server</faultcode>
            <faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2000/09/xmldsig#}Signature</faultstring>
        </env:Fault>
    </env:Body>
</env:Envelope>
Si cambio manualmente el xml y coloco todo el bloque signature al final ,antes del nodo </RegFactuSistemaFacturacion> me lo da como correcto.

¿Cómo se puede realizar la firma colocando todo correcto?

gracias a todos.

¿Y cómo estás firmando el fichero?
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 15-11-2024
Sandy656 Sandy656 is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
Sandy656 Va por buen camino
Hola. Este es el código que uso.

Código PHP:
    Entrada:=DirAplicacion+'Copias\VerifactuEntrada.xml';
      
Salida:=DirAplicacion+'Copias\VerifactuSalidaSigned.xml';
      
MemoXML.Lines.SaveToFile(Entrada); //guardo el xml inicial
      
MemoXML.Lines.SaveToFile(Salida);//guardo el xml inicial
      
aliascertificado:=P_DataVarios.QSala.FieldByName('ultima_firma').AsString// tomo la firma
      
ACardinal:=-1;
      if 
not FileExists(Salida )  then showmessage('Error Firmando')
      else
      
begin
        ACardinal
:=ShellExecute(Handle,
        
PWideChar('open'),
        
PWideChar('autofirmacommandline'),
        
PWideChar('sign -i "'+Entrada+'" -o "'+Salida+'" -format xades'+' -store windows -alias "'+aliascertificado+'"'),
        
nil,
        
SW_SHOWNORMAL);
      
end
Responder Con Cita
  #4  
Antiguo 15-11-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Sandy656 Ver Mensaje
Hola. Este es el código que uso.

Código PHP:
    Entrada:=DirAplicacion+'Copias\VerifactuEntrada.xml';
      
Salida:=DirAplicacion+'Copias\VerifactuSalidaSigned.xml';
      
MemoXML.Lines.SaveToFile(Entrada); //guardo el xml inicial
      
MemoXML.Lines.SaveToFile(Salida);//guardo el xml inicial
      
aliascertificado:=P_DataVarios.QSala.FieldByName('ultima_firma').AsString// tomo la firma
      
ACardinal:=-1;
      if 
not FileExists(Salida )  then showmessage('Error Firmando')
      else
      
begin
        ACardinal
:=ShellExecute(Handle,
        
PWideChar('open'),
        
PWideChar('autofirmacommandline'),
        
PWideChar('sign -i "'+Entrada+'" -o "'+Salida+'" -format xades'+' -store windows -alias "'+aliascertificado+'"'),
        
nil,
        
SW_SHOWNORMAL);
       
end
</div>

Yo la verdad es que con autofirma no he probado pero podrías probar con la sintaxis que tienes en este mismo hilo un poco más arriba.
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 15-11-2024
Sandy656 Sandy656 is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
Sandy656 Va por buen camino
He intentado con el código que me has indicado pero al llamar a la función autoFirmaPath me da el mensaje 'Error 2'. He buscado en el registro y esa cadena está vacía.

Código PHP:
function autoFirmaPath:string;
var
  
RegTRegistry;
begin
  Reg 
:= TRegistry.Create;
  
with Reg do
  
begin
    RootKey 
:= HKEY_CLASSES_ROOT;
    if 
OpenKey('\afirma\shell\open\command',falsethen
    begin
      
if ValueExists(''then
        Result 
:= Readstring('')
      else
        
ShowMessage('error');
    
end
    
else
      
ShowMessage('Error 2');
    
CloseKey;
  
end;
end
Responder Con Cita
  #6  
Antiguo 15-11-2024
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por Sandy656 Ver Mensaje
Hola a todos.

He realizado la firma para guardar el xml firmado pero me coloca la firma al inicio del xml y al enviarlo para comprobar si está correcto me devuelve esto:

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Body>
        <env:Fault>
            <faultcode>env:Server</faultcode>
            <faultstring>Codigo[1207].Se esperaba nodo {http://schemas.xmlsoap.org/soap/envelope/}Envelope y ha venido {http://www.w3.org/2000/09/xmldsig#}Signature</faultstring>
        </env:Fault>
    </env:Body>
</env:Envelope>
Si cambio manualmente el xml y coloco todo el bloque signature al final ,antes del nodo </RegFactuSistemaFacturacion> me lo da como correcto.

¿Cómo se puede realizar la firma colocando todo correcto?

gracias a todos.
El xml que has firmado me da que no lo verifica el entorno donde lo estas enviando, eso se verificara en el entorno de Pre/Pro por requerimiento no en el voluntario, ya que no es obligatorio.
Responder Con Cita
  #7  
Antiguo 15-11-2024
Sandy656 Sandy656 is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
Sandy656 Va por buen camino
Creo que puede ser eso porque el xml firmado me lo genera correctamente. Lo que ocurre es que si lo guardo así, no se si se estará guardando en el formato correcto.

¿No habrá una forma de comprobarlo igual que los registros que se envían en el entorno de pruebas?
Responder Con Cita
  #8  
Antiguo 15-11-2024
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por Sandy656 Ver Mensaje
Creo que puede ser eso porque el xml firmado me lo genera correctamente. Lo que ocurre es que si lo guardo así, no se si se estará guardando en el formato correcto.

¿No habrá una forma de comprobarlo igual que los registros que se envían en el entorno de pruebas?
El entorno de pruebas de por requerimiento no esta implantado. De hecho el wdsl no existe la url de envio.

Código:
<!--  Sistemas que emiten facturas NO verificables. (Remision bajo requerimiento). Entorno de PRUEBAS  -->
<wsdl:port name="SistemaRequerimientoPruebas" binding="sfWdsl:sfRequerimiento">
<soap:address location="xxxxxxxxxx"/>
</wsdl:port>
Responder Con Cita
  #9  
Antiguo 15-11-2024
Sandy656 Sandy656 is offline
Miembro
 
Registrado: jul 2006
Posts: 24
Poder: 0
Sandy656 Va por buen camino
Ok. Estaremos atentos a ver cuando se puede hacer.

Gracias a todos!!
Responder Con Cita
  #10  
Antiguo 25-11-2024
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 11
razorxxx Va por buen camino
¿Alguno de ustedes sabe si la firma que piden para los XML es la misma que para FACe? Lo pregunto porque igual me vale la misma rutina que tenía.

En cuanto a los mensajes SOAP, interpreto que no van firmados, sino que se les adjunta el certificado en el método NodeBeforePost del objeto HTTPRIO, ¿verdad?
Responder Con Cita
  #11  
Antiguo 29-11-2024
Maska10 Maska10 is offline
Miembro
 
Registrado: abr 2020
Posts: 50
Poder: 7
Maska10 Va por buen camino
Buenas a todos, estoy intentando firmar el fichero con autofirmacommandline con el siguiente comando:

Código:
/v:1 /c AutoFirmaCommandLine.exe sign -i "C:\SYSME\SGC\efactura\efacturas\fs-F198.xml" -o "C:\SYSME\SGC\efactura\efacturassigned\fs-F198.xml" -store pkcs12:"G:\sysme\docs\SYSME2023.p12" -filter "imported" -password "xxxxxx" -format xades -xml -config "format=XAdES Enveloped \npolicyIdentifier=urn:oid:2.16.724.1.3.1.1.2.1.9 \npolicyIdentifierHashAlgorithm=http://www.w3.org/2001/04/xmlenc#sha256 \npolicyQualifier=https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf" > resultado.txt
El resultado es de error porque el fichero no es un XML válido por los prefijos (sum

?????
Responder Con Cita
  #12  
Antiguo 19-12-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.215
Poder: 24
newtron Va camino a la fama
Hola a tod@s de nuevo.


Después de algunas semanas ocupado en cambiar mi ordenador estoy retomando de nuevo el tema VeriFactu y quería ver si alguien había hecho ya algo sobre la remisión por requerimiento. Entiendo que hay que añadir en el campo "signature" el fichero XML original firmado pero estoy viendo que el campo es del tipo "signature".


¿Alguien está haciendo ya remisión de esos datos? ¿Alguien puede confirmarme que en el campo "signature" hay que insertar el xml firmado o es de otra manera? y en caso de serlo cómo se informa ese campo a partir del XML firmado.


Gracias y un saludo.
__________________
Be water my friend.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Posicion Firma shoulder Varios 9 11-10-2016 17:03:20
Chequeo para InputBox... bulc OOP 1 20-06-2014 22:18:14
Calcular un digito de chequeo GrupoDatasoft Varios 7 09-02-2009 17:53:53
Firma Digital Dado de baja Varios 5 30-11-2008 20:52:16
La firma de la semana, del mes, del año... kinobi Debates 3 23-05-2005 01:00:52


La franja horaria es GMT +2. Ahora son las 23:52:48.


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