| |||
| Factura Electronica XML del SAT con VB6 Hola amigos tengo un bendito problema al generar el XML y luego Validarlo, les comento que es lo que tengo: * La empresa es Educativa y esta en el esquema de MEDIOS PROPIOS para la generación de sus Facturas Digitales (CFD). * Creo primero el Archivo .PEM el cual para mi es FIJO ya que lo genero solamente 1 vez, con el siguiente código en OPENSSL C:\GnuWin32\bin\openssl.exe pkcs8 -inform DER -in c:\sha1\CAT860403KT9_1108261409S.key –passin pass:12345678pas > c:\sha1\cat.key.pem Ahora si les muestro el código en VB6 1. Creo la cadena Original con los datos de la facturación y de ahí lo convierto a UTF-8 CadOriAUX = CadenaOriginal Var1 = 1 Do While Var1 <= Var2 Var3 = Asc(Mid(CadOriAUX, Var1, 1)) If (Var3 >= &H80) Then CadOriAUX= Left(CadOriAUX, Var1 - 1) + Chr(&HC2 + ((Var3 And &H40) / &H40)) + Chr(Var3 And &HBF) + Mid(CadOriAUX, Var1 + 1) Var1 = Var1 + 1 End If Var1 = Var1 + 1 Loop 2. Ahora lo Guardo en un Archivo TXT Open "C:\sha1\01_CadenaOriginalCAT.txt" For Output As #1 Print #1, CadOriAUX Close #1 3. Una vez que obtengo la Cadena Original a UTF8, genero la Digestión a SHA1: programa = Shell("C:\sha1\02_cfdcat.bat", vbNormalFocus) RutaSHA1 = "C:\sha1\03_SelloGeneradoCAT.txt" donde el archivo 02_cfdcat.bat contine la instrucción: C:\GnuWin32\bin\openssl.exe dgst -sha1 C:\sha1\01_CadenaOriginalCAT.txt > C:\sha1\03_SelloGeneradoCAT.txt Ya en el VB6 al archivo lo dejo exclusivamente con el resultado de la digestión; "SHA1(C:\sha1\01_CadenaOriginalCAT.txt)=ea31fd15b7 71d033da27bcf50ccbf307c42d6a60" Open RutaSHA1 For Input As #3 Line Input #3, Linea Var1 = Len(Linea) Var2 = Var1 - 41 If Var2 > 0 Then CadOriAUX = Mid(Linea, 41, Var2) Else CadOriAUX = Mid(Linea, 41, 41) End If Close #3 Open RutaSHA1 For Output As #4 Print #4, CadOriAUX Close #4 Entonces me queda el archivo 03_SelloGeneradoCAT.txt : ea31fd15b771d033da27bcf50ccbf307c42d6a60 4. Hasta aquí Todo funciona bien, digo a mi parecer entonces es cuando empleo el siguiente código programa = Shell("C:\sha1\06_GeneraSelloCAT.bat", vbNormalFocus) Donde el archivo 06_GeneraSelloCAT.bat tiene la instrucción: C:\GnuWin32\bin\openssl.exe dgst -sha1 -sign C:\sha1\cat.key.pem C:\sha1\01_CadenaOriginalCAT.txt | C:\GnuWin32\bin\openssl.exe enc -base64 -A > C:\sha1\07_ResultadoSelloGeneradoCAT.txt Se entiende que con este se sella el SHA1 y se genera el SELLO el cual se almacena el el Archivo 07_ResultadoSelloGeneradoCAT.txt ese texto lo anexo en el XML en el campo SELLO, quedando el resultado del sello algo como esto: lW0UjEYTCeSTrsiiPeIv7V3HaV0Kj6oh+e6QzvLspigBCCl9J5 GuRDn7CokYV5PbkOOzR74ZXcW5Oe4E7oH99FJCpqt1FofZ0fgW f6zxx6wPSDzKtQYzemdKKJ1X4DLl898esCzqD3G1tVr7TcXP+0 +NXs034yXFSxGo84hw4hY= Procedo a VALIDAR el XML y me da este resultado Resumen del análisis del XML Archivo XML :100108.xml Ruta :C:\sha1\XMLCAT\100108.xml Estructura : Estructura del CFD correcta CFD codificado en: UTF-8. El sello del comprobante es Inválido Folio :No Registrado Folio : 100108 Serie : A Año : 2011 Número de Aprobación : 259811 Rfc emisor : CAT860403KT9 Vigencia del CSD : A la fecha de emisión del CFD, el CSD es : Activo Detalle del análisis del XML Resultado de la Digestión :No se pudo verificar el sello Tipo de Certificado: No. de Serie del CSD :00001000000104257503 Cadena Original :||2.0|A|100108|2012-02-02T15:11:24|259811|2011|ingreso|Pago en una sola exhibición|Pago en una sola exhibición|4350.00|4350.00|CAT860403KT9|COLEGIO AMERICANO DE TABASCO SC|PROLONGACION DE PASEO USUMACINTA|1144|TABASCO 2000|VILLAHERMOSA|CENTRO|TABASCO|MEXICO|86035|CUHE 770531U30|ERNESTO DE LA CRUZ HERNANDEZ|JUAN ALDAMA|13|BARRIO SAN LUIS|JALPA DE MENDEZ|TABASCO|MEXICO|86200|1|Servicio|1|COLEGIATU RA SECUNDARIA 2011-2012 #6 FEB|4350.00|4350.00|IVA|16|0.00|0.00|| Lo que necesito saber cada instrucción de los archivos .BAT es correcto o mejor dicho a como esta descrito en el OPENSSL... espero explicarme y que me puedan ayudar, ya que NO se que hacer.. Gracias |
| |||
| Respuesta: Factura Electronica XML del SAT con VB6 jaquemate1977 yo estoy empezando con este tema, tu ya lograste solucionar el problema que tenias? realmente me gustaria conocer mas sobre tus experiencias. en este momento no he podido abrir el archivo .cer para extraer la información del No. de Serie ¿que debo hacer? el sistema lo estoy realizando en vb6 |