Buscar en este blog

jueves, 15 de marzo de 2018

Recuperación Información Registro Compras Ventas SII

Recuperación Información Registro Compras Ventas SII

Clase que permite recuperar la información de compras y ventas desde el registro de compras y ventas del SII en ambiente de producción.

Características

- Realiza consulta sin web services
- Recupera listado de uno o varios documentos Dtes recibidos o emitidos.

Configuración

- Necesita certificado digital inscrito en el SII.

Requisitos

- Net.
- Framework 4.0 o superior

Tipo de Proyecto

- Tipo: Dll
- Nombre : HEFESTO.SII.V2018.BACKGROUND.CONSULTAS


Consultas y Valores

Marcelo Rojas Rojas
abaddon.1974@gmail.com
Movil:997800285


Como recuperar lista resumen de compras

Estos son los datos actuales en el SII.


Estos son los datos actuales descargados por Hefesto.




Como recuperar lista detalle de documentos recibidos


Estos son los datos actuales en el SII.







Como recuperar lista detalle de documentos recibidos



Como recuperar lista resúmenes de Ventas

Estos son los datos actuales en el SII.








Como recuperar lista resumen de Ventas




















Como recuperar lista detalle de documentos ventas


Estos son los datos actuales en el SII.















Como recuperar lista detalle de Ventas





















