Generacion de sello digital para facturacion electronica

1,922 views
Skip to first unread message

Ing. Edgar Oñate

unread,
Jun 14, 2010, 1:08:08 PM6/14/10
to publice...@googlegroups.com

Buen día a todos!!

 

Tengo una duda sobre la generación del sello digital en la facturación electrónica, en las páginas del SAT dice que a la cadena original hay que aplicarle el método de digestión md5, después dice que al resultado hay que aplicarle el algoritmo RSA con la llave privada, en esta parte es donde estoy atorado, ¿de qué manera tengo que usar la llave privada??, alguien podría ayudarme?? Se lo agradecería!!

 

 



__________ Information from ESET NOD32 Antivirus, version of virus signature database 5196 (20100614) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

Hugo C.

unread,
Jun 15, 2010, 3:50:37 PM6/15/10
to Comunidad de Visual Foxpro en Español
Puedes usar OpenSSL

CadOrigUTF8.txt && <= archivo con la cadena original en UTF8

* crear sello ( Sello.txt )

openssl dgst -c -sign llavePrivada.pem -out Sello.txt CadOrigUTF8.txt

* pasarlo a base64

openssl base64 -in Sello.txt -out SelloBase64.txt && <= archivo con
el sello final


* claro que primero tienes que pasar la llavePrivada.key a
llavePrivada.pem

openssl.exe pkcs8 -inform DER -in llavePrivada.key -passin
pass:mipassword -out llavePrivada.pem

Saludos.


On 14 jun, 11:08, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
wrote:

Ing. Edgar Oñate

unread,
Jun 15, 2010, 6:40:58 PM6/15/10
to publice...@googlegroups.com
Gracias Hugo!!

Y no es necesario usar el método de digestión MD5 y el algoritmo RSA??

Gracias de antemano.

Saludos!!

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Hugo C.
Enviado el: martes, 15 de junio de 2010 02:51 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

Puedes usar OpenSSL

* pasarlo a base64

Saludos.

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5199 (20100615) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5199 (20100615) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5199 (20100615) __________

Hugo C.

unread,
Jun 15, 2010, 11:28:50 PM6/15/10
to Comunidad de Visual Foxpro en Español
Con openssl esta es la manera en que el "validador del SAT"
pasa el "sello" como valido.
Yo los uso con VFP y asi me funcionan.
Usado otras formas que se usan en PHP por ejem,
no me funcionaron.

Saludos.

On 16 jun, 00:40, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>

Ing. Edgar Oñate

unread,
Jun 16, 2010, 1:21:29 PM6/16/10
to publice...@googlegroups.com
Gracias hugo!

Me ha sido de mucha utilidad tu ayuda, ahora solo me resta hacer el
comprobante xml!! Ya cuentas con el??

Saldudos!!

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Hugo C.

Enviado el: martes, 15 de junio de 2010 10:29 p.m.

Saludos.

database 5201 (20100616) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5201 (20100616) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5202 (20100616) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5202 (20100616) __________

Hugo C.

unread,
Jun 16, 2010, 3:50:46 PM6/16/10
to Comunidad de Visual Foxpro en Español
Si cuento con el. es el archivo que valido en el "Validador del sat".
https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html

Por cierto, lo genero con puro codigo de VFP (sin parsers).

Saludos.


On 16 jun, 11:21, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
> http://www.eset.com- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

WoodFan

unread,
Jun 16, 2010, 8:43:58 PM6/16/10
to Comunidad de Visual Foxpro en Español
Carlos gracias por la informacion, me quedan algunas dudas

Este resultado es que el que se incluye en el XML en el atributo
"sello" ?
El certificado (archivo cer) no se aplica para la creación del sello
digital solo en archivo de firma digital (*.key) ?

La conversion del certificado de ejemplo AAA010101AAA_CSD_0,1.cer a
base PEM con:
openssl x509 -inform DER -outform PEM -in AAA010101AAA_CSD_01.cer -
pubkey
>AAA010101AAA.cer.pem
Es para obtener el valor del certificado e incluirlo en en XML en el
atributo "certificado" ?

Entonces el archivo para validarlo en la pagina del SAT puede crearse
con puro codigo fox, si no me equivoco, por ej SET TEXTMERGE .. TO
FILE .. solo hay que convertir a variables los archivos del sello y
del certificado para la construccion del archivo XML

Corrijanme si me equivoco

Saludos
Hugo Aguilar

Hugo C.

unread,
Jun 16, 2010, 9:20:48 PM6/16/10
to Comunidad de Visual Foxpro en Español
Yo no soy carlos pero:

Este resultado es que el que se incluye en el XML en el atributo
"sello" ?
R: Cual resultado? si es el de el del base64, si.

El certificado (archivo cer) no se aplica para la creación del sello
digital solo en archivo de firma digital (*.key) ?
R:Asi es.

La conversion del certificado de ejemplo AAA010101AAA_CSD_0,1.cer a
..............> Es para obtener el valor del certificado e
incluirlo en en XML en el
> atributo "certificado" ?

R: Lo puesdes sacar de esta manera :

lcCertificado = ""
lcCertificado = FILETOSTR(AAA010101AAA.cer.pem)
lcCertificado = STRTRAN(lcCertificado, "-----BEGIN CERTIFICATE-----",
"")
lcCertificado = STRTRAN(lcCertificado, "-----END CERTIFICATE-----",
"")

pero para otras funciones con OPENSSL necesita ser PEM.

Entonces el archivo para validarlo en la pagina del SAT puede
crearse......
R: Yo lo creo mas o menos asi

PROCEDURE CreaXML(lcElemento, oData, lcXML)
lcElemento = LOWER(ALLTRIM(lcElemento))
DO CASE
CASE lcElemento = "comprobante"

TEXT TO lcXML TEXTMERGE NOSHOW ADDITIVE PRETEXT 7
<?xml version="1.0" encoding="utf-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sat.gob.mx/cfd/2
http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"
version="<<Validar(oData.version)>>" serie="<<Validar(oData.serie)>>"
folio="<<Validar(oData.folio)>>" fecha="<<Validar(oData.fecha)>>"
noAprobacion="<<Validar(oData.noAprobacion)>>"
anoAprobacion="<<Validar(oData.anoAprobacion)>>"
formaDePago="<<Validar(oData.formaDePago)>>"
subTotal="<<ValidarImporte(oData.subTotal)>>"
descuento="<<ValidarImporte(oData.descuento)>>"
total="<<ValidarImporte(oData.total)>>"
tipoDeComprobante="<<Validar(oData.tipoDeComprobante)>>"
noCertificado="<<Validar(oData.noCertificado)>>"
certificado="<<Validar(oData.certificado)>>"
sello="<<Validar(oData.sello)>>">
ENDTEXT

CASE lcElemento = "Emisor" .............



Saludos.
> > > podría ayudarme?? Se lo agradecería!!- Ocultar texto de la cita -

WoodFan

unread,
Jun 17, 2010, 8:35:32 PM6/17/10
to Comunidad de Visual Foxpro en Español
disculpa tocayo, me equivoque en el nombre

sobre la obtención del numero de serie certificado para colocarlo en
el XML con la instrucción:
openssl x509 -in AAA010101AAA.cer.pem -serial -out no_serie.txt
En la ventana de comandos el resultado es:
serial=3130303031323030303030303030303232353137
y el contenido del no_serie.txt es igual al ejemplo que me diste
(delimitado dentro de --begin certificate--, --end certificate-- )

Se puedo obtener la cadena de numeros que muestra la ejecucion del
comando en un archivo ?

saludos

Hugo Aguilar
> xsi:schemaLocation="http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"

Ing. Edgar Oñate

unread,
Jun 18, 2010, 11:22:03 AM6/18/10
to publice...@googlegroups.com
Gracias por tu aportación Hugo!!

Es de mucha ayuda

Saludos

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de WoodFan
Enviado el: jueves, 17 de junio de 2010 07:36 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

disculpa tocayo, me equivoque en el nombre

saludos

Hugo Aguilar

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5207 (20100618) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5207 (20100618) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5207 (20100618) __________

Hugo Carlos Aguilar Zapata

unread,
Jun 18, 2010, 2:50:58 PM6/18/10
to publice...@googlegroups.com
les comento que como algunos, al validar el XML en el sito del SAT el resultado dice que es sello es invalido

aqui muestra las instrucciones con OpenSSL que utilizo para generar el sello si alguno encuentra algo mal les agradezco su observacion. esto se peude hacer en linea de comandos windows y dentro de VFP con el comando RUN


&& Convierte la llave privada a formato PEM (base64)
openssl pkcs8 -inform DER -in aaa010101aaa_CSD_01.key -passin pass:a0123456789 -out AAA010101AAA.key.pem

&& Crea el sello digital con la cadena original y la llave privada en formato PEM
openssl dgst -c -sign AAA010101AAA.key.pem -out Sello.txt cadena_original.txt

&& Convierte el sello obtenido a base64

openssl base64 -in Sello.txt -out SelloBase64.txt

&& el certificado no es necesario para crear el sello, pero aqui muestra el valor en _Hexadecimal con openSSL.  Extrae el número de serie del certificado (llave pública)

openssl x509 -in AAA010101AAA.cer.pem -serial -out no_serie.txt
**Resultado >     serial=3130303031323030303030303030303232353137

Calqueir aporte o comentario
es bien recibido
Saludos


El 18 de junio de 2010 10:22, Ing. Edgar Oñate <edgar...@grupocompumas.com.mx> escribió:
Gracias por tu aportación Hugo!!

Es de mucha ayuda

Saludos

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de WoodFan
Enviado el: jueves, 17 de junio de 2010 07:36 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

Hugo C.

unread,
Jun 18, 2010, 3:13:30 PM6/18/10
to Comunidad de Visual Foxpro en Español
intentalo asi,

openssl x509 -in AAA010101AAA.cer.pem -serial -noout > no_serie.txt .

Por cierto, el nunero de serie seria asi.

lcNoSerie = STRCONV("3130303031323030303030303030303232353137", 16)
? lcNoSerie
10001200000000022517 && Este es el nunero de serie

Saludos.

On 18 jun, 12:50, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> les comento que como algunos, al validar el XML en el sito del SAT el
> resultado dice que es sello es invalido
>
> aqui muestra las instrucciones con OpenSSL que utilizo para generar el sello
> si alguno encuentra algo mal les agradezco su observacion. esto se peude
> hacer en linea de comandos windows y dentro de VFP con el comando RUN
>
> && Convierte la llave privada a formato PEM (base64)
> openssl pkcs8 -inform DER -in aaa010101aaa_CSD_01.key -passin
> pass:a0123456789 -out AAA010101AAA.key.pem
>
> && Crea el sello digital con la cadena original y la llave privada en
> formato PEM
> openssl dgst -c -sign AAA010101AAA.key.pem -out Sello.txt
> cadena_original.txt
>
> && Convierte el sello obtenido a base64
> openssl base64 -in Sello.txt -out SelloBase64.txt
>
> && el certificado no es necesario para crear el sello, pero aqui muestra el
> valor en _Hexadecimal con openSSL.  Extrae el número de serie del
> certificado (llave pública)
> openssl x509 -in AAA010101AAA.cer.pem -serial -out no_serie.txt
> **Resultado >     serial=3130303031323030303030303030303232353137
>
> Calqueir aporte o comentario
> es bien recibido
> Saludos
>
> El 18 de junio de 2010 10:22, Ing. Edgar Oñate <
> edgar.on...@grupocompumas.com.mx> escribió:
> > nternet/cfd/2/cfdv2.xsd<http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sitio_i%0Anternet/cf...>
> >http://www.eset.com- Ocultar texto de la cita -

Hugo C.

unread,
Jun 18, 2010, 3:25:37 PM6/18/10
to Comunidad de Visual Foxpro en Español
&& Crea el sello digital con la cadena original y la llave privada en
formato PEM
openssl dgst -c -sign AAA010101AAA.key.pem -out Sello.txt
cadena_original.txt


¿ la cadena_original.txt esta en UTF8 ?

Saludos.
> > >http://www.eset.com-Ocultar texto de la cita -
>
> > - Mostrar texto de la cita -- Ocultar texto de la cita -

Hugo Carlos Aguilar Zapata

unread,
Jun 18, 2010, 6:00:45 PM6/18/10
to publice...@googlegroups.com
Asi es
copio la cadena y la guardo con el bloc de notas en codificacion UTF-8
Creo que es todo lo necesario, y lo aplico al XML muestra del SAT, pero igual pagina de validacion muestra que el sello no es valido

