Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Sello inválido usando la rutina SelloDigital.pas

Es tan comun este tema que he decidido abrir un foro especial para este caso. Se trata de programadores que tienen problemas para crear el Sello Digital y que no pasan la validacion
Cerrado
alejandrux
Mensajes: 2
Registrado: Vie May 20, 2011 11:25 am

Sello inválido usando la rutina SelloDigital.pas

Mensaje por alejandrux »

Hola Foro.

De antemano quiero felicitarlos por la creación de este espacio, donde se nota que comparten muchas experiencias en torno a la implementación de la Factura Electrónica en México.

Yo soy un usuario y programador mas con problemas para la implementación utilizando Delphi 7.

El año pasado dejé la rutina necesaria para general el CFD y para ello me auxilié de los archivos OpenSSL.exe, libeay32.dll y una rutina llamada SelloDigital.pas

function SelloDigital(llaveprivada,cadenaoriginal: string;encripcion: Integer): string;
var
Len: cardinal;
mdctx: EVP_MD_CTX;
inbuf, outbuf: array [0..8192] of AnsiChar;
key: pEVP_PKEY;
begin
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#13,'');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#10,'');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#8,'');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' ','');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' |','|');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'| ','|');
cadenaoriginal := UTF8Encode(cadenaoriginal);

StrPCopy(inbuf,cadenaoriginal);
InitOpenSSL;
key:=LoadPrivateKey(llaveprivada,'');
// Tipo de encripcion
// 0 -> MD5
// 1 -> SHA1
Case encripcion of
0: EVP_SignInit(@mdctx,EVP_md5());
1: EVP_SignInit(@mdctx,EVP_sha1());
End;
EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
EVP_SignFinal(@mdctx,@outbuf,Len,key);
// EVP_MD_CTX_cleanup(@mdctx);
EVP_PKEY_free(key);;
FreeOpenSSL;
result := bintobase64(@outbuf,Len);
end;


Estuvo trabajando bien mis rutinas, pero en este año comenzaron con problemas de diversos tipos, por ejemplo el validador del SAT me marcaba error de codificación del archivo XML, me decía que estaba en ANSI y debía ser en UTF-8, por lo que utilicé un procedimiento de conversión para agregar el BOM.

Sin embargo en este momento tengo la bronca de que el validador del SAT me marca "Sello Inválido" al pasar cualquier XML generado anteriormente.

Podrían apoyarme, o señalarme donde puede estar mi problema?

-------------------------------------------------------

Resumen del análisis del XML

Archivo XML :BB-14.xml
Ruta :C:\Users\Güero\Sistemas\Tecnovisión\Win32Multivisi
n\Código Fuente\FacturasElectronicas\BB-14.xml

Estructura : Estructura del CFD correcta

CFD codificado en: UTF-8.

El comprobante incluye un certificado codificado

El sello del comprobante es Inválido

Detalle del análisis del XML

Resultado de la Digestión SHA1 :a92b26252b19b6b2af199caab84c88301c6c9e2b

Tipo de Certificado:CSD

No. de Serie del CSD :00001000000102363744

Cadena Original :||2.0|BB|14|2011-12-19T19:37:18|352180|2010|ingreso|PAGO EN UNA SOLA EXHIBICION.|3000.00|3480.00|LRT670904UA5|LLANTAS ROYAL DE TABASCO, S.A. DE C.V.|27 DE FEBRERO|2602|ATASTA|VILLAHERMOSA|CENTRO|TABASCO|MéXICO|86100|VITA600802LX6|ANGELA VILLASIS TORRES|KM. 1 CARRET. EMILIANO ZAPATA-|VILLAHERMOSA|EMILIANO ZAPATA|EMILIANO ZAPATA|TABASCO|MéXICO|86990|1.00|31X10.50R15 M.TERRAIN KM2|3000.000000|3000.00|IVA|16.00|480.00|480.00||
Adjuntos
BB-14.xml
Anexo el archivo generado por mi sistema en XML.
(2.97 KiB) Descargado 246 veces
alejandrux
Mensajes: 2
Registrado: Vie May 20, 2011 11:25 am

Re: Sello inválido usando la rutina SelloDigital.pas

Mensaje por alejandrux »

Bueno ya encontré la solución.

Realmente no tenía nada malo la programación, eran los datos que estaba utilizando.

Saludos
Cerrado