57 comentarios:

  1. Hola Marcelo, he estado viendo tu aplicación y esta muy buena, he intentado realizar la descarga, pero no logro hacerla, tu me podrías indicar de que url la realizas.

    Gracias

    ResponderEliminar
  2. https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport


    pero obviamente debes pasar algunos parámetros.

    ResponderEliminar
  3. Hola, gracias por la respuesta, les he pasado estos parámetros y no me realiza la descarga.

    ?rut=12312312-3&operacion=compra&201807&dte=33&estado=REGISTRO

    Sabes si esto es lo correcto???

    ResponderEliminar
  4. Hola no es correctos,se debe pasar una cadena Json al httpwebrequest , ejemplo

    {"metaData":{"conversationId":"T9H2JHEQIBSLW"},"data":{"rutEmisor":"9999999","dvEmisor":"9","ptributario":"201803","estadoContab":"REGISTRO","codTipoDoc":0,"operacion":"COMPRA"}}

    el conversationid corresponde al token

    saludos

    ResponderEliminar
    Respuestas
    1. Hola Carlos, primero gracias por la ayuda, mira envio el json a la url que mencionas mas arriba,"https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport" , pero me arroja "Error en el servidor remoto: (500) Error interno del servidor."

      Si me podrias orientar.
      Saludos Diego.

      Eliminar
    2. Hola Carlos, donde obtienes la info de que servicios estan disponibles para ser consumidos?... sabrás el servicio que permita consultar la situación tributaria de terceros?... gracias y saludos!

      Eliminar
    3. Gabriel no es un web service, se captura la información antes que sea dibujada en la pagina.

      Eliminar
    4. En que lenguaje estas trabajando???...coloca un extracto del codigo

      Eliminar
    5. Este comentario ha sido eliminado por el autor.

      Eliminar
  5. parece que el sii puso algunas restricciones

    ResponderEliminar
  6. logancl, saludos. A que te refieres?

    ResponderEliminar
  7. ¿Alguien con información actualizada al respecto?. Después de un tiempo ya, realizando la consulta ahora los pàrametros de entrada han cambiado, requiero de un Transactionid ¿ alguna idea del valor a entregar.

    ResponderEliminar
    Respuestas
    1. Hola, pudiste solucionar lo del transactionid?

      Eliminar
    2. hola, alguien sabe como obtener este parametro? Gracias!

      Eliminar
  8. Hola, alguno tiene información al respecto para realizar la conexión y descargar del reporte?
    Gracias.

    ResponderEliminar
  9. hola, desde el año pasado no funciona.. creo que es por el cambio en los paramentros que comentas.

    ResponderEliminar
  10. Estará activa esta opción activa actualmente?, alguien sabe?

    ResponderEliminar
  11. Hola!! , antes de todo , agradezco la documentación expuesta. Les comento que necesito obtener el registro de compra del SII, entiendo que se puede bajar de esta url
    https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport , pero tengo duda con los parametros , estos se envian por GET o POST , que formato ?? json ?
    Atte.

    ResponderEliminar
  12. Hola !!, alguien lo pudo resolver??
    yo le hice seguimiento con la herramienta de desarrollador de Chrome y muestra que los parámetros que usa son:

    {
    "metaData":{
    "namespace":"cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport",
    "conversationId":"PPPPPPPP",
    "transactionId":"f1ed202d-20a6-4919-8243-5f7151e0d5d0",
    "page":null
    },
    "data":{
    "rutEmisor":"77777777",
    "dvEmisor":"7",
    "ptributario":"201910",
    "codTipoDoc":0,
    "operacion":"COMPRA",
    "estadoContab":"REGISTRO"
    }
    }

    Al ejecutar la consulta en una aplicación, esta muestra el siguiente error:
    'Error en el servidor remoto: (404) No se encontró.'

    Alguna idea?

    ResponderEliminar
    Respuestas
    1. Estimado, como llegas a estas opciones en el Chrome, donde está en el sii. Para poder hacer el mismo seguimiento a la url (https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport).

      Eliminar
    2. han podido obtener los registros, saben desde que url se consulta ya que antes era de: https://palena.sii.cl/cgi_dte/consultaDTE/wsDTEConsRecCont.sh? pero ahora ya no esta disponible. agradezco que pueden orientarme por favor

      Eliminar
  13. Segun el la mesa des-ayuda del sii la dieron de baja... pero no se que creer.

    ResponderEliminar
    Respuestas
    1. que mal, yo también llame y me comentaron que habían dado de baja

      Eliminar
  14. Hola, alguien ha podido solucionar esto, yo antes consultaba desde la siguiente URL con metodo GET: https://palena.sii.cl/cgi_dte/consultaDTE/wsDTEConsRecCont.sh.

    SII ha cambiado la URL, leyendo los comentarios es otra y se asimila que debe ser con un POST, como paso los parametros? favor agradecería su apreciada ayuda

    ResponderEliminar
  15. quizas hay que ver sacar la info. desde otras partes.. eso al menos estoy haciendo yo.

    ResponderEliminar
    Respuestas
    1. si logro resolver, comparto el metodo, pero yo estoy trabajando con c#

      Eliminar
    2. HttpWebRequest oRequest;

      string url = "https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompra";

      //Iniciar propiedades del request
      oRequest = (HttpWebRequest)HttpWebRequest.Create(url);
      oRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8;application/json;text/plain";
      oRequest.Headers.Add("Cookie", "TOKEN=" + sTokenSII);
      oRequest.ContentType = "application/json;charset=utf-8";//"text/xml;charset=\"utf-8\"";
      oRequest.Method = "POST";

      //certificado digital
      System.Security.Cryptography.X509Certificates.X509Certificate2 oCert;
      oCert = new System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCertificado, sClaveCertificado);
      oRequest.ClientCertificates.Add(oCert);

      //Prueba Json
      using (var streamWriter = new StreamWriter(oRequest.GetRequestStream()))
      {
      string json = "{\"metaData\":{\"conversationId\":\"" + sTokenSII + "\", \"transactionId\": \"0\"," +
      "\"namespace\": \"cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompra\"}," +
      "\"data\":{" +
      "\"rutEmisor\":\"79556040\"," +
      "\"dvEmisor\":\"8\"," +
      "\"ptributario\":\"202001\"," +
      "\"estadoContab\":\"REGISTRO\"," +
      "\"codTipoDoc\":33," +
      "\"operacion\":\"COMPRA\"}}";

      streamWriter.Write(json);
      }

      var httpResponse = (HttpWebResponse)oRequest.GetResponse();
      string sJsonResul = "";
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
      {
      //recoger respuesta 1
      var result = streamReader.ReadToEnd();
      sJsonResul = result;
      }

      Eliminar
    3. Estimado, el resultado que se obtiene es el total de las COMPRAS o solo aquellas que están aceptadas?. Si son solo las aceptadas, cual sería la "\operacion\" que debería invocarse? Sabes tu?. Gracias de antemano y felicitaciones por su conocimiento tan amplio.

      Eliminar
    4. disculpa la tardanza alfredo, es cambiar = "\"estadoContab\":\"REGISTRO\","

      REGISTRO POR PENDIENTES

      Eliminar
  16. Respuestas
    1. ya respondí, con eso funciona, saludos

      Eliminar
    2. en eso mismo estaba.. puedas sacar ventas tb, detalles y resumen.

      saludos

      Eliminar
  17. todo lo de esa opción de la página, solo cambia la URL y enjoy

    Saludos

    ResponderEliminar
  18. Hola buenas, primero que todo muchas gracias por toda la información que esta en el foro, les comento que soy alumno de 2do año en informática y la empresa donde trabajo hace unas semanas necesita descargar los rcv de manera automática, quisiera poder ayudar con el proceso de creación de una aplicación que realice esa acción de manera automática, alguien podria ayudarme con los pasos a seguir con c#.

    De antemano muchas gracias.

    ResponderEliminar
  19. hola, alguien que lo lo lograra con php o este en desarrollo de este tema?

    ResponderEliminar
  20. Hola, primero agradecer por toda la información que han publicado, quisiera saber si alguien conoce el resto de los métodos que se pueden invocar y de que manera, yo pude probar que cambiando getDetalleCompra por getDetalleVenta me permite obtener el registro de las ventas, pero me gustaría saber que otros datos se pueden obtener desde esta url

    ResponderEliminar
  21. Buenos días estimados tienen alguna forma de obtener las boletas electrónicas con alguna URL, ya que probé con éxito que solo se puede obtener documentos de factura o relacionados si alguno tiene una noción de por donde se puede obtener el listado de esta información agradecido.

    ResponderEliminar
  22. Buenas estimados,
    Primero que todo agradecer vuestra disposición en la entrega de ayuda.
    Es una información muy útil.
    Quería preguntarles, de qué manera obtienen el token, porque actualmente, lo hago iniciando sesión vía navegador, y viendo las cookies.
    ¿Hay otra manera?

    Por cierto, estoy usando C#.

    De antemano muchas gracias,
    Saludos

    ResponderEliminar
    Respuestas
    1. Se hace primero una llamada al metodo getSeed y luego se crea un xml, para obtener el token 975883420 es mi numero.

      Eliminar
  23. Hola! Estoy trabajando en un proyecto de tesis y no he logrado conectarme con PHP. Actualmente obtengo el token, pero no puedo descargar a través de https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport

    De acuerdo a lo que he leido estoy enviando este paquete {"metaData":{"conversationId":"'.$token_auth.'"},"data":{"rutEmisor":"12345666","dvEmisor":"1","ptributario":"202010","estadoContab":"REGISTRO","codTipoDoc":0,"operacion":"COMPRA"}}

    Por metodo POST, pero tengo un error 400 Bad Request` response: Error 400 al enviar la solicitud.

    ¿Alguien ha tenido este problema? Muchas gracias de antemano si alguien pudiera brindarme un poco de ayuda.

    Gracias!

    ResponderEliminar
  24. Hola!!

    el token está acá: https://es.stackoverflow.com/questions/256258/login-con-curl-y-php-al-sii-servicio-impuestos-internos-de-chile

    (no pude transformar mi certificado a pem, pero con pass me funciona)

    Revisando todo lo que sale más arriba, llego a error 500... estoy trabajando en PHP...

    Alguien caritativo que nos de una manito??


    ResponderEliminar
  25. EUREKA!!!

    no sé que faltaba, pero ya funciona!!! :D:D:D

    $postData = array(
    'metaData' => array('conversationId' => $token,
    'namespace' => $GLOBALS['nameSpaceGetResumenRCV'],
    'transactionId' => '0'),
    'data' => array('rutEmisor' => '12123123',
    'dvEmisor' => '7',
    'ptributario' => '202010',
    'operacion' => 'COMPRA',
    'estadoContab' => 'REGISTRO')
    );

    $data = json_encode($postData);

    $context_options = array (
    'http' => array (
    'method' => 'POST',
    'Referer' => 'https://www4.sii.cl/consdcvinternetui/',
    'header'=> "Content-type: application/json;charset: utf-8\r\n"
    . "Accept: application/json, text/plain, */*\r\n"
    . "Cookie:
    RUT_NS=12123123;
    DV_NS=7;
    TOKEN=$token;
    CSESSIONID=$token; \n\n",
    'content' => $data
    )
    );

    ResponderEliminar
    Respuestas
    1. una consulta, finalmente envia el $context_options via post? algo asi?


      curl_setopt($ch, CURLOPT_URL, 'https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getResumen');
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $context_options);


      lo intente pero da error 500, agradecería si me puede guiar, ya hice incio de sesion y obtengo el tocken pero no logro acceder a registro de compra

      Eliminar
  26. Hola, ¿alguien sabe el parametro para los otros estados?
    REGISTRO y PENDIENTE están claros, pero ¿que valor debe ir cuando es "No incluir" o "Reclamados"?

    Muchas gracias.

    ResponderEliminar
  27. He hecho todo lo que dicen acá y no me funciona, puedn dar alguna pista clara, de como debiera ser, por favor

    ResponderEliminar
    Respuestas
    1. reqString += "{";
      reqString += "\"metaData\":{ ";
      reqString += "\"namespace\":\"cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport\",";
      reqString += "\"conversationId\":\"" + conversationId + "\",";
      reqString += "\"transactionId\":\"" + transactionId + "\",";
      reqString += "\"page\":null";
      reqString += "},";
      reqString += "\"data\":{ ";
      reqString += "\"rutEmisor\":\"" + rutEmisor + "\",";
      reqString += "\"dvEmisor\":\"" + dvEmisor + "\",";
      reqString += "\"ptributario\":\"" + ptributario + "\",";
      reqString += "\"codTipoDoc\":\"" + TipoDte + "\",";
      reqString += "\"operacion\":\"COMPRA\",";
      reqString += "\"estadoContab\":\"NO_INCLUIR\"";
      reqString += "}";
      reqString += "}";

      Eliminar
  28. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  29. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  30. //incializar
    require_once '../vendor/autoload.php';
    $cookiesAuth = new \GuzzleHttp\Cookie\CookieJar();
    $clientAuth = new \GuzzleHttp\Client();


    //me autentifico
    $aux = $clientAuth->request('GET','https://zeusr.sii.cl/cgi_AUT2000/CAutInicio.cgi', [
    'query' => [
    'rutcntr' => '11222333-4',
    'rut' => '11222333',
    'referencia' => 'https://www.sii.cl',
    'dv' => '4',
    'clave' => 'clave'
    ],
    'cookies' => $cookiesAuth
    ]);

    //obtengo el token
    $token=$cookiesAuth->getCookieByName('token');
    $pos1 = strpos($token, '=');
    $pos1++;
    $pos2 = strpos($token, ';');
    $token=substr($token,$pos1,($pos2-$pos1));


    //este codigo permite seleccionar una empresa para algunas funciones del SII cuando es necesario
    $aux = $clientAuth->request('GET','https://www1.sii.cl/cgi-bin/Portal001/mipeSelEmpresa.cgi', [
    'query' => [
    'RUT_EMP' => '11222333-4'
    ],
    'cookies' => $cookiesAuth
    ]);

    (sigo en el siguiente post)

    ResponderEliminar
    Respuestas

    1. //hago la conuslta al registro de compra y venta (mando como json los paramentros)
      $response2 = $clientAuth->request('POST','https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getResumen', [
      GuzzleHttp\RequestOptions::JSON => ['metaData' => array(
      'conversationId' => $token,
      'page'=> null,
      'namespace'=> "cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getResumen",
      'transactionId' => '0'),
      'data' => array(
      'rutEmisor' => '11222333',
      'dvEmisor' => '4',
      'busquedaInicial'=>true,
      'ptributario' => '202109',
      'operacion' => 'COMPRA',
      'estadoContab' => 'REGISTRO')

      ],


      'cookies' => $cookiesAuth
      ]);


      //muestro el resultado
      var_dump($response2->getBody()->getContents());


      //FIN
      para obtener las otras opciones del registro de compra y venta del SII, deben ir con el modo 'Network' con chrome, para ver las rutas, namespace y parametros
      espero que les sirva

      Eliminar
  31. Hola,
    Súper útil.
    Logro obtener un token, pero no retorna nada alhacer la consulta de un libro.
    Alguna Idea

    ResponderEliminar
  32. Hola, abro este hilo nuevamente, yo logre extraer el detalle de las facturas de la función getDetalleCompra, pero en mi caso lo más que tengo son 7 facturas, alguno de ustedes ya probo con descargar más registros? como es la salida del JSON hace una paginación o solo entrega todos los resultados del mes en el JSON?

    Saludos!

    ResponderEliminar
  33. Autenticacion correcta, cuando envio por POST todos los datos incluyendo el JSON {
    "Metadata":
    [
    {
    "namespace": "cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExpor",
    "ConversationID": "BT9Y8HZW8OQZ7",
    "transactionId": "0",
    "Page": "null"
    }
    ],
    "Data":
    [
    {
    "RutEmisor": "76019101",
    "dvEmisor": "9",
    "ptributario": "202212",
    "CodTipDoc": "33",
    "operacion": "REGISTRO"
    }
    ]
    }

    Me sale el error "Unrecognized field "Metadata" (Class cl.sii.sdi.lob.diii.consdcv.data.api.model.request.GetDcvCabeceraRequest)", que me falta?

    ResponderEliminar
    Respuestas
    1. Error mio, estaba pasando el archivo JSON en vez de la cadena, ahora me da OK a la peticion pero me devuelve un JSON con Usuario o empresa Nulo y nada mas.

      Eliminar