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.
VIDEO
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);
}
}