Tengo un problema con un script que estoy realizando para la cancelación de facturas electrónicas.
Al momento de tratar de cancelar me regresa un erro y unos datos que yo no asigne y no se porque alguien me puede ayudar.
Código PHP:
Ver original
<?php include_once('cancelacion.class.php'); $serv=new Cancelacion; $serv->usuario = "pruebasWS"; $serv->password = "pruebasWS"; $serv->rfc = "AAA010101AAA"; $serv->fecha = "2013-01-07T11:00:00"; 0 => "EB4A689D-D70E-40EA-A96D-5E8B07F006E5" /*0 => "1" */ ); // arreglo de bytes de publicKey... $ckey = ""; { } // arreglo de bytes de privateKey... $pkey = ""; { } $serv->passwordkeys = "a0123456789"; //$serv->file_cancelacion = "facturas/cancela.xml"; //var_dump($serv->https->__getFunctions()); //var_dump($serv->https->__getTypes()); //var_dump($serv->https->SignatureType); /* $cert = file_get_contents($serv->publicKey); $data_x509 = openssl_x509_parse($cert,true); print_r ($data_x509); echo ($data_x509['name']); var_dump ($data_x509); */ //exit; $serv->process(); if($serv->error != ""){ echo "Error**** <br>"; echo $serv->error . "<br>"; exit; }else{ echo $serv->out . "<br>"; exit; } function getOID($OID, $ssl) { return $matches[1]; } ?>
Código PHP:
Ver original
<?php /************************************************************ # Esta clase permite generar la firma digital a una cadena # mediante la ejecucion de comandos java # # Results are passed to: FirmaString->output # # Parameters to set: # usuario -> usuario ws # password -> password ws # rfc -> rfc # fecha -> fecha cancelacion # folios -> folios lista de folios a cancelar # publicKey -> archivo .cer # privateKey -> archivo .key # passwordkeys-> password de la clave privada # # # # Returned data: # error -> Errores encontrados durante el proceso # out -> acuse de cancelacion # # Methods: # process() -> Process data ************************************************************/ class Cancelacion{ var $usuario; var $password; var $rfc; var $fecha; var $folios; var $pubKey; var $privKey; var $passwordkeys; var $out; var $error; var $coderror; var $https; var $responseAutentica; var $Cancelacion_1Response; function Cancelacion(){ // Set error message $this->error=""; //$this->https = new SoapClient('https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService?wsdl'); $this->https = new SoapClient('https://dev.facturacfdi.mx:8081/WSTimbrado/WSForcogsaService?wsdl',array('trace' => 1,'encoding' => 'UTF-8')); } function process(){ try{ if($this->usuario==""){ $this->error="ERROR: El usuario es requerido."; return 0; } if($this->password==""){ $this->error="ERROR: El password es requerido."; return 0; } /* se le pasan los datos de acceso */ $autentica = new Autenticar(); $autentica->usuario = $this->usuario; $autentica->contrasena = $this->password; /* se cacha la respuesta de la autenticacion */ $this->responseAutentica = $this->https->Autenticar($autentica); if($this->responseAutentica->return->mensaje != ""){ $this->error = $this->responseAutentica->return->mensaje; }else{ /* se manda el xml a timbrar */ $cancela1 = new Cancelacion_1(); $cancela1->rfcEmisor = $this->rfc; $cancela1->token = $this->responseAutentica->return->token; $cancela1->fecha = $this->fecha; $cancela1->folios = $this->folios; $cancela1->password = $this->passwordkeys; $cancela1->publicKey = $this->pubKey; $cancela1->privateKey = $this->privKey; /* cacha la respuesta */ $this->Cancelacion_1Response = $this->https->Cancelacion_1($cancela1); if($this->Cancelacion_1Response->return->mensaje != ""){ $this->error = $this->Cancelacion_1Response->return->mensaje; }else{ $this->out = $this->Cancelacion_1Response->return->acuse; } } } catch (SoapFault $e) { print("Auth Error:::: $e"); } } } class Autenticar{ public $usuario; public $contrasena; } class Cancelacion_1{ public $rfcEmisor; public $fecha; public $folios; public $publicKey; public $privateKey; public $password; public $token; } ?>
Gracias de antemano