Page 1 of 2
firmar XML
Posted: Wed Jul 31, 2019 3:25 pm
by edufloriv
Saludos amigos,
Ya tengo armado mi .XML, la pregunta ahora es ¿ como lo firmo ? alguien tiene código de ejemplo por favor.
Cordiales saludos,
Re: firmar XML
Posted: Wed Jul 31, 2019 11:04 pm
by SvargasD
Hola Eduardo:
Desconozco el tema de facturación y timbrado en Perú, yo soy de México. Si fuera algo similar al tema de facturación que tenemos aquí, en teoría, tu tienes que mandar ese archivo XML a un proveedor externo autorizado por tu Hacienda en Perú, para que procese y firme dicho documento, por lo menos aquí así tenemos que hacerlo.
Re: firmar XML
Posted: Fri Aug 02, 2019 2:28 pm
by edufloriv
Hola SvargasD
Gracias por responder amigo. Parece que acá funciona distinto, nosotros adquirimos un CERTIFICADO DIGITAL, un archivo con extensión .CER que es copiado en la computadora que firmará los XML
Este mismo archivo es enviado a SUNAT para que realice la verificación de lo que se envia.
Un programador de C# me pasó esta .DLL para realizar la firma, de casualidad sabes como puedo usarla dentro de HMG.
Nuevamente gracias por tu interés.
Cordiales saludos,
Re: firmar XML
Posted: Fri Aug 02, 2019 2:47 pm
by danielmaximiliano
Hola Edu:
Yo uso asi una funcion dentro de un DLL
Code: Select all
nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , 1 , 0 )
cuando tengo el manejador nHandler puedor enviar un ticket
Code: Select all
*----------------------------------------------------------------------------*
procedure ticket()
*----------------------------------------------------------------------------*
/* Envia Pago */
s :='D'+ SE +'Su Pago: '+ SE + LTRIM( STR( Imprime.Text_2.Value , 8, 2 ) ) + SE + 'T' + SE + '0'
nVentasError := CallDll32( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , s )
alerror( nVentasError )
por lo que vi en Pascal / Delphi se usa asi
Code: Select all
function zfirmaxml(xmlsinfirmar,xmlfirmado,pathcertificado,clavecertificado:WideString):Integer; stdcall; external 'firmaxml509.dll';
No tengo correcto como enviar el argumento
Code: Select all
CallDll32((xmlsinfirmar,xmlfirmado,pathcertificado,clavecertificado, 'firmaxml509.dll')
Re: firmar XML
Posted: Wed Aug 21, 2019 11:03 pm
by edufloriv
Hola DanielMaximialino,
Que gusto verte de nuevo por acá. Dime como resuelves tu el tema de la firma del .xml, usas una libreria externa ? o Harbour tiene forma de implementar de manera nativa la firma x509 ?
Te agradeceré me orientes al respecto. Si tienes código fuente de ejemplo mejor que mejor.
Prometo subir mi código para todos los que estén interesados en facturación electrónica acá en Perú (somos relativamente nuevos en tema de facturación electrónica en la región).
Saludos cordiales,
Re: firmar XML
Posted: Thu Aug 22, 2019 12:24 am
by danielmaximiliano
Hola Edu:
Hace años que no diseño y hago programas, mi principal trabajo es otro actualmente...30 años me dedique a la reparacion de equipos electronicos y telecomunicaciones.
como tambien estudie programacion me dedique como segundo oficio, puedo comprender como funciona esa DLL que te envio el proramador conocido tuyo si me envias como hace para enviarle los parametros en C# a dicha libreria...
un Abrazo
Re: firmar XML
Posted: Thu Aug 22, 2019 2:44 pm
by martingz
Eduardo aca en mexico yo genero el xml el cua envio a mi pac, y el me regresa una repuesta que incluye informacion en un archivo Json, ahi viene mi UUID, y mis sellos de hacienda, yo los tomo y los inserto en el XML que genere , todo esto en HMG, nos e si sea tu caso, pero se ser asi, cuenta conmigo para ayudarte (aqui en Mexico nos dan un archivo .cer y un .key, con los que genero un sello y lo incluyo en el xml)
saludos
Re: firmar XML
Posted: Sat Aug 24, 2019 2:08 pm
by edufloriv
Saludos amigos,
Acabo de encontrar un post en FiveWin en el que un usuario afirma que con HBSSL por si solo NO SE PUEDE FIRMAR UN XML !!
http://forums.fivetechsupport.com/viewt ... sl#p208370
El para lograrlo ha MODIFICADO la libreria HBSSL para lograr lo que estoy buscando una función de firma:
Code: Select all
/*
hbmk2 tip4.prg hbssl.hbc
*/
#require "hbssl"
#include "hbssl.ch"
Function main( )
Local ERROR
setmode(25,80)
clear
/*Posibles resultados de ERROR:
1: Sin Errores
2: problema al leer archivo keyFile
3: error al crear objeto RSA
4: el keyFile es invalido
5: problema al leer archivo certFile
6: error al crear objeto X509
7: el Key no se corresponde al Crt
8: error al abrir fromSignFile
9: error al crear objeto in
10: error al crear objeto cms
11: error al cerrar el objeto cms
12: error al crear objeto out
13: error al grabar el archivo toSignFile*/
SSL_INIT()
ERROR:=HB_SIGNFILE2( "TRA.XML", "CERT.CRT", "CERT.KEY", "TRA.TMP") // <- AQUI ESTA EL OBJETIVO
if (ERROR!=1)
? ERROR
endif
return
Además explica que para que funcione las DLL de Open-SSL deberán estar en el mismo directorio de los ejecutables.
Yo la verdad no tengo experiencia recompilando las CONTRIB de Harbour, no sé si ya alguien lo ha realizado y tiene esta HBSSL compilada con las modificaciones.
Sería genial si esta función se incluyera por default en la distribución de HMG.
Esperando su valiosa ayuda.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Greetings friends,
I just found a post in FiveWin in which a user affirms that with HBSSL alone, an XML CANNOT BE SIGNED!
http://forums.fivetechsupport.com/viewt ... sl#p208370
To achieve this, the HBSSL library has been MODIFIED to achieve what I am looking for a signature function:
Code: Select all
/*
hbmk2 tip4.prg hbssl.hbc
*/
#require "hbssl"
#include "hbssl.ch"
Function main( )
Local ERROR
setmode(25,80)
clear
/ * Possible ERROR results:
1: No Errors
2: problem reading keyFile file
3: error creating RSA object
4: the keyFile is invalid
5: problem reading certFile file
6: Error creating object X509
7: The Key does not correspond to the Crt
8: error opening fromSignFile
9: Error creating object in
10: error creating cms object
11: error closing cms object
12: error creating out object
13: Error writing toSignFile file * /
SSL_INIT()
ERROR:=HB_SIGNFILE2( "TRA.XML", "CERT.CRT", "CERT.KEY", "TRA.TMP") // <- HERE IS THE TARGET
if (ERROR!=1)
? ERROR
endif
return
It also explains that in order for the Open-SSL DLLs to work, they must be in the same directory as the executables.
I really have no experience recompiling the Harbor CONTRIBs, I don't know if anyone has already done it and has this HBSSL compiled with the modifications.
It would be great if this function were included by default in the HMG distribution. : D
Waiting for your valuable help.
Re: firmar XML
Posted: Sat Aug 24, 2019 8:43 pm
by martingz
Eduaro te envie un link de mega, ahi esta en el modulo de empresas como debes generar tu sello, ahi van los archivos necesarios, cualquier duda estoy a tus ordenes
saludos
Re: firmar XML
Posted: Mon Sep 09, 2019 10:12 pm
by edufloriv
Saludos amigos,
Yo de nuevo con el mismo tema
Alguien me alcanzó una libreria para firmar los .XML de acuerdo a lo exigido por SUNAT acá en Perú, pero ya lo testie y no me genera el .XML firmado. Tampoco me lanza ningún error.
Tal vez alguien me pueda hechar una mano con esto. Remito el .zip con todos los archivos necesarios para el test.
Cordiales saludos,