Discussion:
[OT?] desarrollo factura electronica
(demasiado antiguo para responder)
rabarca
2008-04-02 19:07:21 UTC
Permalink
estoy revisando el tema de factura electronica y viendo el formato
propuesto por el sii... alguien tiene experiencia en el tema? como para
hacerle algunas preguntas. O si prefieren pongo las dudas aca y asi nos
favorecemos todos :-)
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
mauricio
2008-04-02 20:28:13 UTC
Permalink
Post by rabarca
estoy revisando el tema de factura electronica y viendo el formato
propuesto por el sii... alguien tiene experiencia en el tema? como para
hacerle algunas preguntas. O si prefieren pongo las dudas aca y asi nos
favorecemos todos :-)
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List:http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
parte consiguiendote las clases para generar el pdf417 2d, eso.

saludos

MS
rabarca
2008-04-02 21:10:55 UTC
Permalink
Post by mauricio
parte consiguiendote las clases para generar el pdf417 2d, eso.
eso es lo mas sencillo. Mis dudas van por otro lado, tienes experiencia
en el tema? haz desarrollado algo?
Post by mauricio
saludos
MS
saludos,
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
prpr
2008-04-03 02:55:18 UTC
Permalink
Que duda tienes ?
Post by rabarca
Post by mauricio
parte consiguiendote las clases para generar el pdf417 2d, eso.
eso es lo mas sencillo. Mis dudas van por otro lado, tienes experiencia
en el tema? haz desarrollado algo?
Post by mauricio
saludos
MS
saludos,
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
José Urzúa
2008-04-03 20:04:41 UTC
Permalink
Post by rabarca
estoy revisando el tema de factura electronica y viendo el formato
propuesto por el sii... alguien tiene experiencia en el tema? como para
hacerle algunas preguntas. O si prefieren pongo las dudas aca y asi nos
favorecemos todos :-)
Hola Rolando,

Yo he desarrollado sistemas desde que comenzó esto con el programa
piloto del SII y las primeras empresas (años 2002-2003). Aunque puede
ser OT para el grupo podrías colocar las preguntas acá y las discutimos.

Saludos
--
José Urzúa Reinoso
http://jose.cl
rabarca
2008-04-03 21:59:57 UTC
Permalink
Post by José Urzúa
Hola Rolando,
Hola jose :-)
Post by José Urzúa
Yo he desarrollado sistemas desde que comenz? esto con el programa
piloto del SII y las primeras empresas (a?os 2002-2003). Aunque puede
ser OT para el grupo podr?as colocar las preguntas ac? y las discutimos.
si vi que tu salias como autor de algunos de los archivos de la libreria
del nic.
Mira, son dudas puntuales:

el CAF con el que estoy probando (el que viene dentro del archivo de
autorizacion), tiene una llave publica del SII un poco rara, su
exponente es 3 (?)... se supone que es una llave RSA y la cadena base64
que aparece en el nodo correspondiente es "Aw=="; lo que, si no estoy
haciendo las cosas mal, deberia ser 3. Usando esta llave (que no
entiendo por que no la pasan de la misma forma que me pasaron el par
privado/publico, o por que no la ponen en su sitio para descargar), no
puedo verificar correctamente el CAF. Pense que podia estar corrupta la
firma, asi que solocite otro CAF y si bien me dio otro modulo, el
exponente sigue siendo 3, y la firma tampoco verifica.
Eso como primera parte.
Lo otro, con respecto a la firma XML, entiendo que se firma sobre un
XML canonico, lo que no es tan complicado de obtener dada la forma del
xml que define un DTE, pero tengo algunos problemas para generar la
firma porque el lenguaje que estoy usando no tiene librerias para este
tipo de cosas[1] (estoy usando ruby), basicamente estoy haciendo lo
siguiente para firmar cada DTE y luego el SetDTE

- genero DTE
- digest = SHA1(DTE/Documento)
- firmar digest con mi certificado (no el del CAF)
- construir <Signature> segun spec de la w3.org

- genero DTEs y sus firmas
- digest = SHA1(SetDTE)
- firmar digest con mi certificado (no el del CAF)
- construir <Signature> segun spec de la w3.org
- construir EnvioDTE
(<EnvioDTE><SetDTE>...</SetDTE><Signature>...</Signature></EnvioDTE>)

