Nueva pregunta

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ódigo
public 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);

	}
Etiquetas: MySQL - PHP 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
 
frjcbbae garagebible.com