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 pagos = new USLibV4.Complementos.Comprobante.Pagos20.FachadaCfdi40Pagos20();
            pagos.P00Setup(cerPath: cerPath, keyPath: keyPath, keyPassword: keyPass);
            pagos.P01DatosGenerales(
                serie: "A", folio: "10", fecha: DateTime.Now.AddHours(-3),
                lugarExpedicion: "85160", confirmacion: "");

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

            pagos.P03Receptor(
                rfc: "EMC160315TX7",
                nombre: "EMCORSOFT",
                domicilioFiscalReceptor: "85040",
                residenciaFiscal: "",
                numRegIdTrib: "",
                regimenFiscalReceptor: "601",
                usoCFDI: "CP01");

            //Pago 
            var idPago = pagos.P04Pago(
                fechaPago: DateTime.Now, formaDePagoP: "03", monedaP: "MXN",
                tipoCambioP: 1, monto: 116m,
                numOperacion: "", rfcEmisorCtaOrd: "", nomBancoOrdExt: "",
                ctaOrdenante: "", rfcEmisorCtaBen: "",
                ctaBeneficiario: "", tipoCadPago: "", certPago: null, cadPago: "", selloPago: null);

            string idDocumento = "C9E3E604-B768-4092-910A-2C7461001EA9";

            //Factura original 
            pagos.P05DoctoRelacionado(idPago: idPago, idDocumento: idDocumento,
                serie: "A", folio: "1",
                monedaDR: "MXN", equivalenciaDR: 1m, numParcialidad: 1,
                impSaldoAnt: 58m, impPagado: 58m, impSaldoInsoluto: 0m, objetoImpDR: "02");

            pagos.P05DoctoRelacionado(idPago: idPago, idDocumento: idDocumento,
                serie: "B", folio: "1",
                monedaDR: "MXN", equivalenciaDR: 1m, numParcialidad: 1,
                impSaldoAnt: 58m, impPagado: 58m, impSaldoInsoluto: 0m, objetoImpDR: "01");

            pagos.P05DoctoRelacionadoImpuestoTraslado(
                idPago: idPago, idDocumento: idDocumento,
                baseDR: 50m, impuestoDR: "002", tipoFactorDR: "Tasa",
                tasaOCuotaDR: 0.16m, importeDR: 8m);

            pagos.P071CrearResumenImpuestosPorDocumento();

            var cfdiResponse = pagos.P08TimbrarCfdi(esPrueba: true, idServicio: "", referenceId: "");

            if (cfdiResponse.Success)
            {
                Console.WriteLine("OK");

                var xmlBytes = Convert.FromBase64String(cfdiResponse.Base64XmlFile);
                System.IO.File.WriteAllBytes(@"C:\Wsdl\Pagos.xml", xmlBytes);

                Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.UUID);
                Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.FechaTimbrado);
                Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.NoCertificadoSAT);
                Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.RfcProvCertif);
                //Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.SelloCFD);
                //Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.SelloSAT);
                //Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigital.Version);
                Console.WriteLine(pagos.ResumenCfdi.TimbreFiscalDigitalCadenaOriginal);

                //System.IO.File.WriteAllBytes(@"D:\Escritorio\Cfdi4\Qr.png", pagos.ResumenCfdi.QrImage);

                //Console.WriteLine(xmlString);
            }
            else
            {
                Console.WriteLine(cfdiResponse.ErrorMessages);
            }