creo estar haciendo todo bien, incluso he probado mi forma de firmar un
archivo XML con un verificador aparte, y me sale que la firma esta
correcta, en cambio cuando envio el archivo por la pagina del SII, me
dice que fue rechazado por error en la firma. Si verifico la firma con
las librerias que construi (obviamente) las verifica correctamente. Me
asegure que el XML que estoy firmando y el que estoy enviando esta en
forma canonica... ahora estoy un poco perdido. Quizas el SII deberia
implementar un foro o un wiki donde poder juntar informacion mas
practica.

Voy a probar ahora mi verificador con el DTE de ejemplo que tienen en la
pagina del SII.

Un descargo: la estructura del XML de los DTEs sucks... es super
inconsistente en la manera de nombrar los distintos tags... y btw,
firmar un XML?... :-S
Post by José Urzúa
Saludos
--
Jos? Urz?a Reinoso
http://jose.cl
[1] Ok, existe xmlsig (http://xmlsig.sourceforge.net/) de VeriSign Labs,
pero su implementacion esta super mal documentada, no es compatible con
el resto de la API XML de Ruby y tampoco esta programada pensando en
ruby (e.g. key.toString() ??? en ruby se usa key.to_s)

saludos,
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
rabarca
2008-04-04 13:45:35 UTC
Permalink
Post by rabarca
- genero DTE
- digest = SHA1(DTE/Documento)
- firmar digest con mi certificado (no el del CAF)
perdon, este paso deberia haber sido:
- genero SignedInfo con el digest calculado arriba, calculo
digest de SignedInfo y lo firmo.
(idem para el SetDTE)
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
José Urzúa
2008-04-04 16:32:11 UTC
Permalink
Post by rabarca
el CAF con el que estoy probando (el que viene dentro del archivo de
autorizacion), tiene una llave publica del SII un poco rara, su
exponente es 3 (?)... se supone que es una llave RSA y la cadena base64
que aparece en el nodo correspondiente es "Aw=="; lo que, si no estoy
haciendo las cosas mal, deberia ser 3. Usando esta llave (que no
entiendo por que no la pasan de la misma forma que me pasaron el par
privado/publico, o por que no la ponen en su sitio para descargar), no
puedo verificar correctamente el CAF. Pense que podia estar corrupta la
firma, asi que solocite otro CAF y si bien me dio otro modulo, el
exponente sigue siendo 3, y la firma tampoco verifica.
Eso como primera parte.
La llave pública que viene dentro del CAF no es del SII, el SII solo te
provee un identificador de su llave en el elemento <IDK>. No existe
forma de verificar la validez de la firma del CAF a no ser que le pidas
al SII que te envíe la llave que menciona <IDK>, ya que tampoco la tiene
publicada en algún lugar, como debiese ser.
¿Para que sirve la llave pública que está dentro del CAF entonces? para
verificar el timbre de los DTE que generaste con ese CAF.

mira este documento:

http://www.sii.cl/factura_electronica/instructivo_emision.pdf
(página 9 en adelante)

En general, en los sistema que he implementado la "carga" de folios es
un proceso reservado a los roles "admin" y ellos son los únicos
autorizados para descargarlos en el SII, por lo que se asume que el XML
que llega al sistema para cargarlo es "confiable", además que es una
tarea que no se realiza todos los días.

Las otras llaves que vienen en la autorización, que se utilizan para
timbrar nosotros hacíamos un procesamiento con openssl para llevarlas de
PEM a PKCS8 que era lo que podíamos manejar con Java. Estas llaves son
la <RSASK> que se utiliza para generar el timbre electrónico y <RSAPUBK>
que sirve para verificar el timbre, es la misma que viene dentro del CAF.

La otra parte de tu post la respondo en un rato, ahora tengo que salir :-(

Saludos,
--
José Urzúa Reinoso
http://jose.cl
rabarca
2008-04-08 13:37:56 UTC
Permalink
La llave p?blica que viene dentro del CAF no es del SII, el SII solo te
provee un identificador de su llave en el elemento <IDK>. No existe
forma de verificar la validez de la firma del CAF a no ser que le pidas
al SII que te env?e la llave que menciona <IDK>, ya que tampoco la tiene
publicada en alg?n lugar, como debiese ser.
?Para que sirve la llave p?blica que est? dentro del CAF entonces? para
verificar el timbre de los DTE que generaste con ese CAF.
http://www.sii.cl/factura_electronica/instructivo_emision.pdf
(p?gina 9 en adelante)
En general, en los sistema que he implementado la "carga" de folios es
un proceso reservado a los roles "admin" y ellos son los ?nicos
autorizados para descargarlos en el SII, por lo que se asume que el XML
que llega al sistema para cargarlo es "confiable", adem?s que es una
tarea que no se realiza todos los d?as.
Las otras llaves que vienen en la autorizaci?n, que se utilizan para
timbrar nosotros hac?amos un procesamiento con openssl para llevarlas de
PEM a PKCS8 que era lo que pod?amos manejar con Java. Estas llaves son
la <RSASK> que se utiliza para generar el timbre electr?nico y <RSAPUBK>
que sirve para verificar el timbre, es la misma que viene dentro del CAF.
La otra parte de tu post la respondo en un rato, ahora tengo que salir :-(
gracias jose por las respuestas,
basicamente entonces estoy bien. El problema es que el SII me sigue
diciendo que el documento fue rechazado por "Error en firma []", pero no
me dice que firma: si la del SetDTE la del DTE o la del timbre. (Estoy
enviando solo un documento, una factura electronica por mientras).
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
msthandi
2008-04-19 15:56:05 UTC
Permalink
Post by rabarca
La llave p?blica que viene dentro del CAF no es del SII, el SII solo te
provee un identificador de su llave en el elemento <IDK>. No existe
forma de verificar la validez de la firma del CAF a no ser que le pidas
al SII que te env?e la llave que menciona <IDK>, ya que tampoco la tiene
publicada en alg?n lugar, como debiese ser.
?Para que sirve la llave p?blica que est? dentro del CAF entonces? para
verificar el timbre de los DTE que generaste con ese CAF.
http://www.sii.cl/factura_electronica/instructivo_emision.pdf
(p?gina 9 en adelante)
En general, en los sistema que he implementado la "carga" de folios es
un proceso reservado a los roles "admin" y ellos son los ?nicos
autorizados para descargarlos en el SII, por lo que se asume que el XML
que llega al sistema para cargarlo es "confiable", adem?s que es una
tarea que no se realiza todos los d?as.
Las otras llaves que vienen en la autorizaci?n, que se utilizan para
timbrar nosotros hac?amos un procesamiento con openssl para llevarlas de
PEM a PKCS8 que era lo que pod?amos manejar con Java. Estas llaves son
la <RSASK> que se utiliza para generar el timbre electr?nico y <RSAPUBK>
que sirve para verificar el timbre, es la misma que viene dentro del CAF.
La otra parte de tu post la respondo en un rato, ahora tengo que salir :-(
gracias jose por las respuestas,
basicamente entonces estoy bien. El problema es que el SII me sigue
diciendo que el documento fue rechazado por "Error en firma []", pero no
me dice que firma: si la del SetDTE la del DTE o la del timbre. (Estoy
enviando solo un documento, una factura electronica por mientras).
aloha !

revisa por algún caracter extraño en tu firma o si está incompleta (algo
como un &acute;)

Se supone que hay validadores para la firma/contenido... no recuerdo si en
el SII pero vi uno desarrollado en .NET . Pregunta por si acaso en la mesa
de ayuda del SII.

La firma del DTE está enlazada al DTE, no puedes copiar otra para pruebas ni
alterar el DTE con el cual la generaste.
Validaste el timbre electrónico en el ambiente de pruebas del SII ? (de
hecho... estas apuntando al ambiente de pruebas ?? con la fecha de
resolución y todos los datos de ese ambiente ? el certificado digital está
bien cargado y válido ?)

(igual no parece ser Unix ;))
rabarca
2008-04-21 17:51:53 UTC
Permalink
Post by msthandi
aloha !
hola
Post by msthandi
revisa por alg?n caracter extra?o en tu firma o si est? incompleta (algo
como un &acute;)
nopes... ninguno. solo caracteres iso-8859-1
Post by msthandi
Pregunta por si acaso en la mesa
de ayuda del SII.
eso es una broma, cierto? :-)
Post by msthandi
La firma del DTE est? enlazada al DTE, no puedes copiar otra para pruebas ni
alterar el DTE con el cual la generaste.
por supuesto, si no, no tendria sentido firmar algo.
Estuve revisando el archivo de EnvioDTE que entrega el SII, tengo
algunas observaciones. Me hice un script para verificar las firmas y me
entrego esto:

file: F60T33-ejemplo.xml
Calculated digest: VBCerQOXxAeanT3BwgqoN8vxuD8=
Reference digest : 4OTWXyRl5fw3htjTyZXQtYEsC3E=

alguiem me puede decir como se calculo el digest de ese archivo[1]?
porque no hay caso que pueda calcular el mismo digest. El digest que
estoy calculando es para la firma del EnvioDTE, o sea, el digest de
todo el SetDTE, en forma canonica.
Post by msthandi
Validaste el timbre electr?nico en el ambiente de pruebas del SII ? (de
hecho... estas apuntando al ambiente de pruebas ?? con la fecha de
resoluci?n y todos los datos de ese ambiente ? el certificado digital est?
bien cargado y v?lido ?)
todo ok.
Post by msthandi
(igual no parece ser Unix ;))
si lo se, pero en este grupo hay bastante gente que sabe del tema y es
el mas adecuado (y activo) que encontre en la jerarquia chile.
:-S

[1] http://www.sii.cl/factura_electronica/ejemplo_xml.zip
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
msthandi
2008-04-23 02:31:49 UTC
Permalink
Post by rabarca
Post by msthandi
revisa por alg?n caracter extra?o en tu firma o si est? incompleta (algo
como un &acute;)
nopes... ninguno. solo caracteres iso-8859-1
y el file encoding (no el del XML) ?
cuando subes el archivo, puede estar agregándose algun header/append ? (cómo
lo subes a todo esto ?)
Post by rabarca
Post by msthandi
Pregunta por si acaso en la mesa
de ayuda del SII.
eso es una broma, cierto? :-)
suena feo, pero si llamas 10 veces capaz que te atiendan. Me llamaba la
atención que *se supone* tienen que ayudarte en la certificación.
Más que nada por si saben donde descargar un validador o te pasan un
algoritmo/forma de cálculo.
Post by rabarca
Post by msthandi
La firma del DTE est? enlazada al DTE, no puedes copiar otra para pruebas
ni alterar el DTE con el cual la generaste.
por supuesto, si no, no tendria sentido firmar algo.
?
Post by rabarca
Estuve revisando el archivo de EnvioDTE que entrega el SII, tengo
algunas observaciones. Me hice un script para verificar las firmas y me
file: F60T33-ejemplo.xml
Calculated digest: VBCerQOXxAeanT3BwgqoN8vxuD8=
Reference digest : 4OTWXyRl5fw3htjTyZXQtYEsC3E=
alguiem me puede decir como se calculo el digest de ese archivo[1]?
porque no hay caso que pueda calcular el mismo digest. El digest que
estoy calculando es para la firma del EnvioDTE, o sea, el digest de
todo el SetDTE, en forma canonica.
por si aca, no olvides que no es sólo el algoritmo de cálculo sino los datos
de la certificación y el contenido del DTE.
"Todo documento va acompañado de una firma digital del contenido del
documento, calculada con la
llave privada de un certificado digital otorgado por una empresa
certificadora de identidad acreditada
por el SII."