leyendo mas sobre esto creo que falta convertir a MD5 la cadena original antes de aplicarle o "firmarlo" con la FEA y obtener el sello. pero no se como hacer esto



En espera de sus comentarios

envio saludos

Hugo Aguilar

Ing. Edgar Oñate

unread,
Jun 18, 2010, 6:02:50 PM6/18/10
to publice...@googlegroups.com
Hugo de que manera puedo hacer la cadena original a UTF8

Saludos!!!

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Hugo C.
Enviado el: viernes, 18 de junio de 2010 02:26 p.m.

Saludos.

database 5208 (20100618) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5208 (20100618) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5208 (20100618) __________

Hugo Carlos Aguilar Zapata

unread,
Jun 18, 2010, 6:03:46 PM6/18/10
to publice...@googlegroups.com
el argumento -nout indica que no se va mandar a nigun destino (en este caso un archivo) la ejecucion de comando

Saludos

Ing. Edgar Oñate

unread,
Jun 18, 2010, 6:11:02 PM6/18/10
to publice...@googlegroups.com
Porque con esto que estoy viendo creo que ya tengo más dudas!! =S.

Creí que solo me faltaba generar el comprobante; bueno realmente no se si
vaya bien, eso se va a saber al momento de tratar de validar la factura!!!
Había visto algo sobre el UTF8, pero tengo dudas!!

Saludos!!!

-----Mensaje original-----
De: publice...@googlegroups.com


[mailto:publice...@googlegroups.com] En nombre de Hugo C.

Enviado el: viernes, 18 de junio de 2010 02:26 p.m.

Saludos.

database 5208 (20100618) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5208 (20100618) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature

database 5208 (20100618) __________

Hugo Carlos Aguilar Zapata

unread,
Jun 18, 2010, 6:57:28 PM6/18/10
to publice...@googlegroups.com
La pregunta es para Hugo C. o para mi , Hugo Aguilar, =)

te doy mi respuesta, en mi caso como estoy en pruebas, la copio y la guardo en bloc de notas ahi tiene una opcion abajo de donde escribes el nombre del archivo que es Codificacion y ahi viene UTF-8, seleccionalo y guardala

Saludos
Hugo Aguilar



El 18 de junio de 2010 17:02, Ing. Edgar Oñate <edgar...@grupocompumas.com.mx> escribió:
Hugo de que manera puedo hacer la cadena original a UTF8

Saludos!!!

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Hugo C.
Enviado el: viernes, 18 de junio de 2010 02:26 p.m.
database 5208 (20100618) __________


The message was checked by ESET NOD32 Antivirus.

http://www.eset.com




__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5208 (20100618) __________


The message was checked by ESET NOD32 Antivirus.

http://www.eset.com



__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5208 (20100618) __________

Hugo C.

unread,
Jun 18, 2010, 8:29:12 PM6/18/10
to Comunidad de Visual Foxpro en Español
de esta manera,

CadenaOriginalUTF8 = STRCONV(CadenaOriginal, 9)
y esta es la que se usa con OPENSSL.

Saludos

On 19 jun, 00:03, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> el argumento -nout indica que no se va mandar a nigun destino (en este caso
> un archivo) la ejecucion de comando
>
> Saludos
>
> > > >http://www.eset.com-Ocultar texto de la cita -
>
> > > - Mostrar texto de la cita -- Ocultar texto de la cita -

Hugo C.

unread,
Jun 18, 2010, 8:55:02 PM6/18/10
to Comunidad de Visual Foxpro en Español
EL MD5 o digestion lo creas de esta manera.

openssl dgst -md5 cadenaOriginalUTF8.txt > cadenaMD5.txt.

a mi me resulto haciendolo de la manera que explique.

pero puedes checar esta pagina:
http://renetrejo.blogspot.com/2007/11/facturacin-electrnica.html

Saludos.

On 19 jun, 00:00, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> Asi es
> copio la cadena y la guardo con el bloc de notas en codificacion UTF-8
> Creo que es todo lo necesario, y lo aplico al XML muestra del SAT, pero
> igual pagina de validacion muestra que el sello no es valido
>
> leyendo mas sobre esto creo que falta convertir a MD5 la cadena original
> antes de aplicarle o "firmarlo" con la FEA y obtener el sello. pero no se
> como hacer esto
>
> En espera de sus comentarios
>
> envio saludos
>
> Hugo Aguilar
>
> > > > >http://www.eset.com-Ocultartexto de la cita -

Hugo C.

unread,
Jun 19, 2010, 10:12:51 PM6/19/10
to Comunidad de Visual Foxpro en Español
Este es el proceso que yo sigo para la generaciòn de la factura
digital :

1.- Crear la factura electronica (A1.XML ejm..) a partir
de mi base de datos. sin sello ni certificado solo
los datos de la factura.

2.- Sacar la cedena original del archivo creado (A1.XML)
3.- Crear el sello con la cadena.
4.- Tomar los datos de certificado.
5.- sellar la factura electronica (A1.XML) agregandole
sello,certificado...

R: "el sello es valido"

Saludos.
> ...
>
> leer más »- Ocultar texto de la cita -

Ing. Edgar Oñate

unread,
Jun 21, 2010, 1:09:34 PM6/21/10
to publice...@googlegroups.com

Jajaja gracias Hugo Aguilar, le estaba preguntando a Hugo C., pero gracias por tu aporte, ha sido de mucha ayuda lo que han aportado Hugo C. y tu!!!

 

Ahora estoy en el desarrollo y haciendo algunas pruebas!! Espero que todo resulte bien!!

 

Saludos.

__________ Information from ESET NOD32 Antivirus, version of virus signature database 5210 (20100619) __________

 

The message was checked by ESET NOD32 Antivirus.

 

http://www.eset.com

 

__________ Information from ESET NOD32 Antivirus, version of virus signature database 5215 (20100621) __________

 

The message was checked by ESET NOD32 Antivirus.

 

http://www.eset.com



__________ Information from ESET NOD32 Antivirus, version of virus signature database 5215 (20100621) __________

Jaime Fernández Samamé

unread,
Jun 21, 2010, 1:23:00 PM6/21/10
to publice...@googlegroups.com, "'mailto:edgar.onate@...@filtro.mef.gob.pe, "'mailto:hugocarlos...@filtro.mef.gob.pe, "'mailto:edgar.on...@...@filtro.mef.gob.pe

Buen dia  a todos

Que tal soy nuevo en el grupo de visual fox ,  y solicita quien pueda ayudarme en esto

 

Tengo una cadena de “caracteres” :

X=’15,16,17,18,19,20’

 

Lo que quiero es extraer los números 15  16   17   18    19   20   llevarlos a numéricos

 

Para luego hacer mi   consulta de tabla  :

 

Use table_expediente

Brow for  inlist(expediente,15,16,17,18,19,20)

 

 

Gracias antetodo

Hugo Carlos Aguilar Zapata

unread,
Jun 21, 2010, 3:15:36 PM6/21/10
to publice...@googlegroups.com
Saludos foxeros, espero que hayan tenido buen dia del padre aqui en Mex Y USA

