A través del RIF obtener toda su información del SENIAT, PHP-CURL-JSON

En Venezuela Muchas empresas necesitan validar si un RIF es verdadero o saber la razón social de ese RIF, los programadores de muchos entes públicos y algunos privados necesitan implementar esa validación en sus sistemas, pero el ente encargado de proporcionar esa información es el SENIAT, y esta empresa no cuenta con ningún API o medio para poder tomar esta información, indagando en la web encontré este ejemplo que describiré posteriormente, esta escrito en PHP usa CURL y envía la respuesta en JSON esto significa que puede ser utilizado en cualquier lenguaje de programación ya que como dije la respuesta la envía en JSON.

la fuente oficial es: https://groups.google.com/forum/#!msg/canaima-universitario/QzUcSd5iULQ/rxJCU-zvuaUJ

Ejemplo:

<?php
/*
https://groups.google.com/forum/#!msg/canaima-universitario/QzUcSd5iULQ/rxJCU-zvuaUJ
code_result:
-1: no hay soporte a curl
0: no hay conexion a internet
1: existe rif consultado
otherwise:
450:formato de rif invalido
452:rif no existe
seniat:
    nombre:[CADENA CON EL NOMBRE]
    agenteretensioniva:[SI|NO]
    contribuyenteiva:[SI|NO]
    tasa:[VACIO|ENTERO MONTO TASA]
*/
$response_json=array('code_result'=>'', 'seniat'=>array());
if(function_exists('curl_init')){ // Comprobamos si hay soporte para cURL
       //$url="http://contribuyente.seniat.gob.ve/getContribuyente/getrif?rif=".$_POST['pref_rif'].$_POST['rif_prove'];
  $url="http://contribuyente.seniat.gob.ve/getContribuyente/getrif?rif=j003360392";
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       curl_setopt($ch, CURLOPT_TIMEOUT, 30);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
       $resultado = curl_exec ($ch);
       if($resultado){
               try{
                       if(substr($resultado,0,1)!='<')
                                throw new Exception($resultado);
                       $xml = simplexml_load_string($resultado);
                       if(!is_bool($xml)){
                               $elements=$xml->children('rif');
                               $seniat=array();
                               $response_json['code_result']=1;
                               foreach($elements as $indice => $node){
                                       $index=strtolower($node->getName());
                                       $seniat[$index]=(string)$node;
                               }
                               $response_json['seniat']=$seniat;
                       }
               }catch(Exception $e){
                       $result=explode(' ', $resultado, 2);
                       $response_json['code_result']=(int) $result[0];
               }
       }else
               $response_json['code_result']=0;//No hay conexion a internet
}else
       $response_json['code_result']=-1;//No hay soporte a curl_php
echo json_encode($response_json);
?>


Comentarios

  1. Hola, gracias, como podriamos ver si el rif esta vencido por este metodo? gracias.

    ResponderEliminar
  2. Hola, Buenos Dias! disculpa llevo dias tratando de implementar este codigo pero no me funciona. Me arroja este resultado= {"code_result":0,"seniat":[]}. Me podrias ayudar?

    ResponderEliminar
    Respuestas
    1. Debes Revisar si Tu conexion tiene Proxy y colocarle Esto

      curl_setopt($ch, CURLOPT_PROXY, 'elproxy:8080');

      Eliminar
  3. Hola! Muy útil tu código, de verdad muy agradecido. He estado probándolo y algunas veces aparece el error "0: no hay conexión a internet" y otras veces funciona bien. Para descartar problemas con mi conexión a internet, lo desplegué en un hosting y ocurre lo mismo. Crees que esto se debe a inestabilidad en la plataforma del SENIAT? o hará falta alguna configuración adicional?

    Una vez más, muchas gracias.

    Saludos,

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

VNC 5.1.0+SERIAL [FULL][MEGA]