ahí mismo preguntan si usas llave RSA o DSA. El algoritmo *debiera* estar en
la documentación de pruebas, no recuerdo bien esto porque usamos proveedor
y tenían su validador.
Post by rabarca
Post by msthandi
(igual no parece ser Unix ;))
si lo se, pero en este grupo hay bastante gente que sabe del tema y es
el mas adecuado (y activo) que encontre en la jerarquia chile.
:-S
:)

suerte con el asunto (bastante frustrante por lo demás...)
José Urzúa
2008-04-28 17:03:08 UTC
Permalink
Post by rabarca
Post by msthandi
aloha !
[...]
Estuve revisando el archivo de EnvioDTE que entrega el SII, tengo
algunas observaciones. Me hice un script para verificar las firmas y me
file: F60T33-ejemplo.xml
Calculated digest: VBCerQOXxAeanT3BwgqoN8vxuD8=
Reference digest : 4OTWXyRl5fw3htjTyZXQtYEsC3E=
alguiem me puede decir como se calculo el digest de ese archivo[1]?
porque no hay caso que pueda calcular el mismo digest. El digest que
estoy calculando es para la firma del EnvioDTE, o sea, el digest de
todo el SetDTE, en forma canonica.
[...]
[1] http://www.sii.cl/factura_electronica/ejemplo_xml.zip
Descargué y probé la validez de esa firma y me da un error, de que la
llave pública del certificado no corresponde a la del <KeyInfo>. Deja
preguntar en el SII a ver que me dicen.