Retomo el tema de la factura electronica
Aun en periodo de pruebas, validé un CFD que viene con la herramienta FirmaSAT (http://www.cryptosys.net/fsa/index.html) este hasta el momento es el que el validador indica que es correcto, pueden verlo en los archivos adjuntos, los que encontre de muestra por parte del SAT indica que el sello digital no es valido. (como es posible !!)

Tratando de emular con OpenSSL la creacion del sello digital del CFD adjunto:
UlUSwGNEicfigV6i4RhTy0eb2RYWFYyFatJFcM/u5Wlkb5XRxXiCizTGw5Yxz9oZNk8msAgO4C5Gevjh+S2TJPZueYhaQeZlo6k0rE3CQexkOGVRpHkvAoAgOM5kGKzYe24DKZbTgjNL+ai+tbhEHmRAFcpv2rDpehbL3w6BnYU

Repito las ejecuciones OpenSSL y comandos VFP
-Si la cadena ya tiene formato UTF8
lCadenaOriginal = FILETOSTR("C:\WinApps\factura electronica\Cer_Sello  \cadena_original_p4.txt")
STRTOFILE(lCadenaOriginal, "C:\WinApps\factura electronica\Cer_Sello\cadena_originalUTF8_p4.txt")

- Si no
lCadenaOriginal = FILETOSTR("C:\WinApps\factura electronica\Cer_Sello\cadena_original_p4.txt")
lCadenaOriginalUTF8 = STRCONV(lCadenaOriginal,9)
STRTOFILE(lCadenaOriginalUTF8, "C:\WinApps\factura electronica\Cer_Sello\cadena_originalUTF8_p4.txt")

*** Digestiòn de la cadena a MD5
C:\WinApps\factura electronica\Cer_Sello>openssl dgst -md5 cadena_OriginalUTF8_p
4.txt  > cadenaMD5_p4.txt

Debido a que el resultado de esta operacion genera el archivo cadenaMD5_p4.txt con el sig: contenido:
MD5(cadena_OriginalUTF8_p1.txt)= 4cd8ed248d7a02314c50778a37d1522d
** notese que el valor despues del signo = es el mismo que aparece en la pagina del SAT, creo que hasta el momento va bien

Al final del contenido  esta un caracter representado con un cuadrito, no se si este pertenezca a la digestion o solo los alfanumericos, por si las moscas hice esto en VFP para obtener un archivo con el resultado de la digestion sin y con ese ultimo caracter

lcadenaMD5 = FILETOSTR("C:\WinApps\factura electronica\Cer_Sello\cadenaMD5_p4.txt")
larchivoCadena = JUSTFNAME("C:\WinApps\factura electronica\Cer_Sello\cadena_OriginalUTF8_p4.txt")
ldigestionMD5 = SUBSTR(STRTRAN(lcadenaMD5, "MD5(" + larchivoCadena + ")= ", ""),1,32)
ldigestionMD5CaracterFinal = SUBSTR(STRTRAN(lcadenaMD5, "MD5(" + larchivoCadena + ")= ", ""),1)
STRTOFILE(ldigestionMD5, "C:\WinApps\factura electronica\Cer_Sello\DigestionMD5_p4.txt")
STRTOFILE(ldigestionMD5CaracterFinal, "C:\WinApps\factura electronica\Cer_Sello\DigestionMD5CF_p4.txt")

Despues de esto sigue la aplicacion de la llave privada y la posterior conversion a Base64 que en si es el Sello que se incluira en el CFD
aqui en un solo paso 
C:\WinApps\factura electronica\Cer_Sello>openssl dgst -sign AAA010101AAA.key.pem digestionMD5_p4.txt | openssl enc -base64 -A > sello_p4.txt
** archivo sin el caracter final

C:\WinApps\factura electronica\Cer_Sello>openssl dgst -sign AAA010101AAA.key.pem digestionMD5CF_p4.txt | openssl enc -base64 -A > sello_p4.txt
** archivo con el carater final

en ambos el resultado es diferente al valor del sello mostrado al principio

Entonces que puede estar equivocado ??

si alguno ya obtuvo el resultado correcto favor de comentarlo

Saludos

Hugo Aguilar




El 21 de junio de 2010 12:09, Ing. Edgar Oñate <edgar...@grupocompumas.com.mx> escribió:

Jajaja gracias Hugo Aguilar, le estaba preguntando a Hugo C., pero gracias por tu aporte, ha sido de mucha ayuda lo que han aportado Hugo C. y tu!!!

 

Ahora estoy en el desarrollo y haciendo algunas pruebas!! Espero que todo resulte bien!!

 

Saludos.

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Hugo Carlos Aguilar Zapata


Enviado el: viernes, 18 de junio de 2010 05:57 p.m.
Para: publice...@googlegroups.com

__________ Information from ESET NOD32 Antivirus, version of virus signature database 5210 (20100619) __________

 

The message was checked by ESET NOD32 Antivirus.

 

http://www.eset.com

 

__________ Information from ESET NOD32 Antivirus, version of virus signature database 5215 (20100621) __________

 

The message was checked by ESET NOD32 Antivirus.

 

http://www.eset.com



__________ Information from ESET NOD32 Antivirus, version of virus signature database 5215 (20100621) __________
pipedstring.txt
validacionCFD.jpg
MuestraFirmaSAT.xml

Victor Espina

unread,
Jun 21, 2010, 4:42:22 PM6/21/10
to Comunidad de Visual Foxpro en Español
Bueno, para hacer lo que quieres en VFP no hace falta que analizes la
cadena para obtener cada elemento individualmente. Basta con que hagas
esto:

LOCAL X,cForExpr
X=’15,16,17,18,19,20’
cForExpr = [INLIST(expendiente,] + X + [)]

Use table_expediente
Brow for  &cForExpr

Dicho esto, el problema que veo con la tecnica del INLIST() es que
existe la posibilidad de que el codigo falle si X contiene mas
elementos de los que soporta INLIST(). Una aproximacion mas segura
seria usar comparacion de cadenas:

X = [,] + X + [,]
USE table_expediente
BROWSE FOR [,] + ALLT(STR(expediente)) + [,] $ X

La razon para anadir una coma al inicio y al final de X es para poder
asegurar que todo elemento en X inicia con una coma y termina con una
coma, incluyendo el primero y el ultimo. De esta forma, usando la coma
como delimitador, me aseguro que un expediente "10" no de positivo en
la lista "100,200,300".

Ahora, dado que el operador $ no es optimizable por rushmore, esta
solucion solo seria eficiente si table_expediente contiene unos pocos
cientos de registros. Para tablas mas grandes, la solucion mas
eficiente seria usar un cursor temporal y un SET RELATION:

SELECT 0
CREATE CURSOR QEXPEDIENTES (expediente N (10))
INDEX ON expediente TAG xexpediente

FOR i = 1 TO GETWORDCOUNT(X,",")
nExpediente = INT(VAL(GETWORDNUM(X,i,",")))
INSERT INTO QEXPEDIENTES VALUES (nExpediente)
ENDFOR

SELECT QEXPEDIENTES
SET ORDER TO XEXPEDIENTE

SELECT table_expediente
SET RELATION TO expediente INTO QEXPEDIENTES additive
BROWSE FOR FOUND("QEXPEDIENTES")

Ahora, esta tecnica es 100% VFP, y por lo tanto seria luego dificil
migrar este codigo a SQL Server. Una solucion mas "compatible" con
ANSI-SQL seria hacer el browse sobre un cursor que contenga solo los
registros correspondientes a los expedientes indicados en X:

SELECT 0
CREATE CURSOR QEXPEDIENTES (expediente N (10))
INDEX ON expediente TAG xexpediente

FOR i = 1 TO GETWORDCOUNT(X,",")
nExpediente = INT(VAL(GETWORDNUM(X,i,",")))
INSERT INTO QEXPEDIENTES VALUES (nExpediente)
ENDFOR

SELECT a.* ;
FROM table_expedientes a, QEXPEDIENTES b ;
WHERE a.expediente = b.expediente ;
INTO CURSO QRESULT

SELECT QRESULT
BROWSE


Espero te sirva de ayuda

Saludos

Victor Espina





On 21 jun, 13:23, Jaime Fernández Samamé <fernand...@mef.gob.pe>
wrote:

Jaime Fernández Samamé

unread,
Jun 21, 2010, 5:27:52 PM6/21/10
to publice...@googlegroups.com
Muchas Gracias Victor Espina


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: Lunes, 21 de Junio de 2010 03:42 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

Bueno, para hacer lo que quieres en VFP no hace falta que analizes la

Mario Alfredo Oviedo

unread,
Jun 21, 2010, 5:25:47 PM6/21/10
to Comunidad de Visual Foxpro en Español
jaime, tenes que crear una nueva pregunta estas invadiendo la pregunta
del compañero, son reglas del grupo

Juan Carlos Cordero

unread,
Jun 22, 2010, 3:55:12 PM6/22/10
to publice...@googlegroups.com
Hola a todos. Primero que nada estamos en proceso de implementar las cfds en la empresa,el VFP ya lo he manejado bastante pero lo que es el openssl estoy comenzando a utilizarlo... he seguido con interes el desarrollo de este tema y estoy en lo siguiente:
* Instale el Openssl de la pagina donde el sat indica, instale primeramente Microsoft Visual C++ 2008 Redistributables y enseguida el Win32OpenSSL-1_0_0a.
 
* Luego intente hacer los procesos que indican para convertir, primeramente el la llaveprivada a .pem y poder seguir el proceso. el problema es que me dio un error. Describo primeramente como lo puse y luego el error que me marco.
 
OppenSSL> pkcs8 -inform DER -in c:\cfd\llaveprivada.key -passin pass:mipassword -out llaveprivada.pem
 
y marca el error:
Error decrypting key
2852:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:.\crypto\evp\evp_enc.c:466:
2852:error:23077074:PKCS12 routines:PKCS12_pbe_crypt:PKCS12 cipherfinal error:.\crypto\pkcs12\p12_decr.c:97:
2852:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:PKCS12 pbe crypt error:.\crypto\pkcs12\p12_decr.c:123:
error in pkcs8
la verdad no se por donde empezar a buscarle para solucionar este error y seguir el proceso por lo cual les pido si me pueden hechar una mano se los agradeceria, de antemano gracias.


From: edgar...@grupocompumas.com.mx
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Generacion de sello digital para facturacion electronica
Date: Mon, 21 Jun 2010 12:09:34 -0500

En Messenger están mis contactos con los que sí tengo contacto

Hugo Carlos Aguilar Zapata

unread,
Jun 22, 2010, 6:20:43 PM6/22/10
to publice...@googlegroups.com
Buenas tardes Juan Carlos
Si estas unsando tu propia llave, y confirmando que la constraseña es la correcta, te suguiero que copies el openssl.exe al directorio  windows\system32, y en linea de comandos cambiate a la carpeta c:\cfd

Haz la prueba a ver si es el mismo resultado

Cpy

unread,
Jun 24, 2010, 2:40:03 PM6/24/10
to Comunidad de Visual Foxpro en Español
Como hago para ejecutar el openssl en fox? con un run...o con que?
y otra pregunta, cuantas codificaciones se tuene que hacer son el
uft-8 en la cadena luego md5 despues decodificar la llave con openssl
y por ultimo base 64 al md5 y al .key?

espero me puedan ayudar

gracias

On 22 jun, 17:20, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> Buenas tardes Juan Carlos
> Si estas unsando tu propia llave, y confirmando que la constraseña es la
> correcta, te suguiero que copies el openssl.exe al directorio
> windows\system32, y en linea de comandos cambiate a la carpeta c:\cfd
>
> Haz la prueba a ver si es el mismo resultado
>
> El 22 de junio de 2010 14:55, Juan Carlos Cordero
> <juanc...@hotmail.com>escribió:
> > ------------------------------
> > From: edgar.on...@grupocompumas.com.mx
> > To: publice...@googlegroups.com
> > Subject: RE: [vfp] Re: Generacion de sello digital para facturacion
> > electronica
> > Date: Mon, 21 Jun 2010 12:09:34 -0500
>
> >  Jajaja gracias Hugo Aguilar, le estaba preguntando a Hugo C., pero
> > gracias por tu aporte, ha sido de mucha ayuda lo que han aportado Hugo C. y
> > tu!!!
>
> > Ahora estoy en el desarrollo y haciendo algunas pruebas!! Espero que todo
> > resulte bien!!
>
> > Saludos.
>
> > *De:* publice...@googlegroups.com [mailto:
> > publice...@googlegroups.com] *En nombre de *Hugo Carlos Aguilar
> > Zapata
>
> > *Enviado el:* viernes, 18 de junio de 2010 05:57 p.m.
> > *Para:* publice...@googlegroups.com
> > *Asunto:* Re: [vfp] Re: Generacion de sello digital para facturacion
> > electronica
>
> > La pregunta es para Hugo C. o para mi , Hugo Aguilar, =)
>
> > te doy mi respuesta, en mi caso como estoy en pruebas, la copio y la guardo
> > en bloc de notas ahi tiene una opcion abajo de donde escribes el nombre del
> > archivo que es Codificacion y ahi viene UTF-8, seleccionalo y guardala
>
> > Saludos
> > Hugo Aguilar
>
> >  El 18 de junio de 2010 17:02, Ing. Edgar Oñate <
> > edgar.on...@grupocompumas.com.mx> escribió:
> > > > >http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sitio_i<http://www.sat.gob.mx/cfd/2http:/www.sat.gob.mx/sitio_i>
>
> > nternet/cfd/2/cfdv2.xsd<
> >http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sit
> > io_i%0Anternet/cf..<http://www.sat.gob.mx/cfd/2http:/www.sat.gob.mx/sitio_internet/cf..>
> ...
>
> leer más »

Hugo Carlos Aguilar Zapata

unread,
Jun 24, 2010, 3:11:45 PM6/24/10
to publice...@googlegroups.com
Que tal,
sobre tus preguntas
1 asi es lo puedes ejecutar con RUN o !
o bien con el shell de windows

2 las codificaciones / decodificaciones son las sig. la conversion del la llave privada *.key peude hacerse en cualqueir momento antes de genrar el sello, y esto se hace porque opne SSL reconoce formato PEM para las llaves privadas y publicas

Pero lo requeirdo es
-Digestion de la cadena original con MD5
-Aplicar a esta digestion la llave privada
-Al resultado anterior convertirlo a Base64, este seria tu sello digital que es el que se incluye en el XML junto con al menos el Numero de certificado (llave publica)

Cpy

unread,
Jun 24, 2010, 5:59:57 PM6/24/10
to Comunidad de Visual Foxpro en Español
Muchas gracias por contestar

otra pregunta, veran ya hice prevas con la generacion del sello pero
no puedo hacer la codificacion a base 64 con openssl.

se puede hacer esa codificacion con el strconv? yo lo hice asi por que
tiene una funcion que los encripta a base 64 ¿o es forzosamente con el
openssl ?

ooo casi se me olvida en el openssl para brir el .key la sintaxis es
asi

OppenSSL> pkcs8 -inform DER -in c:\cfd\llaveprivada.key -passin
pass:mipassword -out llaveprivada.pem

pero mi pregunta es si el -passin pass mipassword, es el pass
del .key? o lo es una llamada a un archivo con el password? ahi no
entendi

ya or ultimo a la hora de hacer la digestion al la llave privada me da
un .txt con un buen de cuadros algo asi

◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘W◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘◘

asi deve salir o ya hice algo mal?

gracias por contestar

(Al fin un lugar donde saben que que hablo T T )

On 24 jun, 14:11, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> Que tal,
> sobre tus preguntas
> 1 asi es lo puedes ejecutar con RUN o !
> o bien con el shell de windows
>
> 2 las codificaciones / decodificaciones son las sig. la conversion del la
> llave privada *.key peude hacerse en cualqueir momento antes de genrar el
> sello, y esto se hace porque opne SSL reconoce formato PEM para las llaves
> privadas y publicas
>
> Pero lo requeirdo es
> -Digestion de la cadena original con MD5
> -Aplicar a esta digestion la llave privada
> -Al resultado anterior convertirlo a Base64, este seria tu sello digital que
> es el que se incluye en el XML junto con al menos el Numero de certificado
> (llave publica)
>
> ...
>
> leer más »

Hugo Carlos Aguilar Zapata

unread,
Jun 24, 2010, 7:18:42 PM6/24/10
to publice...@googlegroups.com
Sobre tus preguntas
Si se pude hacer la conversion con la funcion De FOX:  STRCONV(cadena, 13)

con openSSL seria

openssl base64 -in Sello.txt -out SelloBase64.txt

El parametro -passin es el password correspondiente a la llave privada (archivo key)

Esta mal, la digestion MD5, no se hace al llave privada si no a la cadena original en formato UTF8, intenta esto
openssl dgst -md5 cadenaOriginalUTF8.txt > cadenaMD5.txt

si te refieres a la conversion a formato PEM de la llave privada, tambien esta mal el resultado

=)

Saludos

Cpy

unread,
Jun 25, 2010, 12:09:05 PM6/25/10
to Comunidad de Visual Foxpro en Español
Ok ya me confundi

estoy haciendo esto

1 saco la cadena original en utf-8 (el formato lo saco igual son el
strconv(cadena,9) )
2 le aplico MD5 a la cadena original
3 aplico digestion al .pem de la llave privada (aqui es donde me
confundo por que estoy usando este comando

! openssl dgst -c -sign GAP050309HX9_0711280933S.pem -out
CadOrigUTF8.txt noten que se agrega la cadena original a la
digestion, esta bien asi? )

