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 function post_web_page($url, $option) { echo $option; 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, ); //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//OPCIONAL: NO RETORNARA EL RESULTADO DE LA OPERACION $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } function get_web_page( $url ) { 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, ); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } $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']); 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 $res['errmsg'].'<br/>'; echo $res['errno'].'<br/>'; } ?>