var cerPath = @"G:\Mi unidad\USLibV4\CSD Pruebas XIA190128J61\CSD_Xenon_Industrial_Articles_XIA190128J61_20190617_140751s.cer";
            var keyPath = @"G:\Mi unidad\USLibV4\CSD Pruebas XIA190128J61\CSD_Xenon_Industrial_Articles_XIA190128J61_20190617_140751.key";
            var keyPass = "12345678a";

            var fachadaCfdiV4 = new USLibV4.FachadaCfdiV4();

            fachadaCfdiV4.P00Setup(
                cerPath: cerPath, //Acepta Ruta o Array de bytes
                keyPath: keyPath, //Acepta Ruta o Array de bytes
                keyPassword: keyPass);

            fachadaCfdiV4.P01DatosGenerales(
                serie: "A",
                folio: "101",
                fecha: DateTime.Now,
                formaPago: "99",
                condicionesDePago: "Contado",
                subTotal: 100m,
                descuento: 0m,
                moneda: "MXN",
                tipoCambio: null,
                total: 116m,
                tipoDeComprobante: "I", //E = Egreso de nota de crédito
                exportacion: "01",
                metodoPago: "PPD",
                lugarExpedicion: "85040",
                confirmacion: "");

            fachadaCfdiV4.P04Emisor(
                rfc: "XIA190128J61",
                nombre: "XENON INDUSTRIAL ARTICLES",
                regimenFiscal: "601",
                facAtrAdquirente: "");

            fachadaCfdiV4.P05Receptor(
                rfc: "XAXX010101000",
                nombre: "Roberto Corona",
                domicilioFiscalReceptor: "85040",
                residenciaFiscal: "",
                numRegIdTrib: "",
                regimenFiscalReceptor: "616",
                usoCFDI: "S01");

            var idConcepto = fachadaCfdiV4.P06Concepto(
                  claveProdServ: "01010101",
                  noIdentificacion: "",
                  cantidad: 1m,
                  claveUnidad: "ZZ",
                  unidad: "",
                  descripcion: "Producto",
                  valorUnitario: 100m,
                  importe: 100m,
                  descuento: 0,
                  objetoImp: "02");


            fachadaCfdiV4.P06ConceptoImpuestosTraslados(
                baseCalculoImpuesto: 100m,
                impuesto: "002",
                tipoFactor: "Tasa",
                tasaOCuota: 0.160000m,
                importe: 16m,
                idConcepto: idConcepto);

            fachadaCfdiV4.P07ImpuestosCrearResumenPorConceptos();

            var cadena = fachadaCfdiV4.P08GenerarCadenaOriginal();
            fachadaCfdiV4.P09GenerarSelloDigital();

            var cfdiResponse = fachadaCfdiV4.P10TimbrarCfdi(esPrueba: true, idServicio: "", referenceId: "");
            if (cfdiResponse.Success)
            {

                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.UUID);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.FechaTimbrado);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.NoCertificadoSAT);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.RfcProvCertif);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.SelloCFD);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.SelloSAT);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigital.Version);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.TimbreFiscalDigitalCadenaOriginal);
                Console.WriteLine(fachadaCfdiV4.ResumenCfdi.Comprobante.NoCertificado);
                //Convertir XmlBase64 en un array de bytes
                var xmlBytes = Convert.FromBase64String(cfdiResponse.Base64XmlFile);
                System.IO.File.WriteAllBytes(@"C:\Wsdl\Cfdi.xml", xmlBytes);
                //Guardar QR
                System.IO.File.WriteAllBytes(@"C:\Wsdl\Cfdi.png", fachadaCfdiV4.ResumenCfdi.QrImage);
            }
            else
            {
                Console.WriteLine(cfdiResponse.ErrorMessages);
            }