Saludos,
--
José Urzúa Reinoso
http://jose.cl
José Urzúa
2008-04-28 19:21:04 UTC
Permalink
Rolando,

Me respondieron desde el SII y me dicen que efectivamente el ejemplo
publicado tiene ese problema que el certificado utilizado para firmar es
distinto al que se incluyó en el XML. Me dicen que lo van a corregir y
dan las gracias por informarlo.

pd: espero seguir más atento a este grupo, para poder ayudar más de prisa
Post by rabarca
por supuesto, si no, no tendria sentido firmar algo.
Estuve revisando el archivo de EnvioDTE que entrega el SII, tengo
algunas observaciones. Me hice un script para verificar las firmas y me
file: F60T33-ejemplo.xml
Calculated digest: VBCerQOXxAeanT3BwgqoN8vxuD8=
Reference digest : 4OTWXyRl5fw3htjTyZXQtYEsC3E=
[1] http://www.sii.cl/factura_electronica/ejemplo_xml.zip
--
José Urzúa Reinoso
http://jose.cl
rabarca
2008-05-01 23:10:47 UTC
Permalink
Post by José Urzúa
Rolando,
Me respondieron desde el SII y me dicen que efectivamente el ejemplo
publicado tiene ese problema que el certificado utilizado para firmar es
distinto al que se incluy? en el XML. Me dicen que lo van a corregir y
dan las gracias por informarlo.
pd: espero seguir m?s atento a este grupo, para poder ayudar m?s de prisa
gracias Jose. voy a estar atento al nuevo XML, porque todavia sigo sin
poder crear un XML valido (para el SII), y me sigue reclamando por
"Error en firma[]" :-S
Post by José Urzúa
--
Jos? Urz?a Reinoso
http://jose.cl
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
rabarca
2008-05-06 16:37:41 UTC
Permalink
Post by José Urzúa
Rolando,
Me respondieron desde el SII y me dicen que efectivamente el ejemplo
publicado tiene ese problema que el certificado utilizado para firmar es
distinto al que se incluy? en el XML. Me dicen que lo van a corregir y
dan las gracias por informarlo.
pd: espero seguir m?s atento a este grupo, para poder ayudar m?s de prisa
ahora cambie todo el codigo para usar libxml[1] y xmlsec[2] para generar
las firmas xml, y me sigue dando exactamente el mismo error:

Rechazado por Error en Firma [].

Tengo mas comentarios para el SII, por si puedes forwardearlos:

* Los valores de SignatureValue en *sus* ejemplos no cumplen *sus*
estandares (maximo 76 caracteres de ancho)
* Donde esta la llave publica del sii?

Tengo muchas mas observaciones, pero ya me esta dando lata y lo unico
que puedo concluir de tratar de implementar el sistema de factura
electronica (y en general, el envio de documentos tributarios
electronicos), es que el tema fue visto a la rapida, o no se reviso con
cuidado. Un claro ejemplo de esto es la inconsistencia del nombramiento
de los tags.
No es la primera vez que hago lo mismo (he hecho generadores/lectores de
varios formatos abiertos, incluso de algunos cerrados y documentados por
fuentes no oficiales), y es la primera vez que me encuentro con algo que
supuestamente deberia ser sencillo y facil de implementar, pero resulta
engorroso, tiene fallas y mas encima los ejemplos en los cuales te
deberias basar para hacer tus pruebas estan malos.
Hay alguna instancia formal donde poder acudir en caso de problemas?
porque ya fui una vez a una unidad del sii y me miraron como si fuera
extraterrestre...

[1] http://xmlsoft.org/
[2] http://www.aleksey.com/xmlsec

saludos,
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
José Urzúa
2008-05-07 02:24:04 UTC
Permalink
Post by rabarca
ahora cambie todo el codigo para usar libxml[1] y xmlsec[2] para generar
Rechazado por Error en Firma [].
A ver, el rechazo por error en firma es porque el SII encuentra mal
firmado el EnvioDTE. Te comento que "algoritmo" he implementado en
algunos sistemas que funcionan bien para el SII:

1) Armar XML del DTE

2) Timbrarlo digitalmente utilizando la llave privada que entrega el SII
en el CAF (este error no lo tienes ahora, si no el mensaje diría que el
timbre está malo)

3) Firmar digitalmente el DTE utilizando un namespace=null, es decir la
URI que se pasa como segundo argumento al constructor de XMLSignature
(de xmlsec de apache en Java) es null. No olvides agregar el certificado
y la llave pública al DTE. (utilizar namespace=null era por un antiguo
problema que tenia el SII con los espacios de nombre de los Signature
que no estaban bien definidos para el DTE y para el EnvioDTE)

4) Luego armas el XML del EnvioDTE (carátula y otros datos), agregando
el DTE recién timbrado y firmado, pero le agregar el namespace al
principio, como atributo de DTE (xmlns="http://www.sii.cl/SiiDte")

5) Luego firmas digitalmente el EnvioDTE indicando el namespace en la
firma (en 3 no se usaba!) es decir la URI que se pasa como segundo
argumento al constructor de XMLSignature del EnvioDTE es
"http://www.sii.cl/SiiDte"

En los sistemas que he implementado, los XML luego de firmarlos
digitalmente, los almacenamos como arreglo de bytes en las bases de
datos, solo como medida de precaución.
Post by rabarca
* Los valores de SignatureValue en *sus* ejemplos no cumplen *sus*
estandares (maximo 76 caracteres de ancho)
* Donde esta la llave publica del sii?
OK, enviaré estos dos comentarios. Entiendo que la llave pública puede
ser necesaria para realizar validaciones, pero no es estrictamente
necesaria para generar los DTE.
Post by rabarca
Tengo muchas mas observaciones, pero ya me esta dando lata y lo unico
que puedo concluir de tratar de implementar el sistema de factura
electronica (y en general, el envio de documentos tributarios
electronicos), es que el tema fue visto a la rapida, o no se reviso con
cuidado. Un claro ejemplo de esto es la inconsistencia del nombramiento
de los tags.
El tema no fue visto a la rápida. Se trabajó bastante tiempo con un
grupo "representativo" de contribuyentes y un memorista del DCC definió
como debía funcionar el modelo e implementamos un prototipo en NIC
Chile. Luego el SII tomó el control (no sé si con externos o
desarrolladores internos) y los schemas quedaron no-estándar (cuando
sacaron los namespace) y tuvimos que modificar las rutinas de firma para
adaptarnos a lo malo que había.
Se hicieron muchos comentarios, tal como tu mencionas, de
inconsistencias en nombres de tag, que los schemas no cumplían con el
estándar, etc, pero todos esos requerimientos "técnicos" no importaban
mucho cuando se acercaba la fecha del lanzamiento con bombos y platillos
(presidente de la república incluido) del sistema.
Post by rabarca
No es la primera vez que hago lo mismo (he hecho generadores/lectores de
varios formatos abiertos, incluso de algunos cerrados y documentados por
fuentes no oficiales), y es la primera vez que me encuentro con algo que
supuestamente deberia ser sencillo y facil de implementar, pero resulta
engorroso, tiene fallas y mas encima los ejemplos en los cuales te
deberias basar para hacer tus pruebas estan malos.
Por que crees que la cantidad de contribuyentes autorizados en factura
electrónica que *no son* del estado son tan pocos? creo que uno de los
factores son estas barreras técnicas que no deberían existir, junto con
los otros temas de fiscalización, aclarar el proceso de facturación,
modificación de procesos, etc.
Post by rabarca
Hay alguna instancia formal donde poder acudir en caso de problemas?
porque ya fui una vez a una unidad del sii y me miraron como si fuera
extraterrestre...
Como yo estuve participando en el piloto de factura electrónica tengo
algunos contactos técnicos a los que les preguntaré si te pueden recibir
o por último si me permiten darte sus direcciones de email para que les
escribas y cooperes con mejorar este sistema.

Tengo un montón de anécdotas que me sucedieron mientras realizaba mi
memoria, que son difíciles de creer que suceda en un sistema de tanta
relevancia y en una institución tan "tecnológica" como el SII ;-)