4 base 64 al md5 de la cadena original y a la digetion de la llave
privada

On 24 jun, 18:18, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> Sobre tus preguntas
> Si se pude hacer la conversion con la funcion De FOX:  STRCONV(cadena, 13)
>
> con openSSL seria
> openssl base64 -in Sello.txt -out SelloBase64.txt
>
> El parametro -passin es el password correspondiente a la llave privada
> (archivo key)
>
> Esta mal, la digestion MD5, no se hace al llave privada si no a la cadena
> original en formato UTF8, intenta esto
> openssl dgst -md5 cadenaOriginalUTF8.txt > cadenaMD5.txt
>
> si te refieres a la conversion a formato PEM de la llave privada, tambien
> esta mal el resultado
>
> =)
>
> Saludos
>
> ...
>
> leer más »

Cpy

unread,
Jun 25, 2010, 12:27:49 PM6/25/10
to Comunidad de Visual Foxpro en Español
Disculpen por el doble post pero no encontre donde se edita n nU

ultima pregunta la codificacion a base 64 es a la digestion del .pem y
al md5 de la cadena ogininal?

Muchas gracias en serio aqui avanse mucho el dia de ayer
> ...
>
> leer más »

Hugo Carlos Aguilar Zapata

unread,
Jun 25, 2010, 4:12:50 PM6/25/10
to publice...@googlegroups.com
como describes tu procedimiento esta correcto
y esta ejecución esta bien, al menos en cuanto a sintaxis =)

openssl dgst -c -sign GAP050309HX9_0711280933S.pem -out
CadOrigUTF8.txt

la conversion a Base64 es al archivo de resultados del comando anterior es decir a CadOrigUTF8.txt

que seria
openssl base64 -in CadOrigUTF8.txt -out SelloBase64.txt

Esto creo que contesta la pregunta posterior, pruebalo y comentanos tus resultados

Saludos
Hugo Aguilar

Cpy

unread,
Jun 25, 2010, 5:11:59 PM6/25/10
to Comunidad de Visual Foxpro en Español
Ok ya me salio un sello, segun entiendo lo tengo que validar junto con
el xml, nueva interrogante... como hago el XML?

eso y otra mas. hay una forma en la que el openssl lea la contraceña
del .key en un txt? o agregarla sin que el usario tenga que
introducirla

Al menos ya tengo el dichoso sello. como dato curioso llame a asesoria
por parte del SAT y no sabian de que estaba hablando!! aquien habra
hecho esta cosa... alo que veo es mas facil la facturacion de
Argentina

Saludos n n

On 25 jun, 15:12, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> como describes tu procedimiento esta correcto
> y esta ejecución esta bien, al menos en cuanto a sintaxis =)
> openssl dgst -c -sign GAP050309HX9_0711280933S.pem -out
> CadOrigUTF8.txt
>
> la conversion a Base64 es al archivo de resultados del comando anterior es
> decir a CadOrigUTF8.txt
>
> que seria
> openssl base64 -in CadOrigUTF8.txt -out SelloBase64.txt
>
> Esto creo que contesta la pregunta posterior, pruebalo y comentanos tus
> resultados
>
> Saludos
> Hugo Aguilar
>
> ...
>
> leer más »

Hugo Carlos Aguilar Zapata

unread,
Jun 26, 2010, 2:03:31 PM6/26/10
to publice...@googlegroups.com
Pudes usar el comando TEXT TO...
Ejemplo:
lstrNocert = ""
lstrNocert = ALLTRIM(tabladeconfig.nocert)

      TEXT TO lstrXML NOSHOW TEXT PRETEXT 7

         <?xml version="1.0" encoding="utf-8"?>
         <DataSet xmlns="http://www.sat.gob.mx">
         <serie="A" folio="2" fecha="2009-08-20T16:30:00" noAprobacion="1"
anoAprobacion="2009" formaDePago="Una sola exhibición" subTotal="550.00"
descuento="5.25" total="627.25" tipoDeComprobante="ingreso" noCertificado="<<lstrNocert>>"
         Resto de etiquetas de acuerdo al formato del SAT
         </DataSet>
   ENDTEXT

Para la contraseña, tu decides donde almacenarla, en un archivo, en un campo de una tabla, hasta donde entiendo la contraseña solo se aplica para pasar de DER a PEM

Ejemplo:
lstrClaveKeyFile = ALLTRIM(tabladeconfig.CKF)

STRTOFILE("openssl pkcs8 -inform DER -in aaa010101aaa_CSD_01.key -passin pass:" + lstrClaveKeyFile + " -out AAA010101AAA.key.pem", "DER2PEM.bat")
strArchivoBAT = "DER2PEM.bat"
RUN &strArchivoBAT

Lo anterior toma la contraseña de una tabla la pasa a una variable, construimos una cadena de la ejecución con OpenSSL, y lo grabamos en un archivo BAT, después solo ejecutamos el archivo

Saludos !!
 y comentanos de tus avances y resultados

Cpy

unread,
Jun 28, 2010, 4:48:11 PM6/28/10
to Comunidad de Visual Foxpro en Español
Me perdi en el Tex to
tengo que crearme mi tabla pero en que formato var o memo?
eso y donde le digo que se cree el documento?

mmm..no soy muy bueno en bases de datos si me puedes explicar como
funione el tex to por favor?

con respecto al pass ya quedo, solo me meten en un campo, lo guada en
la base y con el codigo que posteaste ya queda

muchas gracias :)

On 26 jun, 13:03, Hugo Carlos Aguilar Zapata
> ...
>
> leer más »

Hugo Carlos Aguilar Zapata

unread,
Jun 28, 2010, 6:31:03 PM6/28/10
to publice...@googlegroups.com

TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7
algun texto
ENDTEXT

lo anterior crea texto que sera enviado a una variabel LSTRXML, el texto obtenido es el que se genera detro de TEXT...ENDTEXT,
las clausulas NOSHOW, TEXTMERGE Y PRETEXT 7, indican que  al resultado no se desplegara en pantalla, las expresiones (funciones, comandos, variables) de VFP se evaluan y se mezclan con el texto, y elimina espacios, retorno de carro y avances de linea para que quede una cadena de texto continua

Covertir la variable a un archivo
STRTOFILE(lstrxml, "C:\CFD\XMLOUTPUT\factura111.xls")

Recomendación:
Lee el diseño del archivo XML para CFD de acuerdo a los lineamientos del SAT y Lee la Ayuda de VFP

Saludos

PREGUNTA
Alguno ha podido generar un sello valido con openSSL ??

Cpy

unread,
Jun 29, 2010, 1:02:46 PM6/29/10
to Comunidad de Visual Foxpro en Español
pues hasta ahora ya tengo el xml pero me lo marca erronero el mismo
internet que No se puede ver la entrada XML con la hoja de estilo XSL
a alguien mas le sale este resultado?

no entoendo que paso esta exactamente que el xml que te da el sat,
solo que con mis datos por lo demas esta igual


On 28 jun, 17:31, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7
> algun texto
> ENDTEXT
>
> lo anterior crea texto que sera enviado a una variabel LSTRXML, el texto
> obtenido es el que se genera detro de TEXT...ENDTEXT,
> las clausulas NOSHOW, TEXTMERGE Y PRETEXT 7, indican que  al resultado no se
> desplegara en pantalla, las expresiones (funciones, comandos, variables) de
> VFP se evaluan y se mezclan con el texto, y elimina espacios, retorno de
> carro y avances de linea para que quede una cadena de texto continua
>
> Covertir la variable a un archivo
> STRTOFILE(lstrxml, "C:\CFD\XMLOUTPUT\factura111.xls")
>
> Recomendación:
> Lee el diseño del archivo XML para CFD de acuerdo a los lineamientos del SAT
> y Lee la Ayuda de VFP
>
> Saludos
>
> PREGUNTA
> Alguno ha podido generar un sello valido con openSSL ??
>
> ...
>
> leer más »

miguel hernan huaman reyes

unread,
Jun 29, 2010, 1:10:03 PM6/29/10
to publice...@googlegroups.com


 hola deseo pasar  un exel con productos  cod  producto    a mi base de datos  en visual fox  sql

 

 

 

Atentamente,

 

Miguel Huaman Reyes

Seguricomp SRL- Ventas

Pucallpa-Peru




 
> Date: Tue, 29 Jun 2010 10:02:46 -0700
> Subject: [vfp] Re: Generacion de sello digital para facturacion electronica
> From: necro...@hotmail.com
> To: publice...@googlegroups.com


Discover the new Windows Vista Learn more!

william zuluaga

unread,
Jun 29, 2010, 2:15:27 PM6/29/10
to publice...@googlegroups.com
no entiendo, por lo que yo he utilizado siempre extraido la informacion de exel en las tablas de vfp6 con un comando
 
copy to nombrearchivo type xl5    && este me manda las columnas de la tabla abiert a un formato de exel 5.0/95
 
append from nombrearchivo type xl5  && este me abre la informacion de un archivo de excel guardado como exel 5.0/95
 
 
no se si esto es lo que necesitan o no?
 
william zuluaga

 


De: miguel hernan huaman reyes <miguel...@hotmail.com>
Para: publice...@googlegroups.com
Enviado: mar,29 junio, 2010 12:10
Asunto: [vfp] Quieropasar un exel a base de datos productos

Salvador Vega

unread,
Jun 29, 2010, 3:17:41 PM6/29/10
to miguel...@hotmail.com, publice...@googlegroups.com
cArchiv =
GetFile ( 'xls', 'BUSCAR RUTA' )
oExcel =
GetObject('','Excel.Application')
oExcel.WorkBooks.
Open(cArchiv)
nRenglo = 2
nColumn = 1
Do While
.T.
   cCam001 = oExcel.Cells(nRenglo,nColumn).
Value
   cCam002 = oExcel.Cells(nRenglo,nColumn+1).Value
   cCam003 = oExcel.Cells(nRenglo,nColumn+2).Value
   If Isnull
(cCam001)
     Exit
   EndIf
   nRenglo=nRenglo+1
EndDo
oExcel.Quit
 
Este código te puede servir para leer el archivo en excel y posteriormente pasarlo a tu programa.
 
Saludos
Salvador Vega M
D.F. México.
 


--- El mar 29-jun-10, william zuluaga <w2k2s...@yahoo.es> escribió:

Hugo Carlos Aguilar Zapata

unread,
Jun 29, 2010, 3:49:01 PM6/29/10
to publice...@googlegroups.com
Envianos tu ejemplo, para ver en que podemos ayudarte

Saludos

Cpy

unread,
Jun 29, 2010, 4:21:45 PM6/29/10
to Comunidad de Visual Foxpro en Español
ok, este es una prueva qu hice con el xml del sat, se supone que si
esta bien el del sat esta bien este no? pues no es cierto!
aqui mi ejemplo

TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7

