Foros del Web » Programando para Internet » PHP »

Problemas para cargar pagina mediante curl

Estas en el tema de Problemas para cargar pagina mediante curl en el foro de PHP en Foros del Web. Hola, que tal, les explico. Estoy realizando un pequeño script en php para poder enviar datos automaticamente (sin que el usuario escriba nada ) a ...
  #1 (permalink)  
Antiguo 04/10/2012, 17:31
 
Fecha de Ingreso: octubre-2012
Ubicación: Cancun
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Problemas para cargar pagina mediante curl

Hola, que tal, les explico.
Estoy realizando un pequeño script en php para poder enviar datos automaticamente (sin que el usuario escriba nada ) a la pagina de verificacion de CFDI del SAT, aqui en mexico.
esta es la pagina: https://verificacfdi.facturaelectronica.sat.gob.mx/

Entonces se me ocurrio cargar la pagina del SAT con CURL, y el resultado ocultarlo, excepto el capcha donde coloco un cuadro de texto dentro de un formulario y muestro el capcha. toda la informacion de la factura se colocara de forma automatica en los hidden de mi formulario. y hasta ahi todo bien.

Pero mi problema es que cuando quiero enviar los parametros mediante curl y post, me carca un error. pero si en mi formulario el action es hacia la pagina del sat directamente funciona sin nigun problema, es decir, se obtiene el resultado de la comprobacion de la factura.

Entonces, sera que alguien tenga alguna idea de porque sucede eso??
aca les paso el codigo de mi script
PAra probar en el formulario, si dejo el action en blanco cargo mi mismo script me me marca un error el resultado de la pagina del SAT, pero si coloco la direccion del SAT, el resultado es correcto.

Gracias de antemano. y cualquier idea o algo que me pueda ayudar sera muy bien recibido!!!
saludos!!!

Código:
<?php
 
function post_web_page($url, $option)
{
	echo 	$option;
	$ch = curl_init($url);//URL A ENVIAR EL CONTENIDO
		$options = array(
     	CURLOPT_RETURNTRANSFER => true,     // return web page
        //CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        //CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects	
		CURLOPT_POST			=> true,
		CURLOPT_POSTFIELDS 		=> $option,
 		CURLOPT_SSL_VERIFYPEER => true,
 		CURLOPT_SSL_VERIFYHOST => 2,
		CURLOPT_CAINFO => getcwd() . "\GeoTrustGlobalCA.crt",
 
 
    );
	//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//OPCIONAL: NO RETORNARA EL RESULTADO DE LA OPERACION
 
	curl_setopt_array( $ch, $options );
	$content = curl_exec( $ch );
 
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
 
 
    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}
 
function get_web_page( $url )
{
 
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
		CURLOPT_SSL_VERIFYPEER => false,
 
    );
 
    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
	curl_close( $ch );
 
    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}
 
if (empty($_POST)){
	$url = 'https://verificacfdi.facturaelectronica.sat.gob.mx/';
	$res=get_web_page( $url );
 
	$output=str_replace('href="', 'href="https://verificacfdi.facturaelectronica.sat.gob.mx/', $res['content']);
	$output=str_replace('src="', 'src="https://verificacfdi.facturaelectronica.sat.gob.mx/', $output);
	echo '<div style="display:none">'. $output .'</div>';
	?>
	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
	<script>
 
 
		$(function(){
			a=$('#__VIEWSTATE').val();
			$('#VIEWSTATE').attr({'value': a});
			a=$('#ctl00_MainContent_ImgCaptcha').attr('src');
			$('#c').attr('src', a);
 
 
 
 
			});
 
	</script>
	<br/>
 
	<form action="" method="post" enctype="application/x-www-form-urlencoded" name="form" id="form" >
	<input type="submit" />
	<input type="hidden" value="true" name="__ASYNCPOST" />
	<input type="hidden" value="" name="__EVENTARGUMENT" />
	<input type="hidden" value="" name="__EVENTTARGET" />
	<input type="hidden" value="" name="__VIEWSTATE" id="VIEWSTATE" />
	<input type="hidden" value="" name="__VIEWSTATEENCRYPTED" />
	<input type="hidden" value="Verificar CFDI" name="ctl00$MainContent$BtnBusqueda" />
	<input type="text" value="" name="ctl00$MainContent$TxTCaptchaNumbers" id="cap" />
	<input type="hidden" value="AXT940727FP8" name="ctl00$MainContent$TxtRfcEmisor" />
	<input type="hidden" value="AGU931206CH4" name="ctl00$MainContent$TxtRfcReceptor" />
	<input type="hidden" value="EF48422A-1B0D-467F-A9E5-BEEFAD703560" name="ctl00$MainContent$TxtUUID" />
	<input type="hidden" value="ctl00$MainContent$UpnlBusqueda|ctl00$MainContent$BtnBusqueda" name="ctl00$ScriptManager1" />
	<img id="c" src="" />
	</form>
 
 
<?php
}
else
{ 
 
 
	$op = "__ASYNCPOST=true&__EVENTARGUMENT=&__EVENTTARGET=&__VIEWSTATE=".$_POST['__VIEWSTATE']."&__VIEWSTATEENCRYPTED=&ctl00$MainContent$BtnBusqueda=".$_POST['ctl00$MainContent$BtnBusqueda']."&ctl00$MainContent$TxTCaptchaNumbers=".$_POST['ctl00$MainContent$TxTCaptchaNumbers']."&ctl00$MainContent$TxtRfcEmisor=".$_POST['ctl00$MainContent$TxtRfcEmisor']."&ctl00$MainContent$TxtRfcReceptor=:".$_POST['ctl00$MainContent$TxtRfcReceptor']."&ctl00$MainContent$TxtUUID=".$_POST['ctl00$MainContent$TxtUUID']."&ctl00$ScriptManager1=".$_POST['ctl00$ScriptManager1'];
 
	$url="https://verificacfdi.facturaelectronica.sat.gob.mx/";
	$res = post_web_page($url,$op);
	echo htmlentities( $res['content']).'<br/>';
	echo $res['errmsg'].'<br/>';
	echo   $res['errno'].'<br/>';
 
}
?>

Etiquetas: curl, post, sat
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:47.