Pregunta:
Fecha: 14-03-2022 08:05:50
(En Español)
Problemas con getStatusCdr de sunat[No resuelta]
Alguien me puede ayudar? tengo un problema para enviar un getStatusCdr de una factura no se si esta bien mi códigopublic function getStatusCDR($emisor,$nombre,$comprobante){
$ws = "https://e-factura.sunat.gob.pe/ol-ti-itcpfegem/billService?wsdl"; // para envios de pruebas!!!
$ruta_archivo_cdr = "cdr/";
$xml_envio ='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.sunat.gob.pe" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>'.$emisor['ruc'].$emisor['usuario_sol'].'</wsse:Username>
<wsse:Password>'.$emisor['clave_sol'].'</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ser:getStatusCdr>
<rucComprobante>'.$emisor['ruc'].'</rucComprobante>
<tipoComprobante>'.$comprobante['tipodoc'].'</tipoComprobante>
<serieComprobante>'.$comprobante['serie'].'</serieComprobante>
<numeroComprobante>'.$comprobante['correlativo'].'</numeroComprobante>
</ser:getStatusCdr>
</soapenv:Body>
</soapenv:Envelope>';
$header = array(
"Content-type: text/xml; charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: getStatusCdr",
"Content-lenght: ".strlen($xml_envio)
);
$ch = curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1);
curl_setopt($ch,CURLOPT_URL,$ws);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml_envio);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
//para ejecutar los procesos de forma local en windows
//enlace de descarga del cacert.pem https://curl.haxx.se/docs/caextract.html
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
$estadofe = "0";
if($httpcode == 200){ //200->La comunicación fue satisfactoria
$doc = new DOMDocument();
$doc->loadXML($response);
if(isset($doc->getElementsByTagName('applicationResponse')->item(0)->nodeValue)){
$cdr = $doc->getElementsByTagName('applicationResponse')->item(0)->nodeValue;
$cdr = base64_decode($cdr);
file_put_contents("R-".$nombrezip, $cdr);
$zip = new ZipArchive;
if($zip->open("R-".$nombrezip)===true){
$zip->extractTo($ruta_archivo_cdr,'R-'.$nombre.'.XML');
$zip->close();
}
$estadofe ="1";
$msj = "Generado correctamente, Puede descargar el CDR";
$msj = array('estado'=>$estadofe,'codigo'=>0000,'mensaje'=>$msj);
}else{
$estadofe = "2";
$codigo = $doc->getElementsByTagName("faultcode")->item(0)->nodeValue;
$mensaje = $doc->getElementsByTagName("faultstring")->item(0)->nodeValue;
//$msj = "error ".$codigo.": ".$mensaje;
$msj = array('estado'=>$estadofe,'codigo'=>$codigo,'mensaje'=>$mensaje);
}
}else{ //hay problemas comunicacion
$estadofe = "3";
$msj = "Problema de conexión: ".$httpcode.curl_error($ch);
$msj = array('estado'=>$estadofe,'codigo'=>0001,'mensaje'=>$msj);
}
curl_close($ch);
return json_encode($msj);
}
Votos: 0 -
Respuestas: 1 -
Vistas: 3
Compartir en: Google
Facebook
Twitter
LinkedIn
Link
Respuestas:
-
Fecha: 28-04-2022 13:07:00 Es extraño pero si tu lees de esa forma no hay respuesta, si lees el XML que guardaste de esa forma si puedes leer el (ResponseCode) y la (Description) Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
