Clase para generar la cadena original de un CFDI v3.3
Puedes instalar este paquete via composer.
composer require mrgenis/sat-cadenaoriginal
Se envia la cadena de texto del CFDI XML 3.3 y 4.0
// Versión de CFDI 3.3
MrGenis\Sat\CadenaOriginal33::default_xslt_directory('/absolute-directory/to-store-xslt-files');
MrGenis\Sat\CadenaOriginal33::cadenaOriginal($xml);
// Versión de CFDI 4.0
MrGenis\Sat\CadenaOriginal40::default_xslt_directory('/absolute-directory/to-store-xslt-files');
MrGenis\Sat\CadenaOriginal40::cadenaOriginal($xml);
$xml = <<< EOF
<?xml version="1.0" encoding="utf-8" ?>
<cfdi:Comprobante xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"
Version="3.3" Folio="FOL123456" Fecha="2017-05-04T09:36:11"
FormaPago="01"
Sello=""
NoCertificado=""
Certificado=""
CondicionesDePago="CondicionesDePago" SubTotal="1000.00" Descuento="100.00" Moneda="MXN"
TipoCambio="1" Total="900.00" TipoDeComprobante="I" MetodoPago="PUE" LugarExpedicion="72000"
xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
<cfdi:Emisor Rfc="TEST010204002" Nombre="ETHAN HUNT" RegimenFiscal="601"/>
<cfdi:Receptor Rfc="TEST010203001" Nombre="JAMES BOND 007" UsoCFDI="G02"/>
<cfdi:Conceptos>
...
EOF;
use MrGenis\Sat\CadenaOriginal33;
$cadena = CadenaOriginal33::cadenaOriginal($xml);
$dom = new \DOMDocument();
$dom->load('documento.xml');
use MrGenis\Sat\CadenaOriginal33;
$cadena = CadenaOriginal33::cadenaOriginal($dom);
$dom = simplexml_load_file('documento.xml');
use MrGenis\Sat\CadenaOriginal33;
$cadena = CadenaOriginal33::cadenaOriginal($dom);
docker run --rm -it \
-v "$PWD":/usr/src/app \
thecodingmachine/php:7.4-v4-cli bash -c \
"composer install && ./vendor/bin/phpunit --configuration test/phpunit.xml"
MIT License (MIT). Ver archivo de licencia para mas información.