Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/12/2012, 10:54
Avatar de jandrogdz
jandrogdz
 
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 12 años, 6 meses
Puntos: 12
Respuesta: Caracteres raros en un XML

Este es el codigo de todo el archivo.
y perdon es la variable de respuesta

La respuesta viene de un web service que hace un timbrado par auna factura electronica.

Código PHP:
Ver original
  1. <?php
  2.     header ('Content-type: text/html; charset=utf-8'); 
  3.     try {
  4.    
  5.         set_time_limit(0);
  6.        
  7.  
  8.         $filename="20121213024445FacturaA-1_resellado.xml";
  9.        
  10.         /*$output="";
  11.         $file = fopen($filename, "r");
  12.         while(!feof($file)) {
  13.             //read file line by line into variable
  14.           $output = $output . fgets($file, 4096);
  15.         }
  16.         fclose ($file); */
  17.         //echo $output;
  18.        
  19.         $XML = new DOMDocument();
  20.         $XML->load($filename );
  21.        
  22.         //set_time_limit(60);
  23.        
  24.    
  25.         /* conexion al web service */
  26.         //$client = new SoapClient('https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService?wsdl',array('trace' => 1));
  27.         $client = new SoapClient('https://dev.facturacfdi.mx:8081/WSTimbrado/WSForcogsaService?wsdl',array('trace' => 1));
  28.         /* esto es solo para informativo */
  29.         //var_dump($client->__getFunctions());
  30.        
  31.         /* se le pasan los datos de acceso */
  32.         $autentica = new Autenticar();
  33.         $autentica->usuario = "pruebasWS";
  34.         $autentica->contrasena = "pruebasWS";
  35.         //var_dump($autentica);
  36.         /* se cacha la respuesta de la autenticacion */
  37.         $responseAutentica = $client->Autenticar($autentica);  
  38.        
  39.         //echo $responseAutentica->return->mensaje . "<br>";
  40.         //echo $responseAutentica->return->token . "<br>";
  41.        
  42.         /* se manda el xml a timbrar */
  43.         $timbrar = new Timbrar();
  44.         $timbrar->cfd = $XML->saveXML();
  45.         $timbrar->token = $responseAutentica->return->token;
  46.        
  47.         /* cacha la respuesta */
  48.         $responseTimbre = $client->Timbrar($timbrar);
  49.         //var_dump($responseTimbre);
  50.         $solicitud = $client->__getLastRequest() . "\n";
  51.         $respuesta = $client->__getLastResponse() . "\n";
  52.         //echo $solicitud."<br />";
  53.         echo $respuesta;
  54.        
  55.         /*
  56.         $xml_timbrado = fopen("Factura.xml","w");
  57.         fwrite($xml_timbrado,$solicitud);
  58.         fclose($xml_timbrado);
  59.        
  60.        
  61.         $timbre = new SimpleXMLElement("Factura.xml",null,true);
  62.         $ns = $timbre->getNamespaces(true);
  63.         $timbre->registerXPathNamespace('c', $ns['cfdi']);
  64.         $timbre->registerXPathNamespace('t', $ns['tfd']);
  65.        
  66.         foreach($timbre->xpath('//t:TimbreFiscalDigital') as $tfd)
  67.         {
  68.             $selloCFD = "selloCFD: ".$tfd['selloCFD']."<br />";
  69.             $fechaTimbrado = "fecha: ".$tfd['FechaTimbrado']."<br />";
  70.             $UUID = "UUID: ".$tfd['UUID']."<br />";
  71.             $noCertificadoSAT = "CertificadoSat: ".$tfd['noCertificadoSAT']."<br />";
  72.             $selloSAT = "selloSat: ".$tfd['selloSAT'];
  73.             echo $selloCFD."<br />";
  74.             echo $fechaTimbrado."<br />";
  75.             echo $UUID."<br />";
  76.             echo $noCertificadoSAT."<br />";
  77.             echo $selloSAT."<br />";
  78.         }
  79.         /*
  80.        
  81.         /* solo informativo... muestra el codigo de error en caso de existir y resultados
  82.         echo "codigoErr:" . $responseTimbre->return->codigo . "<br>";
  83.         echo $responseTimbre->return->mensaje . "<br>";
  84.         echo $responseTimbre->return->cfdi. "<br>";
  85.         //print_r($responseTimbre);
  86.         */
  87.        
  88.     } catch (SoapFault $e) {
  89.         print("Auth Error:::: $e");
  90.     }
  91.    
  92.    
  93. class Autenticar{
  94.     public $usuario;
  95.     public $contraseña;
  96. }
  97.  
  98. class Timbrar{
  99.     public $cfd;
  100.     public $token;
  101. }
  102. ?>
__________________
Lo imposible solo cuesta un poco mas