<?xml version="1.0" encoding="UTF-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://
www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"
version="2.0" serie="A" folio="1" fecha="2009-08-16T16:30:00"
noAprobacion="1" anoAprobacion="2009" formaDePago="Una sola
exhibición" subTotal="350.00" descuento="5.25" total="397.25"
tipoDeComprobante="ingreso" noCertificado="10001200000000022517"
certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQEFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5GLjELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC1BZG1pbmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJVNlcnZpY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4WhcNMTAwODIxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0ExEzARBgNVBAsTClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0cml6IFNBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2IpLoTdNXg4ToGRZ/
f+hIjmj3N6ODWX1ARNFGYocEHf113GpW5Oe/
mj6UqhBpiH4JRTNR4Udb8myJTArIlODynVHuIUuyhKo7gbMbDdXjilTAYY2XWQuQ7aDtWwntUmNg4vAC/
F3OtRz3+y9wM5QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEAafyD4gMsOvq7E3raPntmQlJTxpWwNySqskE7fe23HVL9UKFCUlWWx/
W8gluxIX9S19y17iWnGbtmbNddHxG5PznPsy/a8PlwNHjDW0FOpia2LsvDrNcdPiJhzL/
1OVagkenffFf8bLEetF3ktxZ7ifcH1yxVxpZ7PS/
pe8YIOpWRuMmTV4ypGdsw9TW3HVP5IJ/
canuQGPTb3LQ8ojihW2dHnC6ojaWW4GHFSZAPhQJ/DaH/UgFjaQke/RBtoAketfROdG
+1qYeA1q/is04O4AXNmMByGp7ZnvGNrO9LDBvs3eKN4ZYcQyjxFEbr1X/
xUqHCRF1VEkkC5jJQ1ktC4g=="
sello="UlUSwGNEicfigV6i4RhTy0eb2RYWFYyFatJFcM/
u5Wlkb5XRxXiCizTGw5Yxz9oZNk8msAgO4C5Gevjh
+S2TJPZueYhaQeZlo6k0rE3CQexkOGVRpHkvAoAgOM5kGKzYe24DKZbTgjNL+ai
+tbhEHmRAFcpv2rDpehbL3w6BnYU=">
<Emisor nombre="Industrias del Sur Poniente, S.A. de C.V."
rfc="ISP900909Q88">
<DomicilioFiscal calle="Alvaro Obregón" codigoPostal="06700"
colonia="Col. Roma Norte" estado="Distrito Federal" localidad="México"
municipio="Cuauhtémoc" noExterior="37" noInterior="3" pais="México"></
DomicilioFiscal>
<ExpedidoEn calle="Pino Suarez" codigoPostal="95460"
colonia="Centro" estado="Nuevo Léon" localidad="Monterrey"
municipio="Monterrey" noExterior="23" pais="México"></ExpedidoEn>
</Emisor>
<Receptor nombre="Rosa María Calderón Uriegas" rfc="CAUR390312S87">
<Domicilio calle="Topochico" codigoPostal="95465"
colonia="Jardines del Valle" estado="Nuevo León" localidad="Monterrey"
municipio="Monterrey" noExterior="52" pais="México"></Domicilio>
</Receptor>
<Conceptos>
<Concepto cantidad="10" descripcion="Vasos decorados"
importe="200" unidad="Caja" valorUnitario="20.00"></Concepto>
<Concepto cantidad="1" descripcion="Charola metálica"
importe="150" unidad="pieza" valorUnitario="150.00"></Concepto>
</Concept>
</Comprobante>

ENDTEXT

STRTOFILE(lstrxml,"facturasat.xml",4)

como dato curioso cuando generoe el xml me marca un error en la linea
2, pero si aber el xml con bloc de notas y lo guardas sin modificar
nada, ya abre

a de veras este codigo esta en el click de un boton

espero me puedan ayudar

saludos!


On 29 jun, 14:49, Hugo Carlos Aguilar Zapata
<hugocarlosagui...@gmail.com> wrote:
> Envianos tu ejemplo, para ver en que podemos ayudarte
>
> Saludos
>
> ...
>
> leer más »

Oliverio Sierra

unread,
Jun 29, 2010, 7:49:00 PM6/29/10
to publice...@googlegroups.com
A tu archivo Excel quitale los encabezados y luego conviertelo a DBF, en caso de que tengas Office 2007 ese ya no convierte a DBF, lo tendrías que convertir a CSV (MS-DOS).

Ya convertido a CSV, lo que resta es hacer una estructura (DBF) identica a la de tu tabla de SQL, desde la linea de comandos de VFOXPRO haces esto.

SELECT tu DBF
APPEND FROM tu CSV DELIMITED

Esto pasara el contendio del CSV al DBF, Supongo que con el DBF ya podras actualizar tu SQL.

Saludos.
 
 
Oliverio Sierra Carmona




De: miguel hernan huaman reyes <miguel...@hotmail.com>
Para: publice...@googlegroups.com
Enviado: martes, 29 de junio, 2010 12:10:03

Asunto: [vfp] Quieropasar un exel a base de datos productos

Joel Hernan Dzul Balam

unread,
Jun 29, 2010, 8:45:17 PM6/29/10
to publice...@googlegroups.com
Hola buenas tardes
 
si tienes visual fox 6,7,8 o 9, puedes hacer lo siguiente:
 
1. convierte tu archivo de excel a formato excel 5.0 en la opcion de guardar como desde excel, no se te olvide quitar los encabezados a tu hoja de excel.
2. Crea la tabla  en la que vas a cargar los registros de excel, sigue la estructura de acuerdo al orden de tu hoja de excel. 3. Abre tu tabla con el visual fox, con el administrador de proyectos o con use tabla y browse. Te aparecerá una tabla vacia 
4. En el menu tabla hay una opcion que dice anexar registros, seleccionalo te aparecerá una ventana para seleccionar el archivo o fuente desde donde vas a tomar los registros
5.- En tipo selecciona excel 5.0
6.- En desde selecciona tu archivo de excel, te puedes mover con el explorador para localizar tu archivo
7.- Selecciona lo hoja de excel, en caso de tener varias hojas en tu archivo.
8.- Aceptar
 
Espero haberte ayudado.
 
Joel Hernan
 
 

Date: Tue, 29 Jun 2010 16:49:00 -0700
From: osie...@yahoo.com
Subject: Re: [vfp] Quieropasar un exel a base de datos productos
To: publice...@googlegroups.com

Soy como quiero ser en mi Messenger

Hugo Carlos Aguilar Zapata

unread,
Jun 30, 2010, 9:41:09 AM6/30/10
to publice...@googlegroups.com
Buenos dias
Puedes mandar el archivo ?

Hugo C.

unread,
Jun 30, 2010, 7:31:07 PM6/30/10
to Comunidad de Visual Foxpro en Español
1-- Estas cerrando mal " > </ DomicilioFiscal>
solo pon : />

2.-Estas cerrando mal </Concept>
debes poner : </Conceptos>

3.-Te falta la etiqueta de impuestos :

<Impuestos>
<Traslados>
<Traslado impuesto="IVA" tasa="15.00" importe="52.50"></
Traslado>
</Traslados>
</Impuestos>

4.- Guardalo de esta manera :

lstrxml = STRCONV(lstrxml, 9)
STRTOFILE(lstrxml,"facturasat.xml")

Saludos.

On 29 jun, 14:21, Cpy <necrova...@hotmail.com> wrote:
> ok, este es una prueva qu hice con el xml del sat, se supone que si
> esta bien el del sat esta bien este no? pues no es cierto!
> aqui mi ejemplo
>
> TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"
> version="2.0" serie="A" folio="1" fecha="2009-08-16T16:30:00"
> noAprobacion="1" anoAprobacion="2009" formaDePago="Una sola
> exhibición" subTotal="350.00" descuento="5.25" total="397.25"
> tipoDeComprobante="ingreso" noCertificado="10001200000000022517"
> certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5GL­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC1BZG1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJVNlcnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4WhcNMTAwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0ExEzARBgNVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0cml6IFNBMIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2IpLoTdNXg4ToGRZ/
> f+hIjmj3N6ODWX1ARNFGYocEHf113GpW5Oe/
> mj6UqhBpiH4JRTNR4Udb8myJTArIlODynVHuIUuyhKo7gbMbDdXjilTAYY2XWQuQ7aDtWwntUmN­g4vAC/
> F3OtRz3+y9wM5QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0­BAQUFAAOCAQEAafyD4gMsOvq7E3raPntmQlJTxpWwNySqskE7fe23HVL9UKFCUlWWx/
> ...
>
> leer más »- Ocultar texto de la cita -

Hugo C.

unread,
Jun 30, 2010, 7:32:37 PM6/30/10
to Comunidad de Visual Foxpro en Español
1-- Estas cerrando mal " > </ DomicilioFiscal>
solo pon : />

2.-Estas cerrando mal </Concept>
debes poner : </Conceptos>

3.-Te falta la etiqueta de impuestos :

<Impuestos>
<Traslados>
<Traslado impuesto="IVA" tasa="15.00" importe="52.50"></
Traslado>
</Traslados>
</Impuestos>

4.- Guardalo de esta manera :

lstrxml = STRCONV(lstrxml, 9)
STRTOFILE(lstrxml,"facturasat.xml")

Saludos.

On 29 jun, 14:21, Cpy <necrova...@hotmail.com> wrote:
> ok, este es una prueva qu hice con el xml del sat, se supone que si
> esta bien el del sat esta bien este no? pues no es cierto!
> aqui mi ejemplo
>
> TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"
> version="2.0" serie="A" folio="1" fecha="2009-08-16T16:30:00"
> noAprobacion="1" anoAprobacion="2009" formaDePago="Una sola
> exhibición" subTotal="350.00" descuento="5.25" total="397.25"
> tipoDeComprobante="ingreso" noCertificado="10001200000000022517"
> certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5GL­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC1BZG1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJVNlcnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4WhcNMTAwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0ExEzARBgNVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0cml6IFNBMIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2IpLoTdNXg4ToGRZ/
> f+hIjmj3N6ODWX1ARNFGYocEHf113GpW5Oe/
> mj6UqhBpiH4JRTNR4Udb8myJTArIlODynVHuIUuyhKo7gbMbDdXjilTAYY2XWQuQ7aDtWwntUmN­g4vAC/
> F3OtRz3+y9wM5QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0­BAQUFAAOCAQEAafyD4gMsOvq7E3raPntmQlJTxpWwNySqskE7fe23HVL9UKFCUlWWx/

Cpy

unread,
Jul 1, 2010, 5:45:24 PM7/1/10
to Comunidad de Visual Foxpro en Español
Comandos corregidos! XML valido ante el sat, ahora lo que esta mal es
el sello, voy a hacer algunas pruevas y culquiera quesea el resultado
lo comento con ustedes

saludos

On 30 jun, 18:31, "Hugo C." <hcchav...@gmail.com> wrote:
> 1-- Estas cerrando mal  " > </ DomicilioFiscal>
>            solo pon    :        />
>
> 2.-Estas cerrando mal  </Concept>
>            debes poner :   </Conceptos>
>
> 3.-Te falta la etiqueta de impuestos :
>
>    <Impuestos>
>     <Traslados>
>       <Traslado impuesto="IVA" tasa="15.00" importe="52.50"></
> Traslado>
>     </Traslados>
>   </Impuestos>
>
> 4.- Guardalo de esta manera :
>
>    lstrxml = STRCONV(lstrxml, 9)
>    STRTOFILE(lstrxml,"facturasat.xml")
>
> Saludos.
>
> On 29 jun, 14:21, Cpy <necrova...@hotmail.com> wrote:
>
> > ok, este es una prueva qu hice con el xml del sat, se supone que si
> > esta bien el del sat esta bien este no? pues no es cierto!
> > aqui mi ejemplo
>
> > TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7
>
> > <?xml version="1.0" encoding="UTF-8"?>
> > <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2http://www.sat.gob.mx/sitio_internet/cfd/2..."
> ...
>
> leer más »

Hugo C.

unread,
Jul 1, 2010, 8:00:42 PM7/1/10
to Comunidad de Visual Foxpro en Español
Pruba de esta manera

Copea la cadena original que te pone el
validador del sat al validar el XML.