Saludos,
--
José Urzúa Reinoso
http://jose.cl
rabarca
2008-05-07 16:09:54 UTC
Permalink
Post by José Urzúa
A ver, el rechazo por error en firma es porque el SII encuentra mal
firmado el EnvioDTE. Te comento que "algoritmo" he implementado en
1) Armar XML del DTE
2) Timbrarlo digitalmente utilizando la llave privada que entrega el SII
en el CAF (este error no lo tienes ahora, si no el mensaje dir?a que el
timbre est? malo)
3) Firmar digitalmente el DTE utilizando un namespace=null, es decir la
URI que se pasa como segundo argumento al constructor de XMLSignature
(de xmlsec de apache en Java) es null. No olvides agregar el certificado
y la llave p?blica al DTE. (utilizar namespace=null era por un antiguo
problema que tenia el SII con los espacios de nombre de los Signature
que no estaban bien definidos para el DTE y para el EnvioDTE)
4) Luego armas el XML del EnvioDTE (car?tula y otros datos), agregando
el DTE reci?n timbrado y firmado, pero le agregar el namespace al
principio, como atributo de DTE (xmlns="http://www.sii.cl/SiiDte")
5) Luego firmas digitalmente el EnvioDTE indicando el namespace en la
firma (en 3 no se usaba!) es decir la URI que se pasa como segundo
argumento al constructor de XMLSignature del EnvioDTE es
"http://www.sii.cl/SiiDte"
ah... eso explica bastante, voy a tratar firmando como dices (estoy
usando xmlsec en C<->Ruby. Hice una extension para ruby que usa xmlsec)
Post by José Urzúa
En los sistemas que he implementado, los XML luego de firmarlos
digitalmente, los almacenamos como arreglo de bytes en las bases de
datos, solo como medida de precauci?n.
Post by rabarca
* Los valores de SignatureValue en *sus* ejemplos no cumplen *sus*
estandares (maximo 76 caracteres de ancho)
* Donde esta la llave publica del sii?
OK, enviar? estos dos comentarios. Entiendo que la llave p?blica puede
ser necesaria para realizar validaciones, pero no es estrictamente
necesaria para generar los DTE.
claro. no es necesaria para generar el DTE, pero si para verificar el
CAF, y si bien tampoco es requisito verificar el CAF, cual es la idea de
mandarlos firmados?
Post by José Urzúa
Post by rabarca
Tengo muchas mas observaciones, pero ya me esta dando lata y lo unico
que puedo concluir de tratar de implementar el sistema de factura
electronica (y en general, el envio de documentos tributarios
electronicos), es que el tema fue visto a la rapida, o no se reviso con
cuidado. Un claro ejemplo de esto es la inconsistencia del nombramiento
de los tags.
El tema no fue visto a la r?pida. Se trabaj? bastante tiempo con un
grupo "representativo" de contribuyentes y un memorista del DCC defini?
como deb?a funcionar el modelo e implementamos un prototipo en NIC
Chile. Luego el SII tom? el control (no s? si con externos o
desarrolladores internos) y los schemas quedaron no-est?ndar (cuando
sacaron los namespace) y tuvimos que modificar las rutinas de firma para
adaptarnos a lo malo que hab?a.
Se hicieron muchos comentarios, tal como tu mencionas, de
inconsistencias en nombres de tag, que los schemas no cumpl?an con el
est?ndar, etc, pero todos esos requerimientos "t?cnicos" no importaban
mucho cuando se acercaba la fecha del lanzamiento con bombos y platillos
(presidente de la rep?blica incluido) del sistema.
:-)
Post by José Urzúa
Post by rabarca
No es la primera vez que hago lo mismo (he hecho generadores/lectores de
varios formatos abiertos, incluso de algunos cerrados y documentados por
fuentes no oficiales), y es la primera vez que me encuentro con algo que
supuestamente deberia ser sencillo y facil de implementar, pero resulta
engorroso, tiene fallas y mas encima los ejemplos en los cuales te
deberias basar para hacer tus pruebas estan malos.
Por que crees que la cantidad de contribuyentes autorizados en factura
electr?nica que *no son* del estado son tan pocos? creo que uno de los
factores son estas barreras t?cnicas que no deber?an existir, junto con
los otros temas de fiscalizaci?n, aclarar el proceso de facturaci?n,
modificaci?n de procesos, etc.
si, queda bastante por hacer. Quizas la solucion mas rapida y efectiva
seria que el SII hiciera un foro donde la gente puede comentar y
preguntar sobre la parte tecnica de la factura electronica.
Post by José Urzúa
Post by rabarca
Hay alguna instancia formal donde poder acudir en caso de problemas?
porque ya fui una vez a una unidad del sii y me miraron como si fuera
extraterrestre...
Como yo estuve participando en el piloto de factura electr?nica tengo
algunos contactos t?cnicos a los que les preguntar? si te pueden recibir
o por ?ltimo si me permiten darte sus direcciones de email para que les
escribas y cooperes con mejorar este sistema.
Tengo un mont?n de an?cdotas que me sucedieron mientras realizaba mi
memoria, que son dif?ciles de creer que suceda en un sistema de tanta
relevancia y en una instituci?n tan "tecnol?gica" como el SII ;-)
jejeje
Post by José Urzúa
Saludos,
--
Jos? Urz?a Reinoso
http://jose.cl
muchas gracias jose por los hints. Voy a probar a ver como me va.
saludos,
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
rabarca
2008-05-07 16:55:53 UTC
Permalink
Post by José Urzúa
A ver, el rechazo por error en firma es porque el SII encuentra mal
firmado el EnvioDTE. Te comento que "algoritmo" he implementado en
1) Armar XML del DTE
2) Timbrarlo digitalmente utilizando la llave privada que entrega el SII
en el CAF (este error no lo tienes ahora, si no el mensaje dir?a que el
timbre est? malo)
3) Firmar digitalmente el DTE utilizando un namespace=null, es decir la
URI que se pasa como segundo argumento al constructor de XMLSignature
(de xmlsec de apache en Java) es null. No olvides agregar el certificado
y la llave p?blica al DTE. (utilizar namespace=null era por un antiguo
problema que tenia el SII con los espacios de nombre de los Signature
que no estaban bien definidos para el DTE y para el EnvioDTE)
4) Luego armas el XML del EnvioDTE (car?tula y otros datos), agregando
el DTE reci?n timbrado y firmado, pero le agregar el namespace al
principio, como atributo de DTE (xmlns="http://www.sii.cl/SiiDte")
aqui te refieres al DTE o al EnvioDTE? segun te entiendo, tengo que
agregar el namespace del sii a cada DTE?
Post by José Urzúa
5) Luego firmas digitalmente el EnvioDTE indicando el namespace en la
firma (en 3 no se usaba!) es decir la URI que se pasa como segundo
argumento al constructor de XMLSignature del EnvioDTE es
"http://www.sii.cl/SiiDte"
estuve revisando como lo estoy haciendo ahora:

