Para contratar el servicio de timbrado comunícate al siguiente teléfono (33) 36581329 o al correo electrónico [email protected]. Y si deseas un DESCUENTO diles que viste los videos de Héctor de León o hdeleon.
En este video te mostrare como timbrar el xml que en los videos anteriores construimos y sellamos.
Descargar proyecto hecho en el video: clic aquí.
Video 1: https://www.youtube.com/watch?v=XlTz0NRQLm4
Video 2: https://www.youtube.com/watch?v=HjfqdTspnio
Video 3: https://www.youtube.com/watch?v=qIr-LdCzfF0
Video 4: https://www.youtube.com/watch?v=suRypKtb7VU
Video 5: https://www.youtube.com/watch?v=FBcEeEpgwr0
Catálogos sat mysql: https://hdeleon.net/catalogos-para-facturar-3-3-sat-en-mysql/
class Program { //modifiquen por su path static private string path = @"C:\Users\Bioxor\source\repos\Facturacion3.3-tutorial-hdeleon\"; static string pathXML = path + @"miPrimerXML.xml"; static void Main(string[] args) { //Obtener numero certificado------------------------------------------------------------ string pathCer = path+@"XSDToXML\CSD01_AAA010101AAA.cer"; string pathKey = path+@"XSDToXML\CSD01_AAA010101AAA.key"; string clavePrivada = "12345678a"; //Obtenemos el numero string numeroCertificado, aa, b, c; SelloDigital.leerCER(pathCer, out aa, out b, out c, out numeroCertificado); //Llenamos la clase COMPROBANTE-------------------------------------------------------- Comprobante oComprobante = new Comprobante(); oComprobante.Version = "3.3"; oComprobante.Serie = "H"; oComprobante.Folio = "1"; oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"); // oComprobante.Sello = "faltante"; //sig video oComprobante.FormaPago = "99"; oComprobante.NoCertificado = numeroCertificado; // oComprobante.Certificado = ""; //sig video oComprobante.SubTotal = 10m; oComprobante.Descuento = 1; oComprobante.Moneda = "MXN"; oComprobante.Total = 9; oComprobante.TipoDeComprobante = "I"; oComprobante.MetodoPago = "PUE"; oComprobante.LugarExpedicion = "20131"; ComprobanteEmisor oEmisor = new ComprobanteEmisor(); oEmisor.Rfc = "LEGH870601DM7"; oEmisor.Nombre = "Una razón rh de cv"; oEmisor.RegimenFiscal = "605"; ComprobanteReceptor oReceptor = new ComprobanteReceptor(); oReceptor.Nombre = "Pepe SA DE CV"; oReceptor.Rfc = "BIO091204LB1"; oReceptor.UsoCFDI = "P01"; //asigno emisor y receptor oComprobante.Emisor = oEmisor; oComprobante.Receptor = oReceptor; List<ComprobanteConcepto> lstConceptos = new List<ComprobanteConcepto>(); ComprobanteConcepto oConcepto = new ComprobanteConcepto(); oConcepto.Importe = 10m; oConcepto.ClaveProdServ = "92111704"; oConcepto.Cantidad = 1; oConcepto.ClaveUnidad = "C81"; oConcepto.Descripcion = "Un misil para la guerra"; oConcepto.ValorUnitario = 10m; oConcepto.Descuento = 1; lstConceptos.Add(oConcepto); oComprobante.Conceptos = lstConceptos.ToArray(); //Creamos el xml CreateXML(oComprobante); string cadenaOriginal = ""; string pathxsl = path+ @"XSDToXML\cadenaoriginal_3_3.xslt"; System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true); transformador.Load(pathxsl); using (StringWriter sw= new StringWriter()) using (XmlWriter xwo= XmlWriter.Create(sw,transformador.OutputSettings)) { transformador.Transform(pathXML, xwo); cadenaOriginal = sw.ToString(); } SelloDigital oSelloDigital = new SelloDigital(); oComprobante.Certificado = oSelloDigital.Certificado(pathCer); oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, pathKey, clavePrivada); CreateXML(oComprobante); //TIMBRE DEL XML ServiceReferenceFC.RespuestaCFDi respuestaCFDI = new ServiceReferenceFC.RespuestaCFDi(); byte[] bXML = System.IO.File.ReadAllBytes(pathXML); ServiceReferenceFC.TimbradoClient oTimbrado =new ServiceReferenceFC.TimbradoClient(); respuestaCFDI = oTimbrado.TimbrarTest("TEST010101ST1", "aaaaaa", bXML); if (respuestaCFDI.Documento == null) { Console.WriteLine(respuestaCFDI.Mensaje); } else { System.IO.File.WriteAllBytes(pathXML, respuestaCFDI.Documento); } } private static void CreateXML(Comprobante oComprobante) { //SERIALIZAMOS.------------------------------------------------- XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces(); xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3"); xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital"); xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); XmlSerializer oXmlSerializar = new XmlSerializer(typeof(Comprobante)); string sXml = ""; using (var sww = new Utils.StringWriterWithEncoding(Encoding.UTF8)) { using (XmlWriter writter = XmlWriter.Create(sww)) { oXmlSerializar.Serialize(writter, oComprobante,xmlNameSpace); sXml = sww.ToString(); } } //guardamos el string en un archivo System.IO.File.WriteAllText(pathXML, sXml); } }