DLL Recuperar facturas de compras recibidas en SII
Estimados colegas agregamos a nuestra colección de herramientas de facturación electrónica, la posibilidad de recuperar la información de las facturas recibidas en el SII. Esto es útil para saber cuando debemos rechazar algunas de ellas.
Esta información le permitirá realizar el acuse de recibo de factura que debe empezar a operar desde agosto del 2017.
Esta información le permitirá realizar el acuse de recibo de factura que debe empezar a operar desde agosto del 2017.
Características
- Framework 4.0
- Lenguaje C#
- Lenguaje C#
- Soporte Ambiente Producción SII
- Soporte Certificado Instalado en PC ( Cn del certificado )
- Soporte Certificado Físico ( Path y Password )
- Soporte Certificado Instalado en PC ( Cn del certificado )
- Soporte Certificado Físico ( Path y Password )
Resultado
- Regresa un documento Xml con el el detalle de las facturas recibidas por el SII- Regresa un documento Xml codificado en ISO-8859-1
- Calcula la cantidad de días transcurridos desde la fecha de recepción del SII.
Consulte Valor
HefestoContacto@gmail.com
Como Consultar
Para consultar es necesario proporcionar los siguientes parámetros:
- Cn Nombre común del certificado.
- Rut del dueño del certificado.
- Rut Empresa que se va a consultar.
- Fecha Inicio de la búsqueda.
- Fecha Final de la búsqueda.
Resultado de la consulta:
El resultado de la consulta puede variar, pero cuando es bien efectuada regresará un documento xml (XmlDocument) el cual podrá guardar en disco o utilizarlo en otras operaciones:
Como es la implementación de la clase:
Consulta detalle de facturas recibidas en el SII utilizando el certificado instalada en maquina actual.
La Clase regresa un documento Xml como resultado
La clase ejecuta la consulta contra la página del SII y si se efectúa correctamente regresa un documento xml con la información recopilada.
Hola Marcelo, puedes indicarme cuál es el nombre del web service del SII para las consultas?
ResponderEliminarSaludos
Estimado,
EliminarNo realiza ningun llamado a web services. Solo necesita que la página del SII este funcionando.
pero como pasas los parámetros de consulta contra el sitio del sii, para obtener el xml con todos los dte de compras recibidos según el rango definido???
EliminarEste comentario ha sido eliminado por el autor.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarpor qué borra los comentarios?
ResponderEliminarse viene abajo el negocio...?
No para nada estimado, son los usuarios los que borran sus propios comentarios.
EliminarAtte.
Marcelo Rojas
Marcelo, gusto en saludar.
ResponderEliminarQuisiera realizarte una pregunta.
Resulta que logro obtener las compras, pero sol otengo un pequeño problema y es que el texto que descarga esta llegando sin formato UFT-8, por tal motivo los acentos no se visualizan de manera correcta.
Probe colocando en el Header content-type = application/x-www-form-urlencoded; charset=utf-8
Pero no funciono.
Sabes de alguna manera de resolver dicho problema?
Resuelto.
EliminarUsando Encoding.GetEncoding("ISO-8859-1")
Puedes utilizar este codigo
Eliminar////
//// Recupere la respuesta
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if (response.CharacterSet == null)
readStream = new StreamReader(receiveStream);
else
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
Estimados, la url de consulta es
Eliminarhttps://palena.sii.cl/cgi_dte/consultaDTE/DTEConsRecRangoCont.sh
Estimados indicar como pasar los parámetros por favor
ResponderEliminarHola, buenas tardes, me podrían indicar cual es la url especifica, donde se realiza la consulta.
ResponderEliminarhttps://palena.sii.cl/cgi_dte/consultaDTE/DTEConsRecRangoCont.sh
EliminarHola gracias, otra duda, cual es el orden en que se envia la parametros??
Eliminar1.- Certificado
2.- Rut Empresa
3.- Rut Certificado
4.- Rango de Fechas
Estimados, saben los nombres de los parametros a enviar, me refiero si el rut de la empresa en RUTEmpresa algo asi???
EliminarDESDE=09-08-2017&HASTA=09-08-2017&RUT=1111111-1&TIPO_CONSULTA=aqui en blanco
Eliminary en la cookies
TOKEN=numero de token; RUT_NS=rut_empresa; DV_NS=dv del rut
Gracias Carlos por la ayuda, comentarles, que pude enviar los parametros y tengo respuesta, pero en esta solo hay estos tipos de caracteres "\u001f\u008b\b\0\0\0\0\0\0\u0003¥WÝnÛ6\u0014¾ïS\u009cêbr°Èr\u0083aØ\u001cÛ\u0080\u0097v@\u0080n\rÒ´Ø®\u0002Z:¶\u0018P¤Ê\u001f;É°\u0087\u001aö\b}±\u001d\u008a¶,Ûr\u009b¬\u0001\u0002\u0093âùãÇsx>\u008e^¾~wqóçÕ\u001b(l)&/Fá\a\0F\u0005²¼\u001eùI\u0089\u0096AV0mÐ\u008e#gçÉOQº»ZX[%øÉñå8ú#ù0M.TY1Ëg\u0002#È\u0094´(IõòÍ\u0018ó\u0005î+KVâ8Zr\\UJÛ\u0096ü\u008aç¶\u0018ç¸ä\u0019&õä\u0014¸ä\u00963\u0091\u0098\u008c\t\u001c¿ê\u000fN¡d÷¼teû\u00933¨ë9£\bÆREÐé3G\u0093i^Y®dËmw|ÌÙBén1ËÀÉÔù\u0005\u009e±\u008c\u007f§XF³s9JÃÚFòe\u0092\u0080à3\u008d\u009a3\u0003\u009f\u001cÒ\u00862á\u001eP\u0082P 1CÃ4WP1Í@U¨\u0099\u0006\u008d¦RÒð¥\u0082"
EliminarAlguien sabe a que se debe esto??
escribe el codigo que estas utilizando
EliminarHola Carlos, gracias nuevamente, pero ya lo resolví, pero con parametros distintos a lo que expone Marcelo.
Eliminarprimero la url no es la que mencionas mas arriba, sino que es https://palena.sii.cl/cgi_dte/consultaDTE/wsDTEConsRecCont.sh
luego en Cookie, solo agrego el token y los parametros es exactamente como tu le expones.
Y esta información lo guardo en archivo csv, donde lo puedo leer.
Nota, me inquieta que si realizo la consulta directamente en la pagina de SII, no es la misma cantidad de DTE que me descarga este procedimiento, y estos dos, son muy distintos a los del nuevo proceso de registro de compra venta de SII.
si efectivamente la url es https://palena.sii.cl/cgi_dte/consultaDTE/wsDTEConsRecCont.sh
Eliminaryo también me he topado con el problema que hay días que no hay documentos que si están en el registro de compra.
Hola.
EliminarTiene algún ejemplo en php de como acceder a estos dtes. ?
Gracias.
Hola Giovanni como te puedo contactar, yo lo logre con PHP.
EliminarBuenas tardes estimados,
EliminarMe podrían indicar como traspasaron las Cookie? Como incluyeron los valores mencionados en ella? Y como se vería en la URL?
Hola, estoy dando bote con el tema en php, me pegan una ayuda por favor?
Eliminarestimados alguien me podria indicar como enviar los datos para obtener XML, se los agradecería muchisimo
ResponderEliminarSII no guarda los XML de las facturas emitidas por los proveedores, por lo cual no se pueden obtener.
Eliminarlogre realizar la descargar en CSV, lo malo es que mucha utilidad no le encuentro dado que el archivo que descarga no tiene todos (estilo registro de compras/ventas)solo incluye el Total, lo que para cargar en algún sistema no es muy practico.
ResponderEliminarBuenas tardes, me está retornando esto:
ResponderEliminarHTML
HEAD
TITLEError!/TITLE
/HEAD
BODY
H1Error!/H1
H2CONTENT_LENGTH is NULL/H2
/BODY
/HTML
Quizás es porque no estoy pasando bien los parámetros (DESDE,HASTA,RUT Y TIPO_CONSULTA)...alguien podria indicarme como los agrego al request...o donde se deban agregar.
Cualquier ayuda estaria agradecido.
en que lenguaje estas trabajando?
EliminarHola Eric, pudiste resolver este error? Me pasa lo mismo.
EliminarEstimados ya lo resolvi, para el que le pase esto, lo que hice simplemente fue cambiar Request.Method = "POST" a Request.Method = "GET" y funciona perfectamente, me trae todos los documentos segun la fecha consultada en formato CSV.
EliminarHola Marcelo,
ResponderEliminarTe cuento que logre la autentificacación automática. Pero ahora quisiera consultar los documentos recibidos, pero no entiendo como realizas eso, ya que dices que no se conecta a ningún WS pero entonces a que le envío los parámetros que mencionas?
Veo varios comentarios que use el link: https://palena.sii.cl/cgi_dte/consultaDTE/wsDTEConsRecCont.sh pero donde lo agrego? No logro hacerlo.
Espero puedan ayudarme.
Saludos.
Me pasa lo mismo, entiendo que al armar el sobre soap en
EliminarReq.Headers.Add("Cookie", "TOKEN=numero de token; RUT_NS=rut_empresa; DV_NS=dv del rut)
,pero los demás parámetros (DESDE=09-08-2017&HASTA=09-08-2017&RUT=1111111-1&TIPO_CONSULTA=) donde van? en la url de la consulta? alguien me explica porfavor?
Estimados, como envio los parametros para hacer la consulta de los documentos? Alguien podria ayudarme?
ResponderEliminarMarcelo, podria mostrar el XML que envia para consultar los datos?
ResponderEliminarHola Marcelo,
ResponderEliminarAl consultar los documentos me aparece este error en el cuerpo del documento:
Titulo: Error!
Body: Error!
Body: CONTENT_LENGTH is NULL
Pase el Token como lo indicaste mas arriba en la consulta. Estoy trabajando en VB.NET.
Agrego un poco de mi codigo para ver si me pueden ayudar:
Request.Headers.Add("cookie", "TOKEN=" + Token)
Request.ContentType = "text/xml; charset=""utf-8"""
Request.Method = "POST"
Muchas gracias de antemano.
Request.Headers.Add("SOAPAction", Url_Consulta)
EliminarRequest.Headers.Add("cookie", "TOKEN=" + Token)
Request.ContentType = "text/xml; charset=""utf-8"""
Request.Method = "POST"
Como mencione anteriormente, cambie el Request.Method = "POST" a Request.Method = "GET" y me trae los documentos en formato CSV.
EliminarAdemas agregue el Certidicado en el Request al HttpWebRequest:
Request.ClientCertificates.Add(ObtenerCertificado(CertificadoCn))
ObtenerCertificado() es la misma función que se usa para obtener el Token.
Una consulta: ¿Existe alguna forma de obtener una factura de compra con detalle en formato xml?
ResponderEliminarcreo que no, ya que es un proceso entre contribuyentes (proceso de intercambio vía email) y el SII dice que no debe guardar esos xml. Ojala en el futuro implemente esa funcionalidad
Eliminarconfirmado, empresa gosocket.net esta accediendo a los dte recibidos en el SII, solo con el rut de la persona natural y clave, descargan xml tanto de emitidos como recibidos, seria bueno saber como logran hacer eso?
ResponderEliminarlograste averiguar
EliminarAquí explican que necesitan el xml en una casilla de correo.
Eliminarhttp://blog.gosocket.net/que-es-gosocket-y-como-funciona/
Así como se pueden bajar las compras, alguien sabe si existe algún WS para descargar las ventas del SII?
Saludos
solo para los que son de mipyme no para mercado, y es super simple xd
EliminarEstimado que valor y cual es el procedimiento para comprar la DLL
ResponderEliminarbuenas,. trabajo en c# y logro descargar el archivo .csv desde codigo, pero debe iniciar la sesión en el navegador y rescatar el token, no puedo iniciar la sesión desde codigo con el certificado, me podrían ayudar
ResponderEliminargracias
Así como se pueden bajar las compras, alguien sabe si existe algún WS para descargar las ventas del SII?
ResponderEliminarEstimados. Buenas tardes. El servicio eliminó el webservice "wsDTEConsRecCont". ¿Saben de alguna alternativa a este ws?.
ResponderEliminarHola, tienes que usar las siguiente URL
Eliminarhttps://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport
con eso descargas las compras, tienes que enviar un JSON con los parametros
Gracias Estimado, me devolvió los registros esperados. Gracias por la orientación.
Eliminarde este lugar tambien se puede https://www4.sii.cl/consemitidosinternetui/services/data/facadeService/getDetalleExportarRecibidos
EliminarGracias cga. Pero desconozco los parámetros. He buscado de donde son estos enlaces para deducirlos pero me supera. Cualquier ayuda es bienvenida.
EliminarEstimado en https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport
EliminarEstoy enviando estos parametros por post con formato JSON
Array ( [data] => {"rutEmisor":"XXXXXXX","dvEmisor":"X","ptributario":"202001","estadoContab":"PENDIENTE","operacion":"COMPRA"} )
Pero el link me responde JBWEB000065: HTTP Status 400 - org.codehaus.jackson.JsonParseException: Unexpected character ('-' (code 45)) in numeric value: expected digit (0-9) to follow minus sign, for valid numeric value at
Tiene alguna nocion de que me esta faltando enviar ? Ya que obtuve los param desde el portal SII
el getDetalleCompraExport funciona con parámetros en json asi:
Eliminar{"metaData":{"conversationId":"" + token_resp + "","namespace":"cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport","transactionId":"" + "f1ed202d-20a6-4919-8243-5f7151e0d5d0" + ""},"data":{"rutEmisor":"99999999","dvEmisor":"9","ptributario":"202001","estadoContab":"REGISTRO","codTipoDoc":0,"operacion":"COMPRA"}}
token_resp es el token obtenido en el servicio.
también se debe poner en request.Headers.Add("Cookie",token_resp);
A mi me funcionó.
Como llegan a estas opciones del sii?.
debes ingresar a sii.cl y realizar la operación manual de descarga, debes utilizar la herramienta web del navegador para hacer un seguimiento a las solicitudes, ahi encontraras como se arma la cadena en los parametros de las solicitudes. por lo menos esa es la forma que utilizo yo.
EliminarEstimados. Gracias por toda la ayuda puesta aquí. Pero les consulto nuevamente, cuales son los parámetros para esta opción.(https://www4.sii.cl/consemitidosinternetui/services/data/facadeService/getDetalleExportarRecibidos)
EliminarGracias por la ayuda.
Estimado Carlos (cga). Gracias por la ayuda de verdad. Encontré la forma de visualizar los parámetros. Pero no encuentro esa opción especifica en el servicio.
EliminarRealmente se agradece la ayuda estimados.
Saludos.
La encontré!!. Estaba ahí mismo. Gracias por la ayuda estimados. Se agradece sinceramente. Gracias Carlos.
EliminarSaludos.
Estimados. Conocen alguna opción, donde aparezca el trackId?.
EliminarEl trackid debes enviarlo con valor 0
EliminarMuchas Gracias!!!, ha sido una guía. Pregunta (Que es el transactionId?)
ResponderEliminarGracias Estimado, me devolvió los registros esperados. Gracias por la orientación.
ResponderEliminarAyuda, al intentar efectuar enviar los parametros a la URL https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport, recibo error 401 (This request requires HTTP authentication.), alguien que me oriente. Gracias
ResponderEliminarEstimado. Debes enviar (en .net c#) los siguientes parametros en json:
ResponderEliminar{"metaData":{"conversationId":"" + token_resp + "","namespace":"cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport","transactionId":"" + "f1ed202d-20a6-4919-8243-5f7151e0d5d0" + ""},"data":{"rutEmisor":"99999999","dvEmisor":"9","ptributario":"202001","estadoContab":"REGISTRO","codTipoDoc":0,"operacion":"COMPRA"}}
Me parece que cuando te dice que http requiere autenticación, es porque debes enviarlo con el token que te entrega el servicio en json (variable token_resp) y en el headers debe ir asi:
request.Headers.Add("Cookie", token_resp)
donde request es:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pUrl);
y pUrl es:
pUrl = "https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport";
El transactionId con enviado con valor 0 basta
ResponderEliminarA que bien, transactionId =0, voy a probar.
ResponderEliminarEstimados Gracias por la ayuda brindada, pude re-establecer la consulta de dtes recibidos y estoy operando casi como antes (me gustaba más wsDTEConsRecCont).
EliminarPregunta: uds, sabían a priori que el sii bajaría estos servicios a partir de este año?.
Reitero las gracias sobre todo a cga y a los que entregaron indicios de donde buscar.
Saludos.
Cuando uno ingresaba en la página , ami me aparecía un mensaje que debía preferir la otra forma de ver los documentos, actualmente la opción anterior ya no aparece en el menú de SII, solo se puede ingresar mediante el link directo, también es importante aclarar que wsDTEConsRecCont no es un servicio oficial de SII , en el fondo lo que se realiza es una captura de los datos antes que se pinten en la página web, o emular la descarga de los archivos desde el portal de SII
EliminarBuen día,
ResponderEliminarSaben si hay documentación para el uso de esta API https://www4.sii.cl/consemitidosinternetui/services/data/facadeService/getDetalleExportarRecibidos, ya que no encontrado que parametros se requieren enviar, muchas gracias por su respuesta !
Debes trabajar con parámetros en json. Autenticado en el sii:
ResponderEliminar"{\"metaData\": {\"conversationId\":\"" + token_resp + "\",\"namespace\":\"cl.sii.sdi.lob.diii.consemitidos.data.api.interfaces.FacadeService/getDetalleExportarRecibidos\",\"page\":null,\"transactionId\":\"" + "7d12db27-f40d-42ee-88f4-71e357133136" + "\"}, \"data\": {\"tipoDoc\": \"" + tipodoc + "\", \"rut\": \"" + Rut_Empresa + "\", \"dv\": \"" + Div_Empresa + "\", \"periodo\": \"" + anomes + "\", \"operacion\": 2, \"derrCodigo\": \"" + tipodoc + "\"}}"
Hola, alguien lo pudo hacer en PHP ?
ResponderEliminarestimado he estado tratando y creo me faltan un par de detalles es posible comunicar de alguna forma con usted.
ResponderEliminarMi número es 997800285
ResponderEliminarHola he estado tratando de rescatar el listado de los documentos de compra siguiendo todo lo que estuvieron indicando.
ResponderEliminarAunque agregue el token en la cabecera del request recibo como resultado "Error en el servidor remoto: (401) No autorizado."
¿Alguien podría darme alguna observación?
Dejo el código que estoy usando
----------------------------
Dim pUrl As String = "https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport"
Dim httpWebRequest = CType(WebRequest.Create(pUrl), HttpWebRequest)
httpWebRequest.ContentType = "application/json; charset=utf-8"
httpWebRequest.Accept = "application/json"
httpWebRequest.Method = "POST"
httpWebRequest.Headers.Add("Cookie", TOKEN_GEN)
Using streamWriter = New StreamWriter(httpWebRequest.GetRequestStream())
Dim obj As String = " {"
obj += " ""metaData"" "
obj += " { "
obj += " ""conversationId"":""" & TOKEN_GEN & """, "
obj += " ""namespace"":""cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport"", "
obj += " ""transactionId"":""0"" "
obj += " } "
obj += " ,""data"" "
obj += " { "
obj += " ""rutEmisor"":""77781696"", "
obj += " ""dvEmisor"":""7"", "
obj += " ""ptributario"":""202001"", "
obj += " ""estadoContab"":""REGISTRO"", "
obj += " ""codTipoDoc"":0, "
obj += " ""operacion"":""COMPRA"" "
obj += " }"
obj += " }"
streamWriter.Write(obj)
streamWriter.Flush()
streamWriter.Close()
End Using
Dim httpResponse = CType(httpWebRequest.GetResponse(), HttpWebResponse)
debe ser
EliminarhttpWebRequest.Headers.Add("Cookie",
"TOKEN=" + token + "; RUT_NS=RUT; DV_NS=DIGITO VERIFICADOR")
Muchas gracias por la respuesta
EliminarSeguí su observación y agregué el header de la siguiente forma:
httpWebRequest.Headers.Add("Cookie", "TOKEN=UDD62CJ42X7Y8; RUT_NS=77451560; DV_NS=7")
Ya no recibo el error 401, sin embargo me indica el 500
"Error en el servidor remoto: (500) Error interno del servidor."
Me faltará algo?
te pongo el codigo correguido segun tus datos
EliminarDim pUrl As String = "https://www4.sii.cl/consdcvinternetui/services/data/facadeService/getDetalleCompraExport"
Dim httpWebRequest = CType(WebRequest.Create(pUrl), HttpWebRequest)
httpWebRequest.ContentType = "application/json;charset=utf-8"
httpWebRequest.Method = "POST"
httpWebRequest.Headers.Add("Cookie", "TOKEN=UDD62CJ42X7Y8;RUT_NS=77451560;DV_NS=7")
Using streamWriter = New StreamWriter(httpWebRequest.GetRequestStream())
Dim obj As String = " {"
obj += """metaData"":"
obj += "{"
obj += """conversationId"":""UDD62CJ42X7Y8"","
obj += """namespace"":""cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport"",""page"":null,"
obj += """transactionId"":""0"""
obj += "}"
obj += ",""data"":"
obj += "{"
obj += """rutEmisor"":""77781696"","
obj += """dvEmisor"":""7"", "
obj += """ptributario"":""202001"","
obj += """estadoContab"":""REGISTRO"","
obj += """codTipoDoc"":0,"
obj += """operacion"":""COMPRA"""
obj += "}"
obj += "}"
streamWriter.Write(obj)
streamWriter.Flush()
streamWriter.Close()
End Using
Dim httpResponse = CType(httpWebRequest.GetResponse(), HttpWebResponse)
con eso recibo:
Eliminar{"data":null,"nombreArchivo":null,"metaData":{"conversationId":"B4RA86X2JSN9H","transactionId":"0","namespace":"cl.sii.sdi.lob.diii.consdcv.data.api.interfaces.FacadeService/getDetalleCompraExport","info":null,"errors":null,"page":null},"respEstado":{"codRespuesta":99,"msgeRespuesta":"Usuario no esta autorizado","codError":null}}
Hola! quien logro hacer esto en PHP , necesito sacar los libros de compra/venta desde el sii ...
ResponderEliminarSaludos Elias
La verdad es que hoy es un poco mas facil recuperar la información utilizando otras herramientas , tales como node.js. Solo sí le es posible utilice estas herramientas. Publique un comentario acerca de esto.
EliminarCalamardo , tienes algun numero donde de contacto o correo ?
ResponderEliminarGracias por la información, actualmente existen formas más fáciles de conseguir la información
ResponderEliminarpodría ayudarme a descargar un XML de compra, ya que el proveedor no la envió a la casilla y no responde los correos que le hemos enviado solicitando la factura. Se lo agradecería enormemente. Gracias
Eliminarhola, ¿hay alguna forma de verificar un dte emitido a un tercero, obviamente sin la clave de usuario del tercero?
ResponderEliminarUn repo en github publico sería de gran ayuda. Alguien ya lo tiene?
ResponderEliminar