Respuesta: Factura electroncia sat mexico Que tal a todos hoy mismo me avente las 10 paginas del foro, agradezco a todos sus aportes aunque no soy un experto he logrado crear el xml, pero lo que aun no tengo es el certificado y el sello digital, estoy trabajando en C#. Alguien podría compartir el codigo para generar el sello digital con la disposicion del sha-1 y el rsa y luego pasarle lo de la firma, yo la verdad no le entiendo... Bueno yo les aporto otra opcion de generar el xml, me lo avente a pie y como dicen el validador del sat no reconoce las adendas pero si no las tomamos en cuenta pasa sin problemas, espero les pueda servir...
public void CrearDocumentoXML()
{
XNamespace referencia = "http://www.sat.gob.mx/cfd/2";
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
string schemaLocation = "http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd ";
XDocument miXML = new XDocument(
new XDeclaration("1.0", "UTF-8", ""),
//new XComment("Creacion de XML"),
new XElement( referencia + "Comprobante",
new XAttribute("serie", Variables.Serie),
new XAttribute("version", "2.0"),
new XAttribute("folio", Variables.Folio),
new XAttribute("fecha", Variables.Fecha),
new XAttribute("sello", Variables.SelloDigital),
new XAttribute("noAprobacion", Variables.noAprobacion),
new XAttribute("anoAprobacion", Variables.anoAprobacion),
new XAttribute("formaDePago", Variables.formaDePago),
new XAttribute("noCertificado", Variables.NoCertificado),
new XAttribute("certificado", Variables.Certificado),
new XAttribute("condicionesDePago", Variables.condicionesDePago),
new XAttribute("subTotal", "2000.00"),
new XAttribute("descuento", "0.00"),
new XAttribute("motivoDescuento", "promocionEspecial"),
new XAttribute("total", "2320.00"),
new XAttribute("metodoDePago", Variables.metodoDePago),
new XAttribute("tipoDeComprobante", Variables.tipoDeComprobante),
new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute(xsi + "schemaLocation", schemaLocation),
new XElement(referencia + "Emisor",
new XAttribute("rfc", Variables.RFCEmisor),
new XAttribute("nombre", Variables.NombreEmisor),
new XElement(referencia + "DomicilioFiscal",
new XAttribute("calle", Variables.CalleEmisor),
new XAttribute("noExterior", Variables.NoExteriorEmisor),
new XAttribute("colonia", Variables.ColoniaEmisor),
new XAttribute("localidad", Variables.LocalidadEmisor),
new XAttribute("referencia", Variables.ReferenciaEmisor),
new XAttribute("municipio", Variables.MunDelegacionEmisor),
new XAttribute("estado", Variables.EstadoEmisor),
new XAttribute("pais", Variables.PaisEmisor),
new XAttribute("codigoPostal", Variables.CPEmisor)),
new XElement( referencia + "ExpedidoEn",
new XAttribute("calle", Variables.CalleEmisor),
new XAttribute("noExterior", Variables.NoExteriorEmisor),
new XAttribute("colonia", Variables.ColoniaEmisor),
new XAttribute("localidad", Variables.LocalidadEmisor),
new XAttribute("referencia", "LaReferencia"),
new XAttribute("municipio", Variables.MunDelegacionEmisor),
new XAttribute("estado", Variables.EstadoEmisor),
new XAttribute("pais", Variables.PaisEmisor),
new XAttribute("codigoPostal", Variables.CPEmisor))),
new XElement(referencia + "Receptor",
new XAttribute("rfc", Variables.RFCReceptor),
new XAttribute("nombre", Variables.NombreReceptor),
new XElement( referencia + "Domicilio",
new XAttribute("calle", Variables.CalleReceptor),
new XAttribute("noExterior", Variables.NoExteriorReceptor),
new XAttribute("colonia", Variables.ColoniaReceptor),
new XAttribute("localidad", Variables.LocalidadReceptor),
new XAttribute("referencia", Variables.ReferenciaReceptor),
new XAttribute("municipio", Variables.MunDelegacionReceptor),
new XAttribute("estado", Variables.EstadoReceptor),
new XAttribute("pais", Variables.PaisReceptor),
new XAttribute("codigoPostal", Variables.CPReceptor))),
new XElement(referencia + "Conceptos",
new XElement(referencia + "Concepto",
new XAttribute("cantidad", "1.00"),
new XAttribute("unidad", "Servicio"),
new XAttribute("noIdentificacion", "01"),
new XAttribute("descripcion", "AlimentosSusalia"),
new XAttribute("valorUnitario", "2000.00"),
new XAttribute("importe", "2000.00"))),
new XElement(referencia + "Impuestos",
new XAttribute("totalImpuestosRetenidos", "320.00"),
new XAttribute("totalImpuestosTrasladados", "320.00"),
new XElement(referencia + "Retenciones",
new XElement( referencia +"Retencion",
new XAttribute("impuesto", "IVA"),
new XAttribute("importe", "320.00"))),
new XElement(referencia + "Traslados",
new XElement(referencia + "Traslado",
new XAttribute("impuesto", "IVA"),
new XAttribute("tasa", "16.00"),
new XAttribute("importe", "320.00")))),
new XElement(referencia + "Complemento"),
new XElement(referencia + "Addenda"/*,
new XAttribute("Credito",Variables.Credito),
new XAttribute("Consignado",Variables.Consignado),
new XAttribute("NoProveedor", Variables.NoProveedor),
new XAttribute("NoOrden", Variables.NoOrden),
new XAttribute("Observaciones", Variables.Observaciones),
new XAttribute("Vendedor", Variables.Vendedor)*/)));
miXML.Save(@"c:\Factura-" + Variables.RFCEmisor + ".xml");
}
Claro esto solo es una clase y como funciona mi logica para crear la factura es:
1 capturas los datos
2 los guardas en la BD
3 generas cadena original
4 generas sello digital
5 generas xml
el xml lo generas jalando todos los datos guardados en la base de datos...
Bueno esa es mi concepcion.
Me podrian ayudar con lo del sello digital.... |