CFDICFDI

Sellar Xml CFDI 4.0

La funcion certificar extra la informacion del cer y decodifica el numero del certificado y las anexa en la propiesades del xml para poder ser sellada. La funcion sellar anexa un sello unico en base a todo el xml y la key

JavaScript
 import { CFDI } from '@cfdi/xml';
 //const key = 'CSD_Pruebas_CFDI_TCM970625MB1.key';
 //const cer = 'CSD_Pruebas_CFDI_TCM970625MB1.cer';
 const key = 'CSD_Pruebas_CFDI_TCM970625MB1.key.pem';
 const cer = 'CSD_Pruebas_CFDI_TCM970625MB1.cer.pem';
 const cfd = new CFDI();
 await cfd.certificar(cer);
 await cfd.sellar(key, '12345678a');
 const xml = await cfd.getXmlCdfi();
    

JavaScript
<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:cfdi="http://www.sat.gob.mx/cfd/3"
                  xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"
                  Version="4.0"
                  Serie=""
                  Folio=""
                  Fecha=""
                  Sello="Vj/X/ZUWxL6DJOEXflMAVwfotRU5uZ4....."
                  FormaPago=""
                  NoCertificado="20001000000300022762"
                  Certificado="MIIF8DCCA9igAwIBAgIUMjAwMDEwMDAwMDAzMDAwMjI3NjIwDQ....."
                  condicionesDePago=""
                  SubTotal=""
                  Descuento=""
                  Moneda=""
                  Total=""
                  TipoDeComprobante=""
                  MetodoPago=""
                  LugarExpedicion="">
    

Saxon


este depende de saxon, es necesario instalar lo https://cfdi.recreando.dev/es/getting-started/installation#Saxon

si deseas hacer el sello de un xml sin ocupar la libreria puedes usar
Terminal
npm i @signati/saxon --save
npm i @cfdi/csd --save

JavaScript

import { Transform, saxon } from '@signati/saxon';
import { key } from '@cfdi/csd';

const xmlPath = '/home/dev/app/cfdi.xml'
const xslt = '/home/dev/app/v4/cadenaOriginal.xslt'
const filkey = '/home/dev/app/csd/LAN7008173R5.key.pem';

// si estas ocupando la extension .pem no necesitas pasar la contraña

key.setFile(filkey, '12345678a');

const transform = new Transform();
const cadenaOriginal = transform.s(xmlPath).xsl(xslt).warnings('silent').run();

// console.log(cadenaOriginal)
//cadena original => ||4.0|E|ACACUN-27|2014-07-08T12:16:50|01|20001000000300022815|16148.04|645.92|MXN|17207.35
//|I|01|PUE|México|1|1|2|01|asdasd-3234-asdasd-2332-asdas|asdasd-3234-asdasd-2332-asdas|TCM970625MB1|
//FACTURACION MODERNA SA DE CV|601|asdasd|XAXX010101000|PUBLICO EN GENERAL|112|22|G01|001|1212|2|pieza|Pieza|
//audifonos|1000|2000|00.0|01|369.83|002|Tasa|0.16|59.17|369.8aaaa3|002|Tasa|0.16|59.17|369.83|002|
//Tasa|0.16|59.17|21 47 3807 8003832|000121231|51241200|IM020|1|PIEZA|25311FM00114
//CREMA FUNGICIDA 35ML (ACIDO UNDECILENICO, ARBOL DEL TE VEHICULO EMOLIENTE)
//|172.50|172.50|001|1212|2|pieza|Pieza|audifonos|1000|2000|00.0|01|
// JUFA7608212V6|ADRIANA JUAREZ FERNANDEZ|601|29133|002|59.17|1000|1|002|Tasa|0.16|59.17||

const sello = key.signatureHexForge(cadenaOriginal);

la varible sello lo debes colocar en el atributo Sello dell xml


Este sitio utiliza cookies para mejorar tu experiencia. Al continuar navegando, aceptas su uso. Puedes deshabilitarlas desde tu navegador.