![]() |
![]() |
| 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
|
|||
|
|||
|
Cita:
https://www.boe.es/diario_boe/txt.ph...OE-A-2024-2097 |
|
#2
|
||||
|
||||
|
|
|
#3
|
|||
|
|||
|
Madre mía.
No creo que siga dando ponencias de verifactu Aunque todo es posible |
|
#4
|
|||
|
|||
|
Posiblemente ahora si tendrá mucho más tiempo para hacer ponencias, de hecho, las está haciendo, creo que he visto una con Wolter Kluvers y fue hace un mes, creo recordar, osea, después de su despido.
|
|
#5
|
||||
|
||||
|
El tipo ese es un vendido a los "fachas".
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#6
|
|||
|
|||
|
Firma Digital por DLL y XML schema binding de facturae
Hola
OS dejo mi planteamiento sobre la generación de XML y Firma por si le sirve a alguien para algo o le sirve de idea. La idea es aplicar el sistema de Firma por DLL para Verifactu y para facturae. 1-Guardar el certificado digital y la contraseña encriptada en la base de datos Código:
FileStream := TMemoryStream.Create;
FileStream.LoadFromFile(Filename); // Fichero del certificado
TempStream := TMemoryStream.Create;
TempStream := EncriptarStream(FileStream);
TBlobField(Dataset.FieldByName('CertFirmaDigital')).LoadFromStream(TempStream);
Me acordé que hace unos años compré xmlblackbox para Delphi XE3 y no lo había usado nunca. Se me ocurrió que para no andar comprando librerias constantemente , se podía hacer una DLL con Delphi XE3 para firmar y poder usarla con mis aplicaciones de Delphi 11, etc... Código de la DLL con la funcion de firma en la carpeta DLLFirma y también las DLL compiladas por si sacan a alguien del paso, dejo el enlace para la descarga porque es demasiado grande para adjuntar con las DLL compiladas h t t p s : // drive.google.com/file/d/1vrtpSGHje-l-3XW6peIGqYxHkH0g9aYx/view?usp=drive_link Código:
// Para comprobar si un certificvado es Valido , pasando un IStream function StreamCertificadoValido(CertStream : IStream ; Password : Pchar) : Boolean; StdCall; // Para comprobar si un certificvado es Valido , pasando un String con la ubicación del fichero function FicheroCertificadoValido(Filename,Password : Pchar) : Boolean; StdCall; // Para firmar el XML , devuelve el XML Firmado function FirmaFacturae(CertStream,XMLFacturae : IStream ; Password : Pchar): Pchar; StdCall; // Para obtener cierta información del certificado (La idea final es devolver un XML con todo, pero...) function DatoCertificado(CertStream : IStream ; Password,Dato : Pchar) : Pchar; StdCall; Código:
// Ejemplos LLamada a las funciones de la DLL desde la Aplicacion
//Definir las funciones
function FirmaFacturae(CertStream,XMLFacturae : IStream ; Password : Pchar): Pchar; StdCall; external 'DLLFirmaCrt.x32.dll';
function FicheroCertificadoValido(Filename,Password : Pchar) : Boolean; StdCall; external 'DLLFirmaCrt.x32.dll' name 'FicheroCertificadoValido';
function StreamCertificadoValido(CertStream : IStream ; Password : Pchar) : Boolean; StdCall; external 'DLLFirmaCrt.x32.dll' name 'StreamCertificadoValido';
function DatoCertificado(CertStream : IStream ; Password,Dato : Pchar) : Pchar; StdCall; external 'DLLFirmaCrt.x32.dll' name 'DatoCertificado';
// Firmar XML facturae con la DLL
procedure TFr_user.ButtonClick(Sender: TObject);
var Fichero,XMLString,ResultadoXML : String;
var XSendCertificadoFirma,SendXMLStream : IStream;
var XMLFileStream : TStringStream;
var TempStream : TMemoryStream;
begin
{ Fichero := 'nombre del fichero xml o directamente usar XMLString' }
XMLString := TFile.ReadAllText(Fichero,TEncoding.Unicode);
// Test de firma
// El certificado
TBlobField(Dataset.FieldByName('CertFirmaDigital')).SaveToStream(TempStream);
// Lo desencriptamos
XCertificadoFirma := DesencriptarStream(TempStream);
XCertificadoFirma.Seek(0,soFromBeginning);
XSendCertificadoFirma := TStreamAdapter.Create(XCertificadoFirma, soReference); //soOwned
//El XMl A firmar
XMLFileStream := TStringStream.Create(XMLString,TEncoding.Unicode);
SendXMLStream := TStreamAdapter.Create(XMLFileStream, soReference); // Adap`tamos a IStream
if XSendCertificadoFirma <> nil then
Begin
ResultadoXML := FirmaFacturae(XSendCertificadoFirma,SendXMLStream,Pchar(XCertificadoPass));
// SI ho hay error , guardamos el fichero
if Copy(ResultadoXML,1,7) <> '<Error>' then
Begin
TFile.WriteAllText(FicheroFirmado,ResultadoXML,TEncoding.Unicode);
End
else
Begin
// Error
f_control(nil,'M',f_frase('NO SE HA PODIDO FIRMAR DIGITALMENTE LA FACTURA.',0),ResultadoXML,'');
End;
End
else
Begin
//Showmessage('No hay certificado');
End;
XMLFileStream.Free;
SendXMLStream := nil;
end;
3- Mi planteamiento de como generar el XML verifactu ya corre por este hilo. 4- Para generar el XML facturae. Usar el esquema que proporciona la AEAT y con XML Schema Binding generar el Pas "SistemaFacturaev3_2_2.pas" , lo adjunto en la carpetas Facturae. UFacturaE.pas es un ejemplo no terminado 100% de como se genera facilmente el XML Facturae, funciona , pero añadir cosas, solo es un ejemplo de como usar SistemaFacturaev3_2_2.pas Saludos --------------------------------------------------------------------------------------------------------------- NOTA DEL MODERADOR: Añado los ficheros al FTP del club (junto a la documentación), con un pequeño fichero de texto en la misma ubicación con una explicación. Y actualizo el mensaje #2 del hilo, que es el que recopila códigos. Última edición por Neftali [Germán.Estévez] fecha: 31-05-2024 a las 11:09:40. Razón: Añado nota para os ficheros |
|
#7
|
||||
|
||||
Gracias por tu aporte compañero.
__________________
Be water my friend. |
|
#8
|
|||
|
|||
|
Actualizo los fichero con la generación facturae ya entera y validado con el portal FACE
h t t p s://drive.google.com/file/d/1vrtpSGHje-l-3XW6peIGqYxHkH0g9aYx/view?usp=drive_link Ficheros actulizados: SistemaFacturaev3_2_2.pas UFacturaE.pas |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Hijo de Informáticos | gluglu | Humor | 3 | 13-03-2007 11:05:35 |
| Adictos informaticos ... | Trigger | Humor | 2 | 11-10-2004 12:18:32 |
| Nosotros los Informáticos | Trigger | Humor | 1 | 10-10-2004 14:58:09 |
| Patrón de los Informáticos. | obiwuan | Varios | 20 | 10-09-2003 14:44:54 |
| Chistes Informaticos | jhonny | Humor | 2 | 11-08-2003 21:59:09 |
|