conviertela a utf8 (strconv(caden, 9)

guardala en CadOrigUTF8.txt
CadOrigUTF8.txt && <= archivo con la cadena original en UTF8

y aplicale estos comandos ;

* crear sello ( Sello.txt )

openssl dgst -c -sign llavePrivada.pem -out Sello.txt CadOrigUTF8.txt

* pasarlo a base64

openssl base64 -in Sello.txt -out SelloBase64.txt && <= archivo con
el sello final


* claro que primero tienes que pasar la llavePrivada.key a
llavePrivada.pem


openssl.exe pkcs8 -inform DER -in llavePrivada.key -passin
pass:mipassword -out llavePrivada.pem


Saludos.




> > > certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5G­L­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC1BZG­1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJVNl­cnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4WhcNMT­AwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEe­MBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0ExEzARBg­NVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0cml6IFNB­MIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2IpLoTdNXg4T­oGRZ/

Hugo C.

unread,
Jul 1, 2010, 8:01:17 PM7/1/10
to Comunidad de Visual Foxpro en Español
Pruba de esta manera

Copea la cadena original que te pone el
validador del sat al validar el XML.

conviertela a utf8 (strconv(caden, 9)

guardala en CadOrigUTF8.txt
CadOrigUTF8.txt && <= archivo con la cadena original en UTF8

y aplicale estos comandos ;

* crear sello ( Sello.txt )

openssl dgst -c -sign llavePrivada.pem -out Sello.txt CadOrigUTF8.txt

* pasarlo a base64

openssl base64 -in Sello.txt -out SelloBase64.txt && <= archivo con
el sello final


* claro que primero tienes que pasar la llavePrivada.key a
llavePrivada.pem


openssl.exe pkcs8 -inform DER -in llavePrivada.key -passin
pass:mipassword -out llavePrivada.pem


Saludos.




On 1 jul, 15:45, Cpy <necrova...@hotmail.com> wrote:
> > > certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5G­L­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC1BZG­1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJVNl­cnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4WhcNMT­AwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEe­MBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0ExEzARBg­NVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0cml6IFNB­MIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2IpLoTdNXg4T­oGRZ/

Cpy

unread,
Jul 2, 2010, 6:46:08 PM7/2/10
to Comunidad de Visual Foxpro en Español
Copea la cadena original que te pone el
validador del sat al validar el XML. Listo

conviertela a utf8 (strconv(caden, 9) ok!

CadOrigUTF8.txt perfecto!

openssl dgst -c -sign llavePrivada.pem -out Sello.txt CadOrigUTF8.txt
Aqui mi duda este dgst es al CadOrigUTF8.txt en md5 o asi en utf8?

Lo demas ya esta bien

otra pregunta, el resultado sello.txt me da en formato unicode, tengo
que combertirlo a utf8?

uff, si es de pansar esto...lo peor soy nuevo en fox y no se me hace
dificil, lo que me quema las neuronas es el openssl y los
requerimentos del SAT jejeje

Saludos
> ...
>
> leer más »

Hugo C.

unread,
Jul 2, 2010, 9:54:49 PM7/2/10
to Comunidad de Visual Foxpro en Español
openssl dgst -c -sign llavePrivada.pem -out Sello.txt CadOrigUTF8.txt
Aqui mi duda este dgst es al CadOrigUTF8.txt en md5 o asi en utf8?

Yo se lo aplico a la cadena en UTF8 sin el MD5 y es como
me funciona..

otra pregunta, el resultado sello.txt me da en formato unicode, tengo
que combertirlo a utf8?

No, asi tal como esta en base64. algo como esto :

f/ut6nSAThIi7RaSYtE9aKEv7vlM4inGFrjIVO1 .......

Saludos y Suerte.
> > > > > certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­­­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5­G­L­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC1B­ZG­1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJ­VNl­cnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMjA4Wh­cNMT­AwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUF­BQTEe­MBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaXogU0Ex­EzARBg­NVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKRMJTWF0c­ml6IFNB­MIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2IpL­oTdNXg4T­oGRZ/

Francisco Ibarra

unread,
Jul 3, 2010, 1:00:22 AM7/3/10
to publice...@googlegroups.com
Bueno el post esta mas que descrito según yo, quiero cambiar en el grupo la suscripción a otro correo, de antemano, gracias, saludos.!





> Date: Fri, 2 Jul 2010 18:54:49 -0700
> Subject: [vfp] Re: Generacion de sello digital para facturacion electronica
> From: hcch...@gmail.com
> To: publice...@googlegroups.com

Cpy

unread,
Jul 5, 2010, 4:36:59 PM7/5/10
to Comunidad de Visual Foxpro en Español
Ya vi mi error y esta en la cadena original, esto lo vi con un
combertidor en linea para codificar en md5 y mi situacion esta asi

la cadena que da el sat es valida incluso en el validador de md5
mientras que el mio no, siendo que es la misma cadena, ahora estoy
pensando que es por la codificacion uft-8
sules archivos aparte del xml van en ese formato igual estoy mal por
eso

les dejo la pagina del validador md5 para que lo vena y comparen

http://cali.perudatanet.com/index.php/page/con_script_php_convertir_texto_MD5/es.html
> ...
>
> leer más »

Cpy

unread,
Jul 6, 2010, 5:51:18 PM7/6/10
to Comunidad de Visual Foxpro en Español
pues ya he estado haciendo mas pruevas y llegua a que la cadena sea
igual a la del sat, pero sigue estando algo mal
yo digo que son los fomatos.

me podiran decir cuales datos van en el formato utf-8? solo se que son
la cadena original y el xml
otra, me he dado cuenta de que mi archivo resultante de la digestion
con openssl dgst c- me da el archivo en codificacion unicode, hay una
forma de pasarlo a ansi o utf-8

On 5 jul, 15:36, Cpy <necrova...@hotmail.com> wrote:
> Ya vi mi error y esta en la cadena original, esto lo vi con un
> combertidor en linea para codificar en md5 y mi situacion esta asi
>
> la cadena que da el sat es valida incluso en el validador de md5
> mientras que el mio no, siendo que es la misma cadena, ahora estoy
> pensando que es por la codificacion uft-8
> sules archivos aparte del xml van en ese formato igual estoy mal por
> eso
>
> les dejo la pagina del validador md5 para que lo vena y comparen
>
> http://cali.perudatanet.com/index.php/page/con_script_php_convertir_t...
> ...
>
> leer más »

Cpy

unread,
Jul 8, 2010, 10:51:05 AM7/8/10
to Comunidad de Visual Foxpro en Español
codigo listo!! factura validada y provada por el SAT
al parecer lo que tenia mal era la cadena y como dice Hugo C. la
digestion se hace al la cadena original y al archivo .key . pem y
listo
ahora solo tengo que hacer que el programa se vea bonito XD

Cualquier duda que tengan no duden el postear
> ...
>
> leer más »

Ernesto Arias

unread,
Jul 8, 2010, 12:19:09 PM7/8/10
to publice...@googlegroups.com
Hola estimado foxero, trate de entrar  a direccion para bajar la validacion pero me manda un aviso de que no existe la pagina, podrias checarlo por favor, ademas te pido de favor si me puedes enviar algunos ejemplos de la factura digital.
 
 
saludos
 
 
 
> Date: Thu, 8 Jul 2010 07:51:05 -0700
> Subject: [vfp] Re: Generacion de sello digital para facturacion electronica
> From: necro...@hotmail.com
> To: publice...@googlegroups.com

En Messenger están mis contactos con los que sí tengo contacto

Cpy

unread,
Jul 8, 2010, 1:34:38 PM7/8/10
to Comunidad de Visual Foxpro en Español
la pagina esta bien, la acabo de revisar pero no es para bajar la
validacion, es solo un conversor de md5 en linea, esto espara comparar
las cadena resultante

sobre el ejemplo , pues no es nesesario mandar ya que en este tema
biene todo lo que requieres hacer, asi fue como me salio, ahora si
tienes dudas en especifico postealas y las resolvemos

saludos

On 8 jul, 11:19, Ernesto Arias <ernesto_ari...@hotmail.com> wrote:
> Hola estimado foxero, trate de entrar  a direccion para bajar la validacion pero me manda un aviso de que no existe la pagina, podrias checarlo por favor, ademas te pido de favor si me puedes enviar algunos ejemplos de la factura digital.
>
> saludos
>
> > Date: Thu, 8 Jul 2010 07:51:05 -0700
> > Subject: [vfp] Re: Generacion de sello digital para facturacion electronica
> > From: necrova...@hotmail.com
> ...
>
> leer más »

Hugo C.

unread,
Jul 8, 2010, 3:01:24 PM7/8/10
to Comunidad de Visual Foxpro en Español
Que bueno que ya lo lograste.

Por cierto esta es una manera de ejecutar comandos
de MS-DOS desde FOX sin el molesto pantallaso de la consola con el
RUN.

LOCAL loShell, lcCmd, lcArchivo
loShell = CREATEOBJECT("WScript.Shell")
lcCmd = "C:\OPENSSL\Bin\openssl base64 -in sello_binario.txt -out
base64.txt"
lcArchivo = GetEnv("TEMP") + "" + Sys(2015) + ".bat"
StrToFile(lcCmd, lcArchivo)
loShell.Run(lcArchivo, 0, 1)

Saludos.
> > > > > > > > > certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­­­­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC­5­G­L­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC­1B­ZG­1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBA­oUJ­VNl­cnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMj­A4Wh­cNMT­AwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMD­EwMUF­BQTEe­MBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaX­ogU0Ex­EzARBg­NVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKR­MJTWF0c­ml6IFNB­MIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFD­Jexk2IpL­oTdNXg4T­oGRZ/

Hugo C.

unread,
Jul 8, 2010, 3:02:39 PM7/8/10
to Comunidad de Visual Foxpro en Español
Que bueno que ya lo lograste.

Por cierto esta es una manera de ejecutar comandos
de MS-DOS desde FOX, sin el molesto pantallaso de la consola con el
RUN.

LOCAL loShell, lcCmd, lcArchivo
loShell = CREATEOBJECT("WScript.Shell")
lcCmd = "C:\OPENSSL\Bin\openssl base64 -in sello_binario.txt -out
base64.txt"
lcArchivo = GetEnv("TEMP") + "" + Sys(2015) + ".bat"
StrToFile(lcCmd, lcArchivo)
loShell.Run(lcArchivo, 0, 1)

Saludos.

On 8 jul, 08:51, Cpy <necrova...@hotmail.com> wrote:
> > > > > > > > > certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­­­­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC­5­G­L­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQLFC­1B­ZG­1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBA­oUJ­VNl­cnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMTUyMj­A4Wh­cNMT­AwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMD­EwMUF­BQTEe­MBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlNYXRyaX­ogU0Ex­EzARBg­NVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBAGA1UEKR­MJTWF0c­ml6IFNB­MIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFD­Jexk2IpL­oTdNXg4T­oGRZ/

Cpy

unread,
Jul 8, 2010, 5:24:51 PM7/8/10
to Comunidad de Visual Foxpro en Español
Grax por los cosejos Hugo! ya solo es que quede presentable el
programa

ahora como lo veo en mi prueva estan todos los archivos en la carpeta
de proyectos de fox y lo que me gustaria sera un boton buscador o de
examinar que me indique la ruta donde se va aplicar el openssl

lo intente con un get file pero me copia toda la ruta desde c:\mis
documentos\etc
para que no esten estaticos los archivos

y se puedan cargar desde cuanquier lugar

espero que no sea tan dificil
> ...
>
> leer más »

Hugo C.

unread,
Jul 8, 2010, 5:48:45 PM7/8/10
to Comunidad de Visual Foxpro en Español
No se si entendi, pero yo guardo las rutas
en una tabla y luego las paso a variables
Ejem :

lcRutaOpenSSL = miTabla.RutaOpenSSL && C:\OPENSSL\BIN\
lcRutaCFD = miTabla.RutaCFD && C:\CFD\

LOCAL loShell, lcCmd, lcArchivo
loShell = CREATEOBJECT("WScript.Shell")
lcCmd = lcRutaOpenSSL + " openssl base64 -in " + lcRutaCFD +
"sello_binario.txt " + .....
lcArchivo = GetEnv("TEMP") + "" + Sys(2015) + ".bat"
StrToFile(lcCmd, lcArchivo)
loShell.Run(lcArchivo, 0, 1)


Saludos.




> > > > > > > > > > > certificado="MIIDhDCCAmygAwIBAgIUMTAwMDEyMDAwMDAwMDAwMjI1MTcwDQYJKoZIhvcNAQ­­­­­EFBQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgR­C­5­G­L­jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FUMTYwNAYDVQQL­FC­1B­ZG­1p­bmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgN­VBA­oUJ­VNl­cnZ­pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNMDgwODIxMT­UyMj­A4Wh­cNMT­AwOD­IxMTUyMjA4WjCBmDElMCMGA1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQ­TAxMD­EwMUF­BQTEe­MBwGA­1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwlN­YXRyaX­ogU0Ex­EzARBg­NVBAsT­ClVuaWRhZCAxMCAxEjAQBgNVBAMTCU1hdHJpeiBTQTESMBA­GA1UEKR­MJTWF0c­ml6IFNB­MIGfMA0­GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzC­FtMcbaFD­Jexk2IpL­oTdNXg4T­oGRZ/

Cpy

unread,
Jul 12, 2010, 5:41:25 PM7/12/10
to Comunidad de Visual Foxpro en Español
jeje ya tembien resolvi eso, el mio no los guarda solo los llama, los
renombre y le cambio al openssl la ruta de donde debe buscar y
desencriptar

jeje yo cre que ya estaba todo listo pero me quedan 2 problemas haber
si me pueden dar alguna pista de como solucionar

veran el primero es el certificado en el xml, intente quitar lo que no
sirve como

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpmiW1q9gyzCFtMcbaFDJexk2I
pLoTdNXg4ToGRZ/f+hIjmj3N6ODWX1ARNFGYocEHf113GpW5Oe/mj6UqhBpiH4JR
TNR4Udb8myJTArIlODynVHuIUuyhKo7gbMbDdXjilTAYY2XWQuQ7aDtWwntUmNg4
vAC/F3OtRz3+y9wM5QIDAQAB
-----END PUBLIC KEY-----

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

intente con strtran pero solo me quita la cadena que especificamente
pongo, lo demas lo deja y lo que requiere es la cadena desde begin
certificate hasta end certicicate

ahi si no que como quitarle desde el programa ya que los cello son
diferentes con cada emisor

es y tambien tengo problemas con el xml ya que lo hice con la
recomendacion de Hugo.c y todo esta bien, colo que a la hora de
agregar otro articulo no se como hacer que paresca la etiqueta
<concepto

espero me puedan ayudar

saludos
> > > > codigo listo!!facturavalidada y provada por el SAT
> ...
>
> leer más »

Hugo C.

unread,
Jul 12, 2010, 7:46:15 PM7/12/10
to Comunidad de Visual Foxpro en Español
1.- Sacar el certificado

lcCertificado = FILETOSTR("miCertificado.cer.pem")

lcCertificado = STREXTRACT(lcCertificado, "-----BEGIN
CERTIFICATE-----", "-----END CERTIFICATE-----")

Lo segundo no lo entendi.

Saludos.

Hugo C.

unread,
Jul 12, 2010, 7:46:45 PM7/12/10
to Comunidad de Visual Foxpro en Español
1.- Sacar el certificado

lcCertificado = FILETOSTR("miCertificado.cer.pem")

lcCertificado = STREXTRACT(lcCertificado, "-----BEGIN
CERTIFICATE-----", "-----END CERTIFICATE-----")

Lo segundo no lo entendi.

Saludos.


On 12 jul, 15:41, Cpy <necrova...@hotmail.com> wrote:

Hugo C.

unread,
Jul 12, 2010, 11:31:12 PM7/12/10
to Comunidad de Visual Foxpro en Español
2.- Crear los conceptos

* consultar los conceptos de la factura n
SELECT nCantidad, cArticulo, cDescripcion, nPrecio, nImporte;
FROM FacturaDet ...

* pasarlos a XML
SELECT miCursor
SCAN
lcXMLConceptos = "<Conceptos>"
TEXT TO lcXMLConceptos ... ADDITIVE
<Concepto cantidad="<<miCursor.nCantidad>>"
descripcion="<<miCursor.cDescripcion>>" ... />
ENDTEXT
lcXMLConceptos = lcXMLConceptos + </Conceptos>
ENDSCAN

* agregar los conceptos al comprobante
lcXMLComprobante = lcXMLComprobante + lcXMLConceptos

* ...

Ing. Edgar Oñate

unread,
Jul 17, 2010, 2:32:52 PM7/17/10
to publice...@googlegroups.com
Buen día a todos!!

Qué procedimiento llevaste a cabo para resolver el problema?? Porque a mi me sucede exactamente lo mismo!!

Saludos!


-----Mensaje original-----
De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Cpy
Enviado el: martes, 29 de junio de 2010 12:03 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

pues hasta ahora ya tengo el xml pero me lo marca erronero el mismo
internet que No se puede ver la entrada XML con la hoja de estilo XSL
a alguien mas le sale este resultado?

no entoendo que paso esta exactamente que el xml que te da el sat,

solo que con mis datos por lo demas esta igual


On 28 jun, 17:31, Hugo Carlos Aguilar Zapata


<hugocarlosagui...@gmail.com> wrote:
> TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7

> algun texto
> ENDTEXT
>
> lo anterior crea texto que sera enviado a una variabel LSTRXML, el texto
> obtenido es el que se genera detro de TEXT...ENDTEXT,
> las clausulas NOSHOW, TEXTMERGE Y PRETEXT 7, indican que al resultado no se

> desplegara en pantalla, las expresiones (funciones, comandos, variables) de
> VFP se evaluan y se mezclan con el texto, y elimina espacios, retorno de
> carro y avances de linea para que quede una cadena de texto continua
>
> Covertir la variable a un archivo
> STRTOFILE(lstrxml, "C:\CFD\XMLOUTPUT\factura111.xls")
>
> Recomendación:
> Lee el diseño del archivo XML para CFD de acuerdo a los lineamientos del SAT
> y Lee la Ayuda de VFP
>
> Saludos
>
> PREGUNTA
> Alguno ha podido generar un sello valido con openSSL ??
>

> El 28 de junio de 2010 15:48, Cpy <necrova...@hotmail.com> escribió:
>
> > Me perdi en el Tex to
> > tengo que crearme mi tabla pero en que formato var o memo?
> > eso y donde le digo que se cree el documento?
>
> > mmm..no soy muy bueno en bases de datos si me puedes explicar como
> > funione el tex to por favor?
>
> > con respecto al pass ya quedo, solo me meten en un campo, lo guada en
> > la base y con el codigo que posteaste ya queda
>
> > muchas gracias :)
>

> > On 26 jun, 13:03, Hugo Carlos Aguilar Zapata


> > <hugocarlosagui...@gmail.com> wrote:
> > > Pudes usar el comando TEXT TO...
> > > Ejemplo:
> > > lstrNocert = ""
> > > lstrNocert = ALLTRIM(tabladeconfig.nocert)
>

> > > TEXT TO lstrXML NOSHOW TEXT PRETEXT 7
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <DataSet xmlns="http://www.sat.gob.mx">

> > > <serie="A" folio="2" fecha="2009-08-20T16:30:00"
> > noAprobacion="1"


> > > anoAprobacion="2009" formaDePago="Una sola exhibición" subTotal="550.00"
> > > descuento="5.25" total="627.25" tipoDeComprobante="ingreso"
> > > noCertificado="<<lstrNocert>>"
> > > Resto de etiquetas de acuerdo al formato del SAT
> > > </DataSet>
> > > ENDTEXT
>
> > > Para la contraseña, tu decides donde almacenarla, en un archivo, en un
> > campo

> > > de una tabla, hasta donde entiendo la contraseña solo se aplica para
> > pasar
> > > de DER a PEM
>
> > > Ejemplo:
> > > lstrClaveKeyFile = ALLTRIM(tabladeconfig.CKF)
>
> > > STRTOFILE("openssl pkcs8 -inform DER -in aaa010101aaa_CSD_01.key -passin
> > > pass:" + lstrClaveKeyFile + " -out AAA010101AAA.key.pem", "DER2PEM.bat")
> > > strArchivoBAT = "DER2PEM.bat"
> > > RUN &strArchivoBAT
>
> > > Lo anterior toma la contraseña de una tabla la pasa a una variable,
> > > construimos una cadena de la ejecución con OpenSSL, y lo grabamos en un
> > > archivo BAT, después solo ejecutamos el archivo
>
> > > Saludos !!
> > > y comentanos de tus avances y resultados
>
> > > El 25 de junio de 2010 16:11, Cpy <necrova...@hotmail.com> escribió:
>

> > > > Ok ya me salio un sello, segun entiendo lo tengo que validar junto con
> > > > el xml, nueva interrogante... como hago el XML?
>
> > > > eso y otra mas. hay una forma en la que el openssl lea la contraceña
> > > > del .key en un txt? o agregarla sin que el usario tenga que
> > > > introducirla
>
> > > > Al menos ya tengo el dichoso sello. como dato curioso llame a asesoria
> > > > por parte del SAT y no sabian de que estaba hablando!! aquien habra
> > > > hecho esta cosa... alo que veo es mas facil la facturacion de
> > > > Argentina
>
> > > > Saludos n n
>

> > > > On 25 jun, 15:12, Hugo Carlos Aguilar Zapata


> > > > <hugocarlosagui...@gmail.com> wrote:
> > > > > como describes tu procedimiento esta correcto
> > > > > y esta ejecución esta bien, al menos en cuanto a sintaxis =)
> > > > > openssl dgst -c -sign GAP050309HX9_0711280933S.pem -out
> > > > > CadOrigUTF8.txt
>

> > > > > la conversion a Base64 es al archivo de resultados del comando
> > anterior
> > > > es
> > > > > decir a CadOrigUTF8.txt
>
> > > > > que seria
> > > > > openssl base64 -in CadOrigUTF8.txt -out SelloBase64.txt
>
> > > > > Esto creo que contesta la pregunta posterior, pruebalo y comentanos
> > tus
> > > > > resultados
>
> > > > > Saludos
> > > > > Hugo Aguilar
>

> > > > > El 25 de junio de 2010 11:09, Cpy <necrova...@hotmail.com> escribió:
>
> > > > > > Ok ya me confundi
>
> > > > > > estoy haciendo esto
>

> > > > > > 1 saco la cadena original en utf-8 (el formato lo saco igual son el
> > > > > > strconv(cadena,9) )
> > > > > > 2 le aplico MD5 a la cadena original
> > > > > > 3 aplico digestion al .pem de la llave privada (aqui es donde me
> > > > > > confundo por que estoy usando este comando
>

> > > > > > ! openssl dgst -c -sign GAP050309HX9_0711280933S.pem -out


> > > > > > CadOrigUTF8.txt noten que se agrega la cadena original a la
> > > > > > digestion, esta bien asi? )
>
> > > > > > 4 base 64 al md5 de la cadena original y a la digetion de la llave
> > > > > > privada
>

> > > > > > On 24 jun, 18:18, Hugo Carlos Aguilar Zapata


> > > > > > <hugocarlosagui...@gmail.com> wrote:
> > > > > > > Sobre tus preguntas
> > > > > > > Si se pude hacer la conversion con la funcion De FOX:
> > > > STRCONV(cadena,
> > > > > > 13)
>

> > > > > > > con openSSL seria


> > > > > > > openssl base64 -in Sello.txt -out SelloBase64.txt
>

> > > > > > > > On 24 jun, 14:11, Hugo Carlos Aguilar Zapata

> > > > > > > > > > On 22 jun, 17:20, Hugo Carlos Aguilar Zapata

Ing. Edgar Oñate

unread,
Jul 22, 2010, 12:28:47 PM7/22/10
to publice...@googlegroups.com
Buen día a todos!!

Tengo el siguiente problema:

El sello del comprobante presenta problemas:
Comprobante C:\facturacion\Archivo.xml leido exitosamente

Validando encodingComprobante expresado en UTF-8

Realizando validación del sello con un certificado interno
Certificado usado : 00001000000100928796
El comprobante incluye un certificado codificado

Cadena original:
||2.0|D|1452|2009-08-16T16:30:00|40121|2010|ingreso|Pago en una sola
exhibicion|10470|12145|CAC840428RH1|COMPUTACION EN ACCION, S.A. DE
C.V.|PABLO VILLASENOR|435|LADRON DE
GUEVARA|GUADALAJARA|GUADALAJARA|JALISCO|MEXICO|44600|AV. MANUEL
ACUNA|2505|LADRON DE
GUEVARA|GUADALAJARA|GUADALAJARA|JALISCO|MEXICO|44600|GCO030317H58|GRUPO
COMPUMAS S.A. DE C.V.|SIMON BOLIVAR|25|CENTRO|LA PIEDAD|LA
PIEDAD|MICHOACAN|MEXICO|59300|3|ACT. CONTPAQ i PYME 2 A 2
USU|3490|10470|IVA|16.00|1675||

Digestión MD5 de cadena como HEX:
4352c1e08b1df0990d0929b1d6a799f9

El sello del comprobante no es válido

La cadena original ya la tengo igual a la que me muestra el validador, el
problema que tengo es que el sello no es válido, alguien me podría ayudar??

Gracias!!

Saludos!!!!


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Cpy

Enviado el: lunes, 12 de julio de 2010 04:41 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

jeje ya tembien resolvi eso, el mio no los guarda solo los llama, los

Ing. Edgar Oñate

unread,
Jul 22, 2010, 1:22:01 PM7/22/10
to publice...@googlegroups.com
La cadena que me muestra el validador del Sat en la página

https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComproba
ntes/Validador.html

lo comparo en la página
http://cali.perudatanet.com/index.php/page/con_script_php_convertir_texto_MD
5/es.html y no me arroja la misma digestión MD5

podrían orientarme en cual podría ser mi error???

Gracias

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Ing. Edgar Oñate
Enviado el: jueves, 22 de julio de 2010 11:29 a.m.
Para: publice...@googlegroups.com
Asunto: RE: [vfp] Re: Generacion de sello digital para facturacion

PeraltaBytes

unread,
Jul 22, 2010, 2:12:55 PM7/22/10
to Comunidad de Visual Foxpro en Español
En la cadena original te falta el total de IVA a trasladar, en tu caso
falta 1675, quedando asi:

.... |10470|IVA|16.00|1675|1675||

Saludos.

On 22 jul, 12:22, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
wrote:
> La cadena que me muestra el validador del Sat en la página
>
> https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorC...
> ntes/Validador.html
>
> lo comparo en la páginahttp://cali.perudatanet.com/index.php/page/con_script_php_convertir_t...

Ing. Edgar Oñate

unread,
Jul 22, 2010, 2:53:13 PM7/22/10
to publice...@googlegroups.com
Realice pruebas anexando lo que me faltaba y sigue marcando que el sello no
es valido!! Aquí lo que muestra:

El sello del comprobante presenta problemas:
Comprobante C:\facturacion\Archivo.xml leido exitosamente

Validando encodingComprobante expresado en UTF-8

Realizando validación del sello con un certificado interno
Certificado usado : 00001000000100928796
El comprobante incluye un certificado codificado

Cadena original:
||2.0|D|1452|2009-08-16T16:30:00|40121|2009|ingreso|Pago en una sola


exhibicion|10470|12145|CAC840428RH1|COMPUTACION EN ACCION, S.A. DE
C.V.|PABLO VILLASENOR|435|LADRON DE
GUEVARA|GUADALAJARA|GUADALAJARA|JALISCO|MEXICO|44600|AV. MANUEL
ACUNA|2505|LADRON DE
GUEVARA|GUADALAJARA|GUADALAJARA|JALISCO|MEXICO|44600|GCO030317H58|GRUPO
COMPUMAS S.A. DE C.V.|SIMON BOLIVAR|25|CENTRO|LA PIEDAD|LA
PIEDAD|MICHOACAN|MEXICO|59300|3|ACT. CONTPAQ i PYME 2 A 2

USU|3490|10470|IVA|16.00|1675|1675||

Digestión MD5 de cadena como HEX:

1eabe878dc2f3473dbabe972ca8e1c43

El sello del comprobante no es válido

Saludos!!

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de PeraltaBytes
Enviado el: jueves, 22 de julio de 2010 01:13 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Generacion de sello digital para facturacion electronica

En la cadena original te falta el total de IVA a trasladar, en tu caso

Cpy

unread,
Jul 23, 2010, 2:05:51 PM7/23/10
to Comunidad de Visual Foxpro en Español
como dice la pagina, el problena esta en tu sello, no en la cadena

como generas tu sello?

yo lo genero con forme a lo que esta aqui

primero tu cadena original debe estar en utf-8
depues haces el dgst con el openssl a tu cadena y a la llave pricada
ya en .pem

! openssl dgst -c -sign C:\prueva\llaveprivada.pem -out C:\prueva
\Sello.txt C:\prueva\CadOrigUTF8.txt

depues lo combiertes a base 64
en lo persona yo lo hago con strconv("",13 ) de fox y me sale bien


cabe aclarar que a la cadena original no le tienes que hacer ninguna
encriptacion, por anto la dena va encriptada en md5

si tienes mas dudas, comentalas aqui las resolvemos

saludos


On 22 jul, 13:53, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
wrote:
> ...
>
> leer más »

Armando Rodríguez

unread,
Jul 23, 2010, 2:17:33 PM7/23/10
to publice...@googlegroups.com
Cpy. Tendrás alguna clase para todo el procedimiento, es decir generar la
cadena original, la digesta, la generación del xml y el envío en pdf para
los clientes. Y si es así cuanto costaría ?

Saludos
Armando.

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Cpy

Enviado el: Viernes, 23 de Julio de 2010 01:06 p.m.

Cpy

unread,
Jul 23, 2010, 2:27:27 PM7/23/10
to Comunidad de Visual Foxpro en Español
una disculpa escribi mal...muy mal n nU

la cadena no van en md5 solo va en utf-8

sobre ti Armando

hasta ahora tengo solo el sello, aun me falta el xml bien hacho, el
pdf, el informa mensual
y ademas no podrian venderlo ya que estoy haciendo mis practica en una
empresa y por etica no puedo vender un sistema que desarrollo en sus
instalaciones
> ...
>
> leer más »

Ing. Edgar Oñate

unread,
Jul 23, 2010, 3:11:29 PM7/23/10
to publice...@googlegroups.com
El sello lo he generado de muchas formas!! Hago mención de ellas:

1. aplico estas instrucciones:
- primero convierto mi cadena a utf-8
- aplico lo sig: openssl dgst -c -sign
c:\facturacion\llaveprivada.key.pem -out c:\facturacion\sello.txt
c:\facturacion\cadenaoriginal.txt (para generar el sello)
- por ultimo aplico: openssl base64 -in c:\facturacion\Sello.txt
-out c:\facturacion\SelloBase64.txt (para convertirlo a base64)

Con esto me sale que el sello no es valido


2. aplico lo siguiente
- convierto la cadena a utf-8
- aplico lo sig: openssl dgst -md5 -sign
c:\facturacion\llaveprivada.key.pem -out c:\facturacion\md5.txt
c:\facturacion\cadenaoriginal.txt (para hacer la digestion)
- después uso: openssl base64 -in c:\facturacion\md5.txt -out
c:\facturacion\sellobase64.txt (para generar el sello)

Aplicando esto me sale el mismo sello y por lo tanto es no valido


3. Acabo de realizar el proceso como lo acabas de mencionar y salió el mismo
sello y por lo tanto también es no valido =(

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Cpy

Enviado el: viernes, 23 de julio de 2010 01:06 p.m.

Hugo C.

unread,
Jul 23, 2010, 4:38:36 PM7/23/10
to Comunidad de Visual Foxpro en Español
Prueba pasando tambien el xml a utf8.

lcXml = FILETOSTR("miFactura.xml")
lcXmlUTF8 = STRCOV(lcXml, 9)
STRTOFILE(lcXmlUTF8, "miFacturaUTF8.xml")

y valida el archivo miFacturaUTF8.xml

Saludos.

On 23 jul, 13:11, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
wrote:
> El sello lo he generado de muchas formas!! Hago mención de ellas:
>
> 1. aplico estas instrucciones:
>         - primero convierto mi cadena a utf-8
>         - aplico lo sig: openssl dgst -c -sign
> c:\facturacion\llaveprivada.key.pem -out c:\facturacion\sello.txt
> c:\facturacion\cadenaoriginal.txt (para generar el sello)
>         - por ultimo aplico: openssl base64 -in c:\facturacion\Sello.txt
> -out c:\facturacion\SelloBase64.txt (para convertirlo a base64)
>
> Con esto me sale que el sello no es valido
>
> 2. aplico lo siguiente
>         - convierto la cadena a utf-8
>         - aplico lo sig: openssl dgst -md5 -sign
> c:\facturacion\llaveprivada.key.pem -out c:\facturacion\md5.txt
> c:\facturacion\cadenaoriginal.txt (para hacer la digestion)
>         - después uso: openssl base64 -in c:\facturacion\md5.txt -out
> c:\facturacion\sellobase64.txt (para generar el sello)
>
> Aplicando esto me sale el mismo sello y por lo tanto es no valido
>
> 3. Acabo de realizar el proceso como lo acabas de mencionar y salió el mismo
> sello y por lo tanto también es no valido =(
>
> -----Mensaje original-----
> De: publice...@googlegroups.com
> [mailto:publice...@googlegroups.com] En nombre de Cpy
> Enviado el: viernes, 23 de julio de 2010 01:06 p.m.
> Para: Comunidad de Visual Foxpro en Español
> Asunto: [vfp] Re:Generacionde sello digital para facturacion electronica
> > Asunto: [vfp] Re:Generacionde sello digital para facturacionelectronica
>
> > En la cadena original te falta el total de IVA a trasladar, en tu caso
> > falta 1675, quedando asi:
>
> > .... |10470|IVA|16.00|1675|1675||
>
> > Saludos.
>
> > On 22 jul, 12:22, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
> > wrote:> La cadena que me muestra el validador del Sat en la página
>
> > >https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorC...
> > > ntes/Validador.html
>
> > > lo comparo en la
>
> páginahttp://cali.perudatanet.com/index.php/page/con_script_php_convertir_t.
>
>
>
> > ..
>
> > > 5/es.html y no me arroja la misma digestión MD5
>
> > > podrían orientarme en cual podría ser mi error???
>
> > > Gracias
>
> > > -----Mensaje original-----
> > > De: publice...@googlegroups.com
> > > [mailto:publice...@googlegroups.com] En nombre de Ing. Edgar Oñate
> > > Enviado el: jueves, 22 de julio de 2010 11:29 a.m.
> > > Para: publice...@googlegroups.com
> > > Asunto: RE: [vfp] Re:Generacionde sello digital para facturacion
> > > Asunto: [vfp] Re:Generacionde sello digital para
> ...
>
> leer más »- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -- Ocultar texto de la cita -

Hugo C.

unread,
Jul 23, 2010, 4:41:20 PM7/23/10
to Comunidad de Visual Foxpro en Español
Prueba pasando tambien el xml a utf8.

lcXml = FILETOSTR("miFactura.xml")
lcXmlUTF8 = STRCOV(lcXml, 9)
STRTOFILE(lcXmlUTF8, "miFacturaUTF8.xml")

y valida el archivo miFacturaUTF8.xml

Saludos.

On 23 jul, 13:11, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
wrote:
> El sello lo he generado de muchas formas!! Hago mención de ellas:
>
> 1. aplico estas instrucciones:
>         - primero convierto mi cadena a utf-8
>         - aplico lo sig: openssl dgst -c -sign
> c:\facturacion\llaveprivada.key.pem -out c:\facturacion\sello.txt
> c:\facturacion\cadenaoriginal.txt (para generar el sello)
>         - por ultimo aplico: openssl base64 -in c:\facturacion\Sello.txt
> -out c:\facturacion\SelloBase64.txt (para convertirlo a base64)
>
> Con esto me sale que el sello no es valido
>
> 2. aplico lo siguiente
>         - convierto la cadena a utf-8
>         - aplico lo sig: openssl dgst -md5 -sign
> c:\facturacion\llaveprivada.key.pem -out c:\facturacion\md5.txt
> c:\facturacion\cadenaoriginal.txt (para hacer la digestion)
>         - después uso: openssl base64 -in c:\facturacion\md5.txt -out
> c:\facturacion\sellobase64.txt (para generar el sello)
>
> Aplicando esto me sale el mismo sello y por lo tanto es no valido
>
> 3. Acabo de realizar el proceso como lo acabas de mencionar y salió el mismo
> sello y por lo tanto también es no valido =(
>
> -----Mensaje original-----
> De: publice...@googlegroups.com
> [mailto:publice...@googlegroups.com] En nombre de Cpy
> Enviado el: viernes, 23 de julio de 2010 01:06 p.m.
> Para: Comunidad de Visual Foxpro en Español
> Asunto: [vfp] Re:Generacionde sello digital para facturacion electronica
> > Asunto: [vfp] Re:Generacionde sello digital para facturacionelectronica
>
> > En la cadena original te falta el total de IVA a trasladar, en tu caso
> > falta 1675, quedando asi:
>
> > .... |10470|IVA|16.00|1675|1675||
>
> > Saludos.
>
> > On 22 jul, 12:22, Ing. Edgar Oñate <edgar.on...@grupocompumas.com.mx>
> > wrote:> La cadena que me muestra el validador del Sat en la página
>
> > >https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorC...
> > > ntes/Validador.html
>
> > > lo comparo en la
>
> páginahttp://cali.perudatanet.com/index.php/page/con_script_php_convertir_t.
>
>
>
> > ..
>
> > > 5/es.html y no me arroja la misma digestión MD5
>
> > > podrían orientarme en cual podría ser mi error???
>
> > > Gracias
>
> > > -----Mensaje original-----
> > > De: publice...@googlegroups.com
> > > [mailto:publice...@googlegroups.com] En nombre de Ing. Edgar Oñate
> > > Enviado el: jueves, 22 de julio de 2010 11:29 a.m.
> > > Para: publice...@googlegroups.com
> > > Asunto: RE: [vfp] Re:Generacionde sello digital para facturacion
> > > Asunto: [vfp] Re:Generacionde sello digital para
> ...
>
> leer más »- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -- Ocultar texto de la cita -
Reply all
Reply to author
Forward
0 new messages