1) creo el DTE (con su timbre)
2) firmo el DTE (hasta aca no hay NS para el DTE)
3) repito 1) y 2) segun sea necesario
4) creo el EnvioDTE (con su NS como corresponde)
5) agrego todos los DTE (en las pruebas que estoy haciendo tengo solo 1)
6) firmo el EnvioDTE

mi pregunta de arriba es si en *mi* paso 5, tendria que agregar el ns
del sii a cada dte? lo trate recien y me sigue alegando por la firma.
Post by José Urzúa
Saludos,
--
Jos? Urz?a Reinoso
http://jose.cl
--
Rolando Abarca M .. rabarca (at) dcc.uchile.cl
"It is hard to get a lady to evaluate to true." - Pintsize.
My Amazon Wish List: http://www.amazon.com/gp/registry/wishlist/3AGJOT5E6SIQB
José Urzúa
2008-05-08 15:28:05 UTC
Permalink
[.....]
Post by José Urzúa
4) Luego armas el XML del EnvioDTE (car?tula y otros datos), agregando
el DTE reci?n timbrado y firmado, pero le agregar el namespace al
principio, como atributo de DTE (xmlns="http://www.sii.cl/SiiDte")
aqui te refieres al DTE o al EnvioDTE? segun te entiendo, tengo que
agregar el namespace del sii a cada DTE?
Si, por estos días no sé si lo *tienes* que agregar, solo te comento
como lo implementamos en el año 2003. Agregamos para cada DTE del EnvioDTE.
1) creo el DTE (con su timbre)
2) firmo el DTE (hasta aca no hay NS para el DTE)
3) repito 1) y 2) segun sea necesario
4) creo el EnvioDTE (con su NS como corresponde)
5) agrego todos los DTE (en las pruebas que estoy haciendo tengo solo 1)
6) firmo el EnvioDTE
mi pregunta de arriba es si en *mi* paso 5, tendria que agregar el ns
del sii a cada dte? lo trate recien y me sigue alegando por la firma.
Si te sigue alegando por la firma, puede ser que estés modificando el
archivo luego de firmarlo, no debes indentarlo ni nada después de la
firma. Por eso nosotros lo manejamos como arreglo de bytes, que después
lo tiramos a un archivo y lo enviamos por POST al SII.


Saludos,
--
José Urzúa Reinoso
http://jose.cl
Loading...