Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- URLs de XSDs que uso
- http://core.moneybox.com.mx/xsd/Divisas.xsd
- http://core.moneybox.com.mx/xsd/TimbreFiscalDigital.xsd
- http://core.moneybox.com.mx/xsd/TuristaPasajeroExtranjero.xsd
- http://core.moneybox.com.mx/xsd/cfdiregistrofiscal.xsd
- http://core.moneybox.com.mx/xsd/cfdv2.xsd
- http://core.moneybox.com.mx/xsd/cfdv22.xsd
- http://core.moneybox.com.mx/xsd/cfdv22complemento.xsd
- http://core.moneybox.com.mx/xsd/cfdv2complemento.xsd
- http://core.moneybox.com.mx/xsd/cfdv2psgecfd.xsd
- http://core.moneybox.com.mx/xsd/cfdv3.xsd
- http://core.moneybox.com.mx/xsd/cfdv32.xsd
- http://core.moneybox.com.mx/xsd/cfdv32complemento.xsd
- http://core.moneybox.com.mx/xsd/cfdv3complemento.xsd
- http://core.moneybox.com.mx/xsd/cfdv3tfd.xsd
- http://core.moneybox.com.mx/xsd/detallista.xsd
- http://core.moneybox.com.mx/xsd/donat11.xsd
- http://core.moneybox.com.mx/xsd/ecc.xsd
- http://core.moneybox.com.mx/xsd/iedu.xsd
- http://core.moneybox.com.mx/xsd/implocal.xsd
- http://core.moneybox.com.mx/xsd/nomina.xsd
- http://core.moneybox.com.mx/xsd/nomina11.xsd
- http://core.moneybox.com.mx/xsd/pfic.xsd
- http://core.moneybox.com.mx/xsd/spei.xsd
- http://core.moneybox.com.mx/xsd/terceros11.xsd
- http://core.moneybox.com.mx/xsd/ventavehiculos.xsd
- */
- $xml_txt= file_get_contents($_FILES["upload_xml"]["tmp_name"]); # el XML viene del upload
- # quitamos posible addenda
- $xml_txt= preg_replace('{<Addenda.*/Addenda>}is', '<Addenda/>', $xml_txt); # quitamos
- $xml_txt= preg_replace('{<cfdi:Addenda.*/cfdi:Addenda>}is', '<cfdi:Addenda/>', $xml_txt); # quitamos
- if( !valida_cfdisat($xml_txt, "xsd", 0) ) # si no cumple estandar
- echo 'El XML fue mal generado o presenta errores (no cumple estandar).';
- else echo 'Exito'; # lo cumplio
- # validador de XMLs
- function valida_cfdisat($file, $op, $ret )
- {
- $r=0;
- if( !$file ) $r=0;
- else if( !$op ) $r=0;
- else
- {
- $xml= new DOMDocument();
- $xml->preserveWhiteSpace= FALSE;
- $xml->loadXML($file);
- $cfdi= xml_getallatributos( $xml, "Comprobante" );
- if( !strcmp($op, "xsd") ) # validar XSD
- {
- $version= $cfdi["Comprobante"]["version"];
- libxml_use_internal_errors(true);
- $arr_v= array( "2.0"=>HTTP_SERVER. "/xsd/cfdv2complemento.xsd",
- "2.2"=>HTTP_SERVER. "/xsd/cfdv22complemento.xsd",
- "3.0"=>HTTP_SERVER. "/xsd/cfdv3complemento.xsd",
- "3.2"=>HTTP_SERVER. "/xsd/cfdv32.xsd"
- );
- foreach( $arr_v as $key=>$val )
- {
- if( !strcmp( $key, $version) )
- {
- if( !($xml->schemaValidate($val)) )
- $r= array( "r"=>0, "msg"=>"Esquema detectado ". $key. ", estructura invalida" );
- else $r= array( "r"=>1, "msg"=>"Esquema detectado ". $key. ", estructura valida" );
- }
- }
- if( !$r ) # si continua vacio, no hubo coincidencia
- $r= array( "r"=>0, "msg"=>"Versi". acento("o"). "on invalida [". desproteger_cadena($version). "]" );
- unset($version, $arr_v);
- }
- else if( !strcmp($op, "cert") ) # validar Certificado
- {
- }
- else if( !strcmp($op, "sello") ) # validar Sello
- {
- }
- else $r= array( "r"=>0, "msg"=>"operacion invalida (cmd error)" );
- unset($xml, $of, $xp);
- # valor de retorno
- if( $ret ) # activado retorno detallado
- return $r;
- else # retorno simple
- return $r["r"];
- }
- return $r;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement