¿Como generar sello para un CFDI?

131 views
Skip to first unread message

jose renteria (Rentis)

unread,
Nov 23, 2023, 11:21:49 PM11/23/23
to vfp-factura-electronica-mexico
Hola buenas noches,

Estoy tratando de generar un sello digital utilizando C#, y un proveedor que timbra los CFDI.

Este es mi código

// See https://aka.ms/new-console-template for more information
//Cargar el XML
using System.Xml.XPath;
using System.Xml.Xsl;
using System.Xml;
using System.Security.Cryptography;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using static System.Runtime.InteropServices.JavaScript.JSType;

StreamReader reader = new StreamReader(@"C:/xxx/test-factura.xml");
XPathDocument myXPathDoc = new XPathDocument(reader);

//Cargando el XSLT
XsltSettings sets = new XsltSettings(true, true);
XslCompiledTransform myXslTrans = new XslCompiledTransform(true);
var resolver = new XmlUrlResolver();
myXslTrans.Load(@"C:/xxx/cadenaoriginal_3_3.xsl", sets, resolver);

StringWriter str = new StringWriter();
XmlTextWriter myWriter = new XmlTextWriter(str);

//Aplicando transformacion
myXslTrans.Transform(myXPathDoc, null, myWriter);

//Resultado
string result = str.ToString();
string cadenaOriginal = result.Replace("\n", "").Replace("\r", "");
byte[] bytes = Encoding.UTF8.GetBytes(cadenaOriginal);

using (SHA256 mySHA256 = SHA256.Create())
{
    var digest = mySHA256.ComputeHash(bytes);
    byte[] byteKey = File.ReadAllBytes("C:\\xxx\\LlavePkcs8PF.key");

    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    RSAParameters rsaParameters = rsa.ExportParameters(true);
    rsa.ImportParameters(rsaParameters);
    rsa.ImportEncryptedPkcs8PrivateKey("password", byteKey, out _);
    //var ecrypted = rsa.Encrypt(digest, false);
    var ecrypted = rsa.SignData(digest, SHA256.Create());
    var sello = Convert.ToBase64String(ecrypted);
}

Pero el al mandar el XML con el sello generado al proveedor, me regresa el error del SAT
"302 Sello mal formado o inválido."

¿Alguien sabe qué me está faltando?

Puntos a considerar

Cadena original
||4.0|GAV|30102023|2023-11-22T20:28:51|03|20001000000300022823|800.00|MXN|896.00|I|01|PUE|77536|TEST010203001|Pablo Neruda Perez|625|TES030201001|Pablo Neruda Perez|72000|601|G03|78101801|1.00|E48|Unidad de servicio|SEMANA 44|800|800.00|02|800.00|002|Tasa|0.160000|128.00|800|002|Tasa|0.04|32.00|002|32.00|32.00|800.00|002|Tasa|0.160000|128.00|128.00||

Sello Digital Generado
Kf28IfoN/yx3x+T2PPeFXI80RPYz5st0kQlipoZnK5g5kVkGczLGX7Io57w/1spLQ17Xc7dy/Oq+EbAKj4CnVPYIsPVr0ZZR2J337aO7YoDvUIdnnKLwQdVt4ltZcSoEd3a+YKA7XEU0caGM01oF8qxP8+z3XMYCo+seRgCk/bmf5UEtbF0B3q8zRXfmywdDZWJZMYv+3ZJNcs1TvGO3g1vr65rFnS1Jl53i3qRTB3W8QSR3824Lc4tjS2y1nrP2EzEDbl6yILLensJ2IWE9gL+glDC9tn5oZbwOpQH/pKSMx9Z0Acp1bwBFCekg8APgxR0cVdmn/sY3ReBPmjeVMA==

Saludos

elavion sistemas

unread,
Nov 24, 2023, 5:01:16 PM11/24/23
to vfp-factura-ele...@googlegroups.com
¿Este xsl versión 3.3 es correcto?

myXslTrans.Load(@"C:/xxx/cadenaoriginal_3_3.xsl", sets, resolver);
 


--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/vfp-factura-electronica-mexico/521ca3a3-e956-4bb8-8545-9dc50e5986d0n%40googlegroups.com.


--
Atentamente

Depto. de Sistemas
Agropecuaria El Avión S de PR de RL

jose renteria

unread,
Nov 27, 2023, 10:19:29 PM11/27/23
to vfp-factura-ele...@googlegroups.com
Hola,

Ya cambié el xsl a la versión 4.0 como dijiste y me da el mismo error.

¿Alguna otra cosa que me esté haciendo falta para generar mi sello?

Saludos.

Reply all
Reply to author
Forward
0 new messages