Login Barrapunto
Factura digital sobre PHP/Linux
Un pobrecito hablador nos cuenta: «Estoy desarrollando una aplicación en PHP bajo un servidor Linux para la gestión interna de una empresa, de aquí de España. La aplicación genera facturas en PDF y me gustaría poder firmarlas digitalmente para que sean legalmente válidas. Cuando acudes a Hacienda para que te de soporte sobre este tema, en la web lo único que proveen es de escasa información sobre un componente ActiveX (sólo para Windows) para firmar las facturas y un teléfono de "soporte" al cual contesta siempre un guardia jurado. He hablado con más de cinco personas de Hacienda y ninguno ha sido capaz de ofrecerme ayuda de ningún tipo, sólo son capaces de darte el teléfono de algún otro que "a lo mejor puede ayudarte mejor". ¿Alguien ha tenido este mismo problema? (me refiero al tema de la factura electrónica, no al del funcionariado)»
« Nueva herramienta que detecta y corrige el "lenguaje sexista" | Declaración de intenciones de CC sobre su licencia copyleft (BY-SA) »
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.

Algunos enlaces...
(Puntos:5, Informativo)( http://www.jesusamieiro.com/ | Última bitácora: Sábado, 12 Abril de 2008, 19:49h )
Esquema de formato [facturae.es]
Especificaciones Técnicas sobre Facturación Telemática disponible en la web de la AEAT [aeat.es]
SDK de firma electrónica [csi.map.es]
Firma electrónica - Software Libre [uvigo.tv]
Lo jodido es que desarrollen una aplicación de Gestión de Facturación Electrónica que permite la generación de facturas electrónicas con formato Facturae (ORDEN PRE/2971/2007) [facturae.es], lo hagan en Java y no liberen el código para el beneficio de los ciudadanos. De traca.
Mi blog, www.jesusamieiro.com [jesusamieiro.com]
yo se como
(Puntos:3, Informativo)OpenSSL Extensions...
(Puntos:1, Informativo)Si no existe un producto ya hecho, quizás lo mejor sería basándote en los links que han dado sobre el formato de las facturas, utilizar el soporte OpenSSL de PHP para crear/validar las firmas.
Echale un ojo a esto:
http://nl3.php.net/manual/es/book.openssl.php [php.net]
Applet GPL en Java
(Puntos:2, Informativo)También con respecto al PDF te permite aplicar el sellado de tiempo ofrecido por alguna TSA. http://es.wikipedia.org/wiki/Sellado_de_tiempo [wikipedia.org]
Este applet es GPLv2, el código fuente está disponible y existe una lista y un wiki de documentación, el applet no solo permite firmar un PDF sino que, además permite representar la firma en formatos como
En la página del proyecto también hay ejemplos para cada caso y en algunos casos, como integrarlo con PHP.
pdf firmado
(Puntos:2)( http://barrapunto.com/ )
Qué Dios te ampare
(Puntos:2)( http://barrapunto.com | Última bitácora: Martes, 04 Marzo de 2008, 15:33h )
Ya hice algunos intentos y por no redundar en el asunto: Facturae=pesadilla [barrapunto.com]. Te recomiendo el enlace Why XML Security is Broken [auckland.ac.nz], leelo, no es muy largo y no tiene desperdicio.
Destaco el punto donde explica que los formatos S/MIME y PGP usan la estructura.:
-Algoritmo cifrado
-Datos Cifrado
No porque se copien unos a otros (de hecho tienen cierto antagonismo), sino porque es la forma sensata de hacerlo. En cambio la seguridad XML-Dsig y similares usan
-Datos Cifrados
-Algoritmo cifrado
Lo que es una chaladura, implica tener que almacenar el mensaje previamente para su posterior tratamiento cuando se tengan los datos de cifrado. Pero creo que aún es peor, si no he entendido mal (no pongo la mano en el fuego, admito que ando algo perdido ante semejante caos) la cosa es más bien así:
-Datos Cifrados mezclados con no cifrados
-Algoritmo cifrado con indicadores (por ID o XPATH) del elemento cifrado.
Con lo sencillo que hubiera sido cifrar el bloque XML entero
Si buscas herramientas para cifrar XML no las encontrarás, prácticamente hay que hacer una Ad Hoc para cada XML en combinación con Algoritmos de cifrado etc.
Esto son las consideraciones técnicas, ahora vamos a las consideraciones políticas, que son las que de verdad cuentan.
Este formato se ha definido consultando a (léase "a conveniencia de") algunas constructoras fuertes y otras empresas gigantescas. El hecho de que llames al servicio técnico y sepan aún menos de lo habitual (quién hubiera dicho que eso era posible!!) indica que es un sistema que no está uso, unas cuantas empresas han llegado a acuerdos y le han hecho los programas a la administración para trabajar más cómodamente, y ésta se ha curado en saludo sacando un formato unas herramientas que ni siquiera ella misma comprende.
Creo que de momento aún le queda mucho terreno para que este formato sea algo más que una rareza para empresas de alto nivel. De hecho, estoy convencido que las facturas electrónicas terminarán teniendo otro formato. Así que he decidido dejar de calentarme la cabeza.
De todas maneras, si consigues algo avísame. Yo aún no me he recuperado del trauma y estoy haciendo terapia con cosas más sencillas, como mecánica cuántica y ecuaciones diferenciales ;-).
Soluciones para la facturación electronica
(Puntos:2, Informativo)1) Generando un archivo BASE64 firmado con el algoritmo PKCS#7 a partir del documento original de la factura(ver facturación electrónica de la AEAT [www.aeat.es])
2) Imprimir un código de barras PDF-417 en un documento PDF, debiendo el código de barras contener la información de la factura en BASE64 y firmado con el algoritmo PKCS#7, como indican en la página de facturae [facturae.es]
3) Generar un archivo XML según las especificaciones de la factura electrónica [facturae.es]
¿Cuales son las ventajas de utilizar uno u otro método?
- La primera forma (Punto 1), tiene la ventaja de que es la mas segura y de que pueden enviarse las facturas en formatos mas amigables compatibles con PDF, ODT u DOC por ejemplo, pero la desventaja de que solo tiene validez si conservas el fichero
- La segunda forma (Punto 2), tiene la ventaja de que si se decide imprimir la factura, esta sigue teniendo valor oficial (Por el código de barras PDF-417), pero la desventaja de que es mas posible realizar un fraude con ellas, ya que los seres humanos no entendemos estos códigos de barras, y es probable que nos cuelen facturas oficiales con codigos de barras sin sentido o simplemente ilegibles, a no ser que tengamos de un lector de código de barras especial y el software para comprobarlo; otra desventaja es que si almacenamos el papel en un sitio sucio o húmedo es posible que el código de barras se dañe un poco y eso tiene la consecuencia nefasta de convertir la factura en inservible, y obligandonos al igual que el punto 1 a conservar el archivo original.
- La tercera forma (Punto 3), es insegura (fácil de manipular un XML), requiere de un programa especial para leerlos (Que existe en linux y MacOs), y tiene la ventaja que al estar basado en XML es ideal para el intercambio de facturas por parte de grandes empresas.
¿Cual es la solución ideal?
Sin duda combinar el punto 2 y el 1. Que es que desde cualquiera de tus programas (OpenOffice, Abiword, Office, etc) conviertas la factura a PDF, añadirle un código de barras PDF-417 (Punto 2) para a continuación convertir el documento a
De esta manera el documento tendrá validez tanto en formato archivo como impreso en papel ademas de ser prácticamente imposible su alteración. Adicionalmente cuando se compruebe la firma del archivo
¿Que problemas trae esto en linux?
No existe versión de la AEATFACT.dll para linux (AEATFACT.so) y ademas no se indica como funciona (Por si a alguien se le ocurre portarlo).
¿Cual es la solución?
1) Bien currarte un servicio web en una plataforma windows que r
Re:Yo tambien estoy buscando
(Puntos:1)( http://jkdsoftware.dyndns.org/ )
Aunque PK7 permite generar dichos archivos a partir del documento especificado y una firma electrónica, no genera la firma.
Más info en: http://jkdsoftware.dyndns.org/drupal/?q=es/conten