• Domingo 22 de Diciembre de 2024, 18:38

Autor Tema: [Utilidad] Facturacion electronica Mexico  (Leído 16359 veces)

edugza

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
[Utilidad] MD5
« en: Viernes 16 de Julio de 2010, 17:31 »
0
Hola Francisco esta excelente tu aportación lo único es que no se como obtienes el MD5 tengo una factura electrónica con todo y certificado y lo introduzco en el validador y me da el mismo MD5 que me da el openssl lo que si cambié fue que la cadena original en lugar de grabarla como UTF8 la puse como ANSI la cadena que estoy validando es:
||2.0|FAXA|051661|2006-11-20T08:50:48|2951|2006|ingreso|EL PAGO DE ESTA FACTURA (CONTRAPRESTACION) SE EFECTUARA EN UNA SOLA EXHIBICION SI POR ALGUNA RAZON NO FUERA ASI EMITIREMOS LOS COMPROBANTES DE LAS PARCIALIDADES RESPECTIVAS|43824.69|0|50398.39|FJC780315E91|FABRICA DE JABON LA CORONA S.A. DE C.V.|CARLOS B. ZETINA|80|INDUSTRIAL XALOSTOC|ECATEPEC DE MORELOS|ECATEPEC|MEXICO|MEXICO|55348|CARLOS B.ZETINA NO.80|XALOSTOC EDO. DE MEXICO|XALOSTOC EDO. DE MEXICO|EDO. DE MEXICO|MEXICO|55348|NWM9709244W4|NUEVA WAL-MART DE MEXICO SRL DE CV|NEXTENGO|78|STA. CRUZ ACAYUCAN|AZCAPOTZALCO|AZCAPOTZALCO|DISTRITO FEDERAL|MEXICO|2770|22|TEPEYAC 25P 400 G C/ENV|110.97|2441.34|11|ZOTE AZUL 25P 400 G.|110.97|1220.67|22|ZOTE BCO. 25P 400 G|110.97|2441.34|7|ZOTE BCO. 50P 200 G|110.97|776.79|44|ZOTE ROSA 25P 400 G|110.97|4882.68|6|ZOTE ROSA 50P 200 G|110.97|665.82|12|ROMA 4P 5 KGS|218.34|2620.08|24|ROMA 10P 2 KGS|219.74|5273.64|120|ROMA 10P 1 KG|111.29|13354.20|12|FOCA 10P 2 KGS|233.87|2806.38|10|BLANCA NIEVES 10P 2 KGS|201.47|2014.65|40|BLANCA NIEVES 10P 1 KG|102.15|4086.00|5|BRILOZA 10P 1 KG|102.15|510.75|6|FOCA 12B 1LT|121.73|730.35|IVA|15.00|6573.70|6573.70||

lo grabo en un archivo con el notepad como tipo ANSI
le aplico el OPENSSL

openssl dgst -MD5 ansi.txt
MD5(ANSi.txt)= 907327b350082d1d40e0f3787db973e8

este MD5 es el mismo que se obtiene en la siguiente liga:

wwww.lacorona.com.mx/fortiz/sat/xsl.php

Podrías explicarme como obtuviste tu MD5.

Saludos y nuevamente felicidades por tu excelente artículo.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: MD5
« Respuesta #1 en: Sábado 17 de Julio de 2010, 13:46 »
0
Bueno es posible que algun caracter no imprimible este en tu archivo o la marca de final de archivo (EOF) he agregado una herramienta para quitar ese caracter he intentado utilizar solo linea de comando por eso he agregado mas aplicaciones de msdos las cuales no son mias en el archivo bat esta la direccion web de los respectivos autores yo solo las he juntado.

El Md5 que estaba ahi yo lo genere en PHP y era el mismo que me mostraba el validador.

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: MD5
« Respuesta #2 en: Sábado 17 de Julio de 2010, 13:49 »
0
Olvidaba el formato de la cadena original debe estar en utf8 asi lo marca el procedimiento ademas no debe de contener saltos de linea ni espacio entre \"pipes\" porque logicamente eso alterara el hash

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

aldhio

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
comando de opensssl
« Respuesta #3 en: Sábado 24 de Julio de 2010, 00:35 »
0
Ola amigo en serio gracias por el aporte me sirvo bastante...pero sabes cual es el comando para generar el sello digital con openssl....mira tengo este..pero no me sale igual...
$digital_sign_command = \'C:\\OpenSSL-Win32\\bin\\openssl.exe dgst -md5 -sign C:/SAT/keys_space/SpaceAduanas1.pem -out C:/FoxServ/www/examples/space_facturacion/sellos/md5.txt C:/FoxServ/www/examples/space_facturacion/sellos/cadena_original.txt | C:\\OpenSSL-Win32\\bin\\openssl.exe enc -base64 -in C:/FoxServ/www/examples/space_facturacion/sellos/md5.txt -out C:/FoxServ/www/examples/space_facturacion/sellos/sello_base64.txt\';

yo lo hago en php

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Facturacion electronica Mexico
« Respuesta #4 en: Jueves 29 de Julio de 2010, 17:27 »
0
el Zip contine:
*  una version de  OpenSSL
*  un certificado (.CER) digital de prueba proporcionado por el SAT
*   una clave privada (.KEY) tambien proporcionada por SAT
*   contraseña de la clave privada en .TXT
*   una cadena original de ejemplo en UTF8  .TXT
*   el hash de la cadena en Md5 .TXT
*   una imagen con el procedimiento que describe el SAT
*   un archivo de s c r i p t de windows .CMD que genera el sello digital usando OpenSSL
*   un Sello valido y un acceso al validador en linea del SAT (utilizando el mismo certificado que incluye el zip)


Si el procedimiento es correcto segun lo describe SAT esto no deberia dar problemas sin embargo el sello generado por OpenSSL no es valido (segun el validador) pero he realizado pruebas con otro software en todos obtengo el sello que me da OpenSSL y si se le aplica verificacion da como correcto asi que estoy dudando de que el validador sea correcto o el proceso descrito por SAT no lo es y estan olvidando pasos!.

El otro metodo que he utilizado es PBCrypto en power builder 10 con las librerias

 Bouncy Castle (Java)

Saludos

[16 Jul 2010]==============================

He agregado algunas otras herramientas que pueden ser de utilidad ya que se esta usando la linea de comando

* aplicacion para remover la marca EOF del archivo
* aplicacion para generar el hash MD5
* aplicacion para quitar el nombre del archivo que le coloca MD5.exe o el propio OpenSSL dgst -md5









Autor: Francisco Tanori / Foros

http://www.ingenieria-soporte.com
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

adiposin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Per fec tí si mo
« Respuesta #5 en: Sábado 31 de Julio de 2010, 21:58 »
0
Muchas gracias Francisco Tanori por tan buen aporte obtuve la ayuda que me faltaba para la obtención del sello digital después de haber batallado cerca de 15 hrs...  ¡Gracias!

adiposin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Lo hice con php
« Respuesta #6 en: Sábado 31 de Julio de 2010, 22:01 »
0
Como agradecimiento a la ayuda que he recibido de toda la comunidad en estey otros foros con gusto les puedo compartir info de cómo generar el sello digital con PHP

adiposin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Código PHP para plussmx
« Respuesta #7 en: Miércoles 4 de Agosto de 2010, 01:52 »
0
Amigo plussmx<br><br>
te comparto el código PHP para la generación del sello digital:

<?php
  /* Definimos donde esta el key en formato PEM */
  $key=\'aaa010101aaa_CSD_01.key.pem\';
  /* Introducimos la cadena original provista por el SAT */
  $cadenaoriginal=\'||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||\';
  /* Transformamos la cadena a UTF8 */
  $cadena = utf8_encode($cadenaoriginal) ;
  /* Hacemos un echo para ver la cadena en UTF8 (no es necesario pero es para ir paso por paso) */
  echo \'<h5>UTF8</h5>\'.$cadena;
  /* Hacemos un echo para ver la cadena en MD5 aquí obtenemos el mismo resultado que el SAT */
  $cadena=md5($cadena);
  echo \'<h5>MD5</h2>\'.$cadena;

  /* Aquí lo que hacemos es escribir un txt (md5.txt) con la digestión MD5 para usarlo en el sellado */
  $fp = fopen (\"md5.txt\" \"w+\");
  fwrite($fp $cadena);
  fclose($fp);
 
  /* Aquí sellamos con el MD5 con el key para obtener el sello y guardarlo en sello.txt */
  $hola1=shell_exec(\'\"C:\\Archivos de programa\\GnuWin32\\bin\\openssl.exe\" dgst -out C:\\wamp\\www\\en-trega\\fiscal-soft\\Firma.binario -sign C:\\wamp\\www\\en-trega\\fiscal-soft\\aaa010101aaa_CSD_01.key.pem C:\\wamp\\www\\en-trega\\fiscal-soft\\md5.txt\');
  $hola2=shell_exec(\'\"C:\\Archivos de programa\\GnuWin32\\bin\\openssl.exe\" enc -in C:\\wamp\\www\\en-trega\\fiscal-soft\\Firma.binario -a -A -out C:\\wamp\\www\\en-trega\\fiscal-soft\\Firma.base64\');

  /* Aquí mostramos el sello que en teoría debería ser el correcto */
  echo \"<h5>Seal</h5>\";
  //$hello=readfile(\"sello.txt\");
  $hello=readfile(\"Firma.base64\");
  echo \"<br>\".$hola1.\" \".$hola2.\" \".$hello.\"<br>\";
?>

Saludos!!

mauriciobaeza

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Sello digital
« Respuesta #8 en: Miércoles 11 de Agosto de 2010, 06:19 »
0
Hola Francisco:

Antes que nada agradezco tu aporte me a aclarado algunas dudas.

Respecto al archivo si voy a la página de validación del SAT: https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html

Con el archivo xml y el archivo CER me dice que el sello es valido. El sello que tiene este archivo xml es el siguiente:

UlUSwGNEicfigV6i4RhTy0eb2RYWFYyFatJFcM/u5Wlkb5XRxXiCizTGw5Yxz9oZNk8msAgO4C5Gevjh+S2TJPZueYhaQeZlo6k0rE3CQexkOGVRpHkvAoAgOM5kGKzYe24DKZbTgjNL+ai+tbhEHmRAFcpv2rDpehbL3w6BnYU=

Ahora al intentar generar este sello con el archivo KEY y el MD5.txt de tus archivos muestra me genera el siguiente sello:

GrO5fVxXDbmHbjrELI1j2OsVZqSLt4GLcESB8r4lprASJ/jrNWzsL4HyUMFMQQMUdDIBUuqqlam0+yZLstMC3n0G8Cl1clepXcjUJhzPnlKdjRGoCE5KiSKBUiEeXlOjwVdnhnIKdNnHtZUbfQhzRrsrN40UzAH1lrnqLLdbFjI=

El comando que uso:

openssl dgst -sign archivo.pem md5.txt | openssl enc -base64 -a -A > sello.txt

Lo curioso es que este sello lo generaba en Linux al tratar de hacerlo en Windows(XP/7) con los archivos que proporcionas me daba otro totalmente diferente:

2XZhPGVaS4h0xx5AGBOrTgpaGmnBJ16+jkDgD1vD+TvOKxSdJNTHATtr4F38Lr0GRJA5KbJq5UEiSRXSKeUJaIOG8BLTQmDNsVbsEqD5bk97LABVIaGZor8i8HaF1qdV3ymV1Dz15rGeWWcuUyQQLI1tuOpi6se8EBRLMYVWNz4=

Después caí en la cuenta de que estaba usando la versión 1.0.0a del openssl en Linux y tu tienes la 0.9.8 para Windows probe la 1.0.0a para Windows y ahora si obtengo los mismos sellos tanto en Linux como en Windows solo que no es el mismo de tu archivos xml de muestra.

¿Tendrás alguna idea de por que?

Agradezco cualquier comentario.

Un abrazo

mauriciobaeza

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
[RESUELTO] Sello digital
« Respuesta #9 en: Miércoles 11 de Agosto de 2010, 21:19 »
0
Hola de nuevo...

Por fin he obtenido un sello digital valido. El secreto esta en al forma en que se pasan los parámetros:

xsltproc cadenaoriginal_2_0.xslt factura.xml | openssl dgst -md5 -sign archivo.pem | openssl enc -base64 -A > sello.txt

cadenaoriginal_2_0.xslt = archivo descargado de la página del SAT que sirve para extraer la cadena original http://www.sat.gob.mx/sitio_internet/cfd/2/cadenaoriginal_2_0/cadenaoriginal_2_0.xslt

factura.xml = archivo de la factura ya en formato xml en este momento no es necesario que contenga los datos del certificado o el sello estos se pueden agregar después.

archivo.pem = archivo con la clave privada para firmar en formato PEM

sello.txt = el sello digital

PENDIENTES:
Encontrar la forma de hacer los pasos separados y nos de el mismo resultado
Poder usar los XSLT sin conexión a Internet

Ojala les sirva.

Saludos

mauriciobaeza

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
[RESUELTO] CFDs
« Respuesta #10 en: Domingo 5 de Septiembre de 2010, 06:32 »
0
Hola...

He podido generar los CFD sin problemas completamente cualquier duda al respecto con gusto los podemos ayudar en el siguiente foro: http://www.validacfd.com/phpbb3/index.php

Saludos