Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - gio.garciap

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

Entonces lo que hice fue cargar la pagina con php y curl, lo que me permite obtener la informacion del captcha y cargar la pagina mediante post para que de esa forma poder enviar los datos que solicita la pagina automaticament, sin necesidad de teclean algo.

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 pa pagina del sat directamente funciona sin nigun problema.

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. !!!
saludos.
Código (php) [Seleccionar]

<?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/>';

}
?>