Buscar en este blog

jueves, 4 de mayo de 2017

Web Service de Consulta y Registro de Aceptación/Reclamo a DTE recibido

Estimados colegas, ponemos a su disposición una nueva herramienta para realizar las consultas al SII utilizando el nuevo webservice de consulta y registro de aceptación / reclamo de documentos DTE recibidos. Este es el nuevo método para verificar la emisión de un documento DTE y realizar acciones sobre el como: Agregar recibo de mercaderías, aceptación comercial, rechazo comercial. Etc.

Disponible para ambientes SII:

- Certificación
- Producción

Esta clase en visual studio .net ( c# ) tiene los siguientes metodos:

- Hef_consultarDocDteCedible
- Hef_consultarFechaRecepcionSii
- Hef_listarEventosHistDoc
- Hef_ingresarAceptacionReclamoDoc


Ejemplos:

Hef_consultarDocDteCedible















El resultado de esta operación :


Hef_consultarFechaRecepcionSii







El resultado de la operación regresa:









Hef_listarEventosHistDoc
















El resultado de esta operación es:

















Hef_ingresarAceptacionReclamoDoc



















El resultado de esta operación es:





104 comentarios:

  1. Buen día , gran aporte, lo único que no entiendo es como agregas el TOKEN para la validación con SII

    ResponderEliminar
    Respuestas
    1. Estimado, consulta, como solucionaste el problema del Token, tengo este mismo problema.

      Eliminar
  2. Hola, acabo de ponerme a trabajar sobre este tema con PHP, utilizo nusoap, agregue el Token por cookie, pero aun no logro conectar, hace falta algo mas para el WS?

    ResponderEliminar
    Respuestas
    1. Encontré la solución, solo era el TOKEN, tanto al instanciar como en cookies

      Eliminar
    2. Hola Daniel, tenes algún ejemplo en PHP ?

      Eliminar
    3. En mi caso, me marca error interno. Al menos, deberia responder que falta el token, pero no logro hacerlo con nusoap y php.

      Eliminar
    4. Daniel,
      Podrías dar algún ejemplo, estoy trabajando con php y SOAPClient.

      Cualquier ayuda, se agradece.

      Eliminar
    5. Daniel, podrias indicar como lograste pasar el Token correctamente???

      Eliminar
    6. Hola, ya solucionaron esto? yo lo logre en PHP

      Eliminar
  3. Hola Marcelo, consulta, este envio tiene un schema como formato?? y otra consulta, al igual que comentario anterior, el Token, en que parte se envia??.
    Saludos

    ResponderEliminar
    Respuestas
    1. Estimado

      Si estas utilizando un sobre soap para generar el documento xml de consulta al ws. Debes agregar un nodo denominado Header, en este nodo debes agregar el token recuperado en el proceso anterior. De esta forma podrás entrar al ws autenticado.

      Atte.
      Marcelo Rojas Rojas

      Eliminar
    2. Muchas gracias por la información. Pero sabes si existe un formato de este sobre, lo he estado buscando y no lo he encontrado en paginas de SII.
      Otra consulta, existe otra forma de consultar, en tus ejemplos no veo que envias el TOKEN.

      Eliminar
    3. Estimado

      Si utilizas el sobre soap puedes agregar el token de esta forma:

      ////
      //// Cree la conección al webservice.
      HttpWebRequest req =
      (HttpWebRequest)WebRequest.Create(urlSII);
      req.Headers.Add("SOAPAction", SOAPAction);
      req.Headers.Add("cookie", Token);
      req.ContentType = "text/xml; charset=\"utf-8\"";
      req.Method = "POST";

      Eliminar
    4. Gracias nuevamente, pero lo estoy de la misma forma de consulta de estado de DTE, cree la clase de conecion al WS con la herramienta wsdl, me autentifico y obtengo el Token, pero al enviar la información al proceso de ConsultaFechaRecepcionSII, me arroja el error "Error de la solicitud con el codigo de estado HTTP 401:Unauthorized"

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

      Eliminar
  4. Estimados

    Si estas utilizando un sobre soap para generar el documento xml de consulta al ws. Debes agregar un nodo denominado Header, en este nodo debes agregar el token recuperado en el proceso anterior. De esta forma podrás entrar al ws autenticado.

    Atte.
    Marcelo Rojas Rojas

    ResponderEliminar
    Respuestas
    1. Muchas gracias por la información. Pero sabes si existe un formato de este sobre, lo he estado buscando y no lo he encontrado en paginas de SII.
      Otra consulta, existe otra forma de consultar, en tus ejemplos no veo que envias el TOKEN.

      Eliminar
    2. Marcelo, consulta y si no se utiliza un sobre SOAP, hay otra forma de realizar la consulta?? Lo menciono, porque estoy realizando la misma rutina para la consulta del EnvioDTE.

      Eliminar
    3. Hola Marcelo, he estado realizando la consulta, creo el SOBRE SOAP, pero la respuesta que me muestra es "Error en el servidor remoto(500) Error interno del servidor"

      Eliminar
  5. Estimado,
    Te agradecería me ayudaras a consumir esta WS...
    No sé como agregar el "Token"...
    Estoy trabajando en VB.Net 2003.
    Gracias...

    ResponderEliminar
    Respuestas
    1. Estimado puedes utilizar esta forma para agregar el token

      ////
      //// Cree la conección al webservice.
      HttpWebRequest req =
      (HttpWebRequest)WebRequest.Create(urlSII);
      req.Headers.Add("SOAPAction", SOAPAction);
      req.Headers.Add("cookie", Token);
      req.ContentType = "text/xml; charset=\"utf-8\"";
      req.Method = "POST";

      Donde token es el valor calculado en la autenticacion automatica contra el SII

      Atte.
      Marcelo Rojas Rojas

      Eliminar
    2. Estimado, y si no usas sobre SOAP, hay otra forma de enviar la consulta??
      El formato del sobre SOAP es el mismo que se utiliza para el envio de los DTEs, si es así, este envio tiene algun formato??

      Eliminar
    3. Hola a todos, consulta cual es la url, donde se deben enviar las consulta o aceotacion de reclamos?? es la que aparece en los instructivos "https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice"

      Eliminar
    4. Efectivamente esa son las url a utilizar

      Certificación
      https://ws2.sii.cl/WSREGISTRORECLAMODTECERT/registroreclamodteservice

      Producción:
      https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice

      Eliminar
    5. Estimado, a mi aun me da un error 500, obtengo bien el token pero no logro hacerlo funcionar. veo Marcelo que usas la libreria de HttpWebRequest y no el "Service Refences". Ocupando lo mismo armo el header con los datos necesario (Soapaction, cookie, contentype, accept_encoding, etc), pero la respuesta siempre es negativa. como haces el response? yo ocupo esto
      System.Net.HttpWebResponse response = req.GetResponse() as System.Net.HttpWebResponse

      pero aqui me da el error 500. Nos puedes indicar mas datos plis como por ejemplo que tienes en la variable SoapAction?. de antemano muchas gracias.

      Eliminar
    6. Estimado, la misma consulta del colega anterior, esta es la forma en crear el sobre SOAP y me arroja el mismo error

      string Method = "POST";
      string Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/ms-excel, application/msword, */*";
      string Referer = "www.miempresa.cl";
      string Token = "TOKEN={0}";

      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice);
      request.Headers.Add("SOAPAction", "consultarFechaRecepcionSii");
      request.Method = Method;
      request.Accept = Accept;
      request.Referer = Referer;

      request.ContentType = "multipart/form-data: boundary=7d23e2a11301c4";
      request.ContentLength = secuencia.Length;

      request.Headers.Add("Accept-Language", "es-cl");
      request.Headers.Add("Accept-Encoding", "gzip, deflate");
      request.Headers.Add("Cache-Control", "no-cache");
      request.Headers.Add("Cookie", string.Format(Token, Token));

      request.UserAgent = "Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)";
      request.KeepAlive = true;

      Si nos pudieras ayudar

      Eliminar
    7. Estimado tienes que agregarle "TOKEN=" antes del token para enviarlo como cookie.

      request.Headers.Add("Cookie", string.Format(Token, "TOKEN="+Token));

      Tambien debes agregar el atributo xmlns:ws="http://ws.registroreclamodte.diii.sdi.sii.cl" a "soapenv:Envelope"
      Saludos.

      Eliminar
    8. Hola, gracias por al ayuda a todos, ya lo solucione el problema de error 500, tenia mal construido el xml de la consulta a realizar, me faltaba los prefijos "ws"

      Saludos y nuevamente gracias Marcelo por la ayuda.

      Eliminar
    9. Estimado como solucionaste el problema del error 500?, puedes mostrar el codigo? saludos

      Eliminar
    10. Estimado, esto realizo para el envio

      string xmlConsulta = string.Empty;
      using (StreamReader sr = new StreamReader(TU_ARCHIVO_XML, Encoding.GetEncoding("UTF-8")))
      {
      xmlConsulta = sr.ReadToEnd();
      }


      string URL_CONSULTAPRODUCCION = "https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice";

      //PARAMETROS PARA CREAR REQUEST
      string pMethod = "POST";
      string pAccept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/ms-excel, application/msword, */*";
      string pReferer = "www.miempresa.cl";
      string pToken = string.Format("TOKEN={0}", Token);

      //CREO EL REQUEST
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL_CONSULTAPRODUCCION);
      request.Headers.Add("SOAPAction", SoapAccion);
      request.Method = pMethod;
      request.Accept = pAccept;
      request.Referer = pReferer;
      request.ContentType = "multipart/form-data: boundary=7d23e2a11301c4";
      request.ContentLength = xmlConsulta.Length;
      request.Headers.Add("Accept-Language", "es-cl");
      request.Headers.Add("Accept-Encoding", "gzip, deflate");
      request.Headers.Add("Cache-Control", "no-cache");
      request.Headers.Add("Cookie", pToken);
      request.UserAgent = "Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)";
      request.KeepAlive = true;

      El xml a enviar es el descrito por Cesar el 4 de agosto.

      Eliminar
    11. estimado, como es el XML descrito anteriormente no puedo encontrarlo, te lo agradecería.
      Saludos

      Eliminar
    12. Por si alguno está consumiendo el web service como referencia en el .NET, así es como conseguí insertar el token:
      Namespace cl.sii.ws1
      Partial Public Class RegistroReclamoDteServiceEndpointService
      Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
      Friend token As String = String.Empty
      Protected Overrides Function GetWebRequest(uri As Uri) As Net.WebRequest
      Dim request As Net.WebRequest = MyBase.GetWebRequest(uri)
      request.Headers.Add("Cookie", "TOKEN=" & token)
      Return request
      End Function
      End Class
      End Namespace

      Una vez instanciada la clase, le asignas el valor al token y te olvidas:
      Dim wsqry As New cl.sii.ws1.RegistroReclamoDteServiceEndpointService()
      wsqry.token = tokenActual

      Saludos

      Eliminar
  6. Hola, buenos días, mi nombre es Diego Briones, me gustaría saber el precio de esta clase

    ResponderEliminar
    Respuestas
    1. Favor escribir a hefestocontacto@gmail.com para darle la información

      Gracias

      Eliminar
    2. si le envie un correo en horas de la mañana

      Eliminar
    3. estimado Marcelo le he enviado un correo para saber la información

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

    ResponderEliminar
    Respuestas
    1. Estimado
      Puede enviarme la consulta y el resultado de ella, para analizar

      Gracias

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

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

      Eliminar
  8. Gracias por los comentarios Marcelo. Eres un rel aporte.
    Saludos,

    ResponderEliminar
  9. Me guié por el siguiente documento del SII
    http://www.sii.cl/factura_electronica/Webservice_Registro_Reclamo_DTE_V1.1.pdf

    hice esto




    76011123
    9
    33
    735




    y obtuve lo sgte del sii como respuesta





    env:Client
    Internal Error




    Parece que me falta enviar el token como un tag ¿Eso cómo se hace? Lo que hice está en php

    ResponderEliminar
  10. chuta, no se ven los tags xml,, :(

    ResponderEliminar
  11. envié el archivo de la misma manera en que se envian los xml de libros de compras y ventas, solamente cambiando la url destino, y obviamente el xml,

    yo envio esto

    'soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    'soapenv:Header/>
    'soapenv:Body>
    'ws:consultarFechaRecepcionSii>
    'rutEmisor>76011123'/rutEmisor>
    'dvEmisor>9'/dvEmisor>
    'tipoDoc>33'/tipoDoc>
    'folio>735'/folio>
    '/ws:consultarFechaRecepcionSii>
    '/soapenv:Body>
    '/soapenv:Envelope>

    el sii me responde esto, (el signo menor lo cambié por una comilla para que se pueda ver el código)

    '?xml version='1.0' ?>
    'env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
    'env:Body>
    'env:Fault>
    'faultcode>env:Client'/faultcode>
    'faultstring>Internal Error'/faultstring>
    '/env:Fault>
    '/env:Body>
    '/env:Envelope>

    ResponderEliminar
    Respuestas
    1. Según veo no está definido el namespace asociado al método. Debería ser:
      ws:consultaFechaRecepcionSii xmlns:ws="http://ws.registroreclamodte.diii.sdi.sii.cl

      En todo caso ami todavía no me sale el llamado.

      Eliminar
  12. Estimados

    Lo que ocurre es que no estan proporcionando el header que representa el token de la operación:

    No olvidar colocar el tokrn en este lugar

    ////
    //// Cree la conección al webservice.
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlSII);
    req.Headers.Add("SOAPAction", SOAPAction);
    req.Headers.Add("cookie", Token);
    req.ContentType = "text/xml; charset=\"utf-8\"";
    req.Method = "POST";

    ResponderEliminar
  13. Si apruebo o rechazo un DTE mediante este webservice, ¿es necesario enviar el correo con el XML de acuse de recibido a mi proveedor, ademas del XML de aprobación o rechazo de factura?

    ResponderEliminar
    Respuestas
    1. Buena pregunta esta, ya que aún no está claro que se be hacer al respecto con el antiguo sistema de intercambio y respuestas!

      Eliminar
    2. Ese sistema quedó en el pasado, igual que los libros electrónicos, ahora es válido lo que se le envia al SII, ellos van a cruzar la información.

      Eliminar
    3. Llame a la mesa de ayuda del SII y me explicaron que la normativa RCV no elimina el proceso de intercambio entre contribuyentes, esto a pesar que no lo tomaran en cuenta al momento de crear la propuesta de IVA, así que me recomendaron seguir realizando el envío de los XML cuando se recibe y aprueba o rechaza un documento de compra

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

    ResponderEliminar
  15. Un aporte: El formato del sobre es el descrito por Cesar el 4 agosto, guardar ese formato en un xml y enviar al sii

    $cfile = new CURLFile( 'sobre_soap.xml', 'text/xml', 'sobre_soap.xml');


    $headers = array(
    "POST /cgi_dte/UPL/DTEUpload HTTP/1.0",
    "Accept: */*",
    "User-Agent: Mozilla/5.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)",
    "Cookie: TOKEN=".$token_for_login,
    "Content-Type: multipart/form-data"
    );

    ResponderEliminar
  16. Soy César, estoy usando practicamente lo mismo que comenta Anónimo el 6 de Agosto a las 17:36, me estoy basando en un código que sirve para enviar libros electrónicos y Dtes, y que funciona perfecto, esto es lo que tengo para el header

    $cabecera = array(
    "POST /cgi_dte/UPL/DTEUpload HTTP/1.0",
    "Accept: */*",
    "User-Agent: Mozilla/5.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)",
    "Cookie: TOKEN=".$this->_token,
    "Content-Type: multipart/form-data"
    );

    Es prácticamente lo mismo, según yo el error es que dice /cgi_dte/UPL/DTEUpload , y esa página no es la que se debe usar ahora. Hice la prueba de anotar /WSREGISTRORECLAMO
    DTE/ pero no me resultó. He buscado en el SII cómo se define el header pero no he encontrado nada.

    ResponderEliminar
    Respuestas
    1. Estimado, solo debes agregar el xml de la consulta al envio, si te estas guiando por como se envia los libros o DTEs, NO le debe agregar la secuencia que se crea antes, solo el XML de tu consulta.

      Eliminar
  17. Estimados este es mi envío, pero me da faultcode

    Alguien sabe que puede estar fallando?
    Saludos,

    2017-08-07 15:24:05 DEBUG DefaultClientConnection:268 - Sending request: POST /WSREGISTRORECLAMODTECERT/registroreclamodteservice?wsdl HTTP/1.1
    2017-08-07 15:24:05 DEBUG wire:72 - >> "POST /WSREGISTRORECLAMODTECERT/registroreclamodteservice?wsdl HTTP/1.1[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "SOAPAction: listarEventosHistDoc[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "Accept: text/xml[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "User-Agent: Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "Transfer-Encoding: chunked[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "Content-Type: text/plain; charset=UTF-8[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "Host: ws2.sii.cl[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "Connection: Keep-Alive[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "Cookie: TOKEN=PPC6QTK3MOZSU[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "[\r][\n]"
    2017-08-07 15:24:05 DEBUG headers:272 - >> POST /WSREGISTRORECLAMODTECERT/registroreclamodteservice?wsdl HTTP/1.1
    2017-08-07 15:24:05 DEBUG headers:275 - >> SOAPAction: listarEventosHistDoc
    2017-08-07 15:24:05 DEBUG headers:275 - >> Accept: text/xml
    2017-08-07 15:24:05 DEBUG headers:275 - >> User-Agent: Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)
    2017-08-07 15:24:05 DEBUG headers:275 - >> Transfer-Encoding: chunked
    2017-08-07 15:24:05 DEBUG headers:275 - >> Content-Type: text/plain; charset=UTF-8
    2017-08-07 15:24:05 DEBUG headers:275 - >> Host: ws2.sii.cl
    2017-08-07 15:24:05 DEBUG headers:275 - >> Connection: Keep-Alive
    2017-08-07 15:24:05 DEBUG headers:275 - >> Cookie: TOKEN=PPC6QTK3MOZSU
    2017-08-07 15:24:05 DEBUG wire:72 - >> "1a3[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:86 - >> " 76444170 2 33 10 "
    2017-08-07 15:24:05 DEBUG wire:72 - >> "[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "0[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - >> "[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "HTTP/1.1 500 Error[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "X-Backside-Transport: FAIL FAIL[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "Content-Type: text/xml[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "Connection: close[\r][\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\r][\n]"
    2017-08-07 15:24:05 DEBUG DefaultClientConnection:253 - Receiving response: HTTP/1.1 500 Error
    2017-08-07 15:24:05 DEBUG headers:256 - << HTTP/1.1 500 Error
    2017-08-07 15:24:05 DEBUG headers:259 - << X-Backside-Transport: FAIL FAIL
    2017-08-07 15:24:05 DEBUG headers:259 - << Content-Type: text/xml
    2017-08-07 15:24:05 DEBUG headers:259 - << Connection: close
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "env:Client[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "Internal Error[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"
    2017-08-07 15:24:05 DEBUG wire:72 - << "[\n]"

    ResponderEliminar
  18. Hola Marcelo,tengo el siguiente Envelope, Post y Respuesta.
    Qué podría estar fallando?

    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
    <m:listarEventosHistDoc xmlns:m="http://ws.registroreclamodte.diii.sdi.sii.cl">
    <rutEmisor>7644410</rutEmisor>
    <dvEmisor>2</dvEmisor>
    <tipoDoc>33</tipoDoc>
    <folio>10</folio>
    </m:listarEventosHistDoc>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    POSTEO

    - >> "POST /WSREGISTRORECLAMODTECERT/registroreclamodteservice?wsdl HTTP/1.1[\r][\n]"
    - >> "SOAPAction: http://ws.registroreclamodte.diii.sdi.sii.cl/listarEventosHistDoc[\r][\n]"
    - >> "Accept-Encoding: gzip, deflate[\r][\n]"
    - >> "Cache-Control: no-cache[\r][\n]"
    - >> "Cookie: TOKEN=FZMPH4OAF133J[\r][\n]"
    - >> "User-Agent: Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)[\r][\n]"
    - >> "Content-Length: 363[\r][\n]"
    - >> "Content-Type: application/soap+xml; charset="utf-8"[\r][\n]"
    - >> "Host: ws2.sii.cl[\r][\n]"
    - >> "Connection: Keep-Alive[\r][\n]"

    Respuesta

    <?xml version='1.0' ?>
    <env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
    <env:Body>
    <env:Fault>
    <env:Code>
    <env:Value>
    env:Receiver</env:Value>
    </env:Code>
    <env:Reason>
    <env:Text xml:lang="en-US">
    Internal Error (from server)
    </env:Text>
    </env:Reason>
    </env:Fault>
    </env:Body>
    </env:Envelope>

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. mira esto construyo el Envelope :

      'soapenv:Envelope
      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      'xmlns:ws="http://ws.registroreclamodte.diii.sdi.sii.cl">
      'soapenv:Header />
      'soapenv:Body>
      'ws:consultarFechaRecepcionSii>
      'rutEmisor>xxxxxxxx
      'dvEmisor>x
      'tipoDoc>33
      'folio>1
      'ws:consultarFechaRecepcionSii>
      'soapenv:Body>
      'soapenv:Envelope>"

      y en url es sin "?wsdl"

      Le puse el ' para que se vieran los TAG, espero que te sirva

      Eliminar
    3. Gracias, voy a ver si me resulta.
      Ahora tu sabes si esto es SOAP 1_1 o 1_2?
      Me parece que es 1_2

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

      Eliminar
  19. cuál es la página (no la dirección ws) de certificación para el reclamo de DTE's ?

    ResponderEliminar
  20. Aun no logro dar con la programacion, pero les comento lo siguiente(soy contador auditor)

    Si emiten una factura el dia 1 de septiembre con fecha 31 de Agosto, el cliente ahora no va a poder aprovechar el iva en agosto, sino que en septiembre. No hay que dejar la emisión para última hora.

    Si no se hace nada con una factura, a los 8 dias despues se entiende por recibida, si la factura es de fines de Agosto y no se hace nada, el acuse queda para septiembre, y el iva no se puede usar en agosto, entonces con las facturas recibidas entre el 22 y fin de mes se va a tener que estar atentos, sobre todo con los ivas de alto monto

    No todos los proveedores envian el xml a la casilla designada en el SII, sique aunque les resulte esta programación igual alguien va a tener que ir a la pagina del SII y a manito dar los acuses

    ahora si una factura no se indica que es activo fijo, no van a poder usar depreciacion, y olvidense del crédito por activo fijo para la renta

    Yo sé que no tiene nada que ver con la idea principal, pero sus clientes les van a preguntar

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

    ResponderEliminar
    Respuestas
    1. Marcelo, lo informa post del 5 de agosto

      Estimados

      Lo que ocurre es que no estan proporcionando el header que representa el token de la operación:

      No olvidar colocar el tokrn en este lugar

      ////
      //// Cree la conección al webservice.
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlSII);
      req.Headers.Add("SOAPAction", SOAPAction);
      req.Headers.Add("cookie", "AQUI EL TOKEN");
      req.ContentType = "text/xml; charset=\"utf-8\"";
      req.Method = "POST";

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

      Eliminar
  22. Ejemplo en PHP

    $options = ['stream_context' => stream_context_create(['ssl' => ['verify_peer' => false,'verify_peer_name' => false,'allow_self_signed' => true]])];
    $sc = new SoapClient("https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice?wsdl", $options);

    $sc->__setCookie("TOKEN", $token);

    $params = array(
    "rutEmisor" => $rutEmisor,
    "dvEmisor" => $dvEmisor,
    "tipoDoc" => $tipoDoc,
    "folio" => $folio
    );*

    $response = $sc->__soapCall("consultarFechaRecepcionSii", $params);
    echo $response;

    ResponderEliminar
    Respuestas
    1. Estimado, al probar tu código la variable $response no da ninguna respuesta, sabes a que se puede deber?

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

    ResponderEliminar
  24. Gracias por todos los aportes que brindas. Una consulta, sabrás si hay forma de consultar los DTE emitidos?

    Gracias

    ResponderEliminar
    Respuestas
    1. Estamos trabajando en eso estimado...

      Eliminar
    2. Hola Marcelo, una consulta, tu sabes si la nueva normativa de Registro de Compra y Venta, que reemplaza a los libros IECV, se encuentra automatizada? Si es así, sabes de algún instructivo??

      Saludos.

      Eliminar
  25. Sin ome equivoco, a partir de Agosto -2017, en el Registro de Ventas están todos los DTE's emitidos.

    ResponderEliminar
    Respuestas
    1. Gracias por la respuesta, y sabrás si se podrán obtener los XML de los DTE?

      Eliminar
    2. El SII no guarda copia de los XML!

      Eliminar
  26. Aún no logro obtener una respuesta :(
    Mi código es el siguiente: alguna ayuda????
    Tengo alguna url incorrecta???

    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Web.Services.WebServiceBindingAttribute(Name= "RegistroReclamoDteServicePortBinding", Namespace= "https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice?wsdl")]

    public partial class RegistroReclamoDteService : System.Web.Services.Protocols.SoapHttpClientProtocol
    {
    public RegistroReclamoDteService(string token)
    {
    //// Cree la conección al webservice.
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice");
    req.Headers.Add("SOAPAction", "consultarFechaRecepcionSii");
    req.Headers.Add("cookie", string.Format(token, "TOKEN=" + token));
    req.ContentType = "text/xml; charset=\"utf-8\"";
    req.Method = "POST";
    req.UseDefaultCredentials = true;

    this.Url = "https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice";
    this.UseDefaultCredentials = true;
    }

    //Variables AceptacionReclamo (EMISOR)
    string rutEmisor = "";
    string dvEmisor = "";
    string tipoDoc = "";
    string folio = "";
    string accionDoc = "";

    [System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace = "http://ws.registroreclamodte.diii.sdi.sii.cl", ResponseNamespace = "http://ws.registroreclamodte.diii.sdi.sii.cl")]
    [return: System.Xml.Serialization.SoapElementAttribute("consultarFechaRecepcionSiiResponse")]
    public string consultarFechaRecepcionSii(string rutEmisor, string dvEmisor, string tipoDoc, string folio)
    {
    object[] results = this.Invoke("consultarFechaRecepcionSii", new object[] {
    rutEmisor,
    dvEmisor,
    tipoDoc,
    folio});
    return ((string)(results[0]));
    }
    }
    }

    ResponderEliminar
  27. Estimados saben donde obtener el XSD ResultadoConsumoFolios_v10.xsd ya que en la web del SII no lo encuentro

    ResponderEliminar
  28. Hola a todos !! Han conseguido enviar la respuesta??? yo ya pase el error 500, pero ahora me aparece el mensaje "Anulada la solicitud: La solicitud fue cancelada." Alguien que le haya sucedido lo mismo?

    AMA

    ResponderEliminar
  29. a los que les da el error 500, revisen si le pusieron el puto slash final en: xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

    ResponderEliminar
  30. Colegas ... a ver si alguien tiene buen ojo y me ayuda con lo que falte o sobre de mi request ... Al enviar me sale "Anulada la solicitud: La solicitud fue cancelada."

    request.Method = "POST"
    request.Headers.Add("Accept-Encoding", "gzip,deflate")
    request.ContentType = "text/xml;charset=UTF-8"
    request.Headers.Add("SOAPAction", "ingresarAceptacionReclamoDoc")
    request.Headers.Add("Accept-Language", "es-cl")
    request.Headers.Add("Cache-Control", "no-cache")
    request.Headers.Add("Cookie", "TOKEN=" & token)
    request.KeepAlive = True
    request.UserAgent = "Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)"
    request.UseDefaultCredentials = True
    request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/ms-excel, application/msword, */*"
    sequest.ContentLength = mensaje.Length

    y la forma en que envío es así:

    Dim dataStream As StreamWriter = New StreamWriter(request.GetRequestStream(), Encoding.GetEncoding("UTF-8"))
    dataStream.Write(mensaje)
    dataStream.Close()

    Ya saqué hora al psiquiatrico, esto me está volviendo loco !!!

    Gracias
    AMA

    ResponderEliminar
    Respuestas
    1. prueba con :
      request.ContentType = "multipart/form-data: boundary=7d23e2a11301c4";

      y no muestras el formato del archivo a enviar, quizás ahí tengas el problema

      Eliminar
    2. Ha probado con una librería para cliente Soap?

      Eliminar
    3. Richard, muchas gracias.... probé lo que me dices y me muestra el mismo mensaje "Anulada la solicitud. La solicitud fue cancelada.".

      Este es el mensaje que envío.





      11111111
      1
      1
      1
      ACD




      Lo he probado con y sin "" y ninguna de las 2 formas me resulta :(

      Saludos
      AMA

      Eliminar
    4. Chuta, le saqué la < inicial para que se pueda ver.

      Reemplacé los <> por [].

      [soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.registroreclamodte.diii.sdi.sii.cl"]
      [soapenv:Header/]
      [soapenv:Body]
      [ws:ingresarAceptacionReclamoDoc]
      [rutEmisor]11111111[/rutEmisor]
      [dvEmisor]1[/dvEmisor]
      [tipoDoc]1[/tipoDoc]
      [folio]1[/folio]
      [accionDoc]ACD[/accionDoc]
      [/ws:ingresarAceptacionReclamoDoc]
      [/soapenv:Body]
      [/soapenv:Envelope]

      Saludos
      AMA

      Eliminar
    5. Zongo ... desconozco la librería .... revisaré documentación..

      Gracias
      AMA

      Eliminar
    6. No veo problemas en tu xml de envio. Lo que si, el lo Encoding.GetEncoding("ISO-8859-1"). Otra consulta el mensaje que contiene, solamente el xml a enviar o le agregas algo mas.

      Eliminar
    7. El XML lo voy armando en un string comun y corriente .. No le agrego nada mas .

      lo he probado con retorno y din retorno de carro, lo mismo con linefeeds, etc.

      secuencia = "" & vbLf

      ...

      secuencia += "" & vbLf
      secuencia += "" & vbLf
      secuencia += ""

      respecto del encoding lo he probado tanto con ISO como con UTF.

      Eliminar
  31. Yo logré resolverlo en JAVA. Pero deben saber que hay una diferencia entre “Aceptar Contenido del Documento” y “Recibo de Mercaderías o Servicios”, lo segundo es lo que finalmente da uso del IVA.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. Hola Pablo, yo estoy tratando de resolver el tema en Java, pero no he podido. ¿ Es posible que me me prestes servicios de asesoria ?. mi correo es fpadilla@desasoft.com por si estubieses interesado.

      Eliminar
  32. Estimado primeramente muchas gracias a su ayuda. Ahora espero pueda ayudarme con lo siguiente, si quiero solo consultar los documentos de compra recibidos en el SII, que metodo aplico? a que WS me conecto?

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

    ResponderEliminar
  34. (reemplacé los <> por [].)

    Consulta: después de haber resuelto un par de errores de sintaxis que me hacían caer en "Error interno" (me sobraba un / en http://ws.registroreclamodte.diii.sdi.sii.cl/ y hacía referencia a registroreclamodteservice?wsd), ahora si logro enviar mi ACD, pero obtengo SIEMPRE como respuesta:

    [codResp]9[/codResp]
    [descResp]No existen registros de acuerdo a los parametros ingresados[/descResp]

    ¿Alguien sabe a qué puede deberse?

    Estoy enviando:

    [SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ws="http://ws.registroreclamodte.diii.sdi.sii.cl"]
    [SOAP-ENV:Header/]
    [SOAP-ENV:Body]
    [ws:ingresarAceptacionReclamoDoc]
    [rutEmisor] 99999999 [/rutEmisor]
    [dvEmisor] 9 [/dvEmisor]
    [tipoDoc] 33 [/tipoDoc]
    [folio] 1000000 [/folio]
    [accionDoc] ACD [/accionDoc]
    [/ws:ingresarAceptacionReclamoDoc]
    [/SOAP-ENV:Body]
    [/SOAP-ENV:Envelope]

    (los Nºs los cambié, pero he probado con facturas que están aceptadas por el SII y obtengo siempre 9)

    Gracias

    ResponderEliminar
    Respuestas
    1. Buenas tardes

      estoy haciendo la misma consulta contra el ambiente de certificación y también recibo el código 9

      mi duda es si es posible cargar un documento al ambiente de certificación para realizar las pruebas

      Eliminar
    2. Si es posible.
      Facturá desde otra empresa a tu empresa en certificación.
      El documento va a aparecer en el registro de compra de certificación.
      Saludos,

      Eliminar
  35. Hola Marcelo, Gracias por los aportes del blog. Me tuve que involucrar un poco con todo este tema del Acuse de Recibo y bueno leyendo el blog y navegando un poco logré obtener la semilla y posteriormente el Token. Ahora bien, como explicabas en anteriores entradas mis clases de conexion las creé con la herramienta WSDL.EXE y bueno como solo es usar funciones no habia tenido problemas hasta ahora. Creo la clase del webservice : "https://ws2.sii.cl/WSREGISTRORECLAMODTECERT/registroreclamodteservice?wsdl" y accedo a sus métodos por ejemplo:

    Dim rut_emisor, dv_emisor, tipo_documento, folio As String
    rut_emisor = "78137000"
    dv_emisor = "2"
    tipo_documento = "33"
    folio = "1676930"

    'METODO utilizando clase creada con wsdl.exe
    TextBox1.Text = FuncionesDTE.consultarDocDteCedible(rut_emisor, dv_emisor, tipo_documento, folio).ToString

    El problema se me da a que obviamente el servidor me arroja el error HTTP 401: Unauthorized. Me imagino porque no le he metido el TOKEN en ninguna parte y esa es mi duda ¿En que parte de la clase generada por wsdl.exe debería colocar el token generado? Espero me pueda orientar un poco
    Uso visualbasic.net 2017 netframework 4.6
    PD: Ya leí e intenté crear un sobre soap sin exito, por eso quiero probar este otro método.

    ResponderEliminar
    Respuestas
    1. Hola, el token lo debes informar como una cookie HTTP, el header seria algo como Cookie: TOKEN=ASD123DFGA

      Eliminar
    2. Muchas gracias por la respuesta Cba Morales.
      claro, entiendo que se debe agregar el token de esa manera. Intentando crear el sobre soap lo realizo asi:

      Req = WebRequest.Create("https://ws2.sii.cl/WSREGISTRORECLAMODTECERT/registroreclamodteservice?wsdl")
      Req.Headers.Add("SOAPAction:")
      Req.Headers.Add("Cookie", "TOKEN=ROEZI6RQU2K1R")
      Req.ContentType = "text/xml; charset=\""utf-8\"""
      Req.Method = "POST"
      Req.Accept = "text/xml"
      Req.Proxy = WebRequest.DefaultWebProxy

      pero mi duda es como envío este dicho sobre una vez que ya lo tengo listo, sobre todo si tengo una clase generada por WSDL.EXE que no se donde meter la cookie, o donde asignar mi Req (variable tipo HttpWebRequest)

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

    ResponderEliminar
  37. Hola! Quería contar mi experiencia y ver si es de ayuda. Trabajé mi pequeño proyecto para usar estas funciones sin saber mucho y con la ayuda de internet y de gente como uds logré conectar vb.net con el wsdl desde la autentificación hasta estas consultas.
    Trataba de hacer las consultas mediante las clases que genera la herramienta wsdl.exe, pero solo me sirvió para obtener semilla y token, ya que no super como agregar el token como cookie a esas clases y luego usé el método que indican acá dejo mi sobre SOAP para el que le sirva:

    Function CreateSOAPWebRequest_Consultas(SOAPAction As String, TOKEN_GEN As String) As HttpWebRequest
    '//// Crear la conección al webservice.

    Dim Req As HttpWebRequest
    Req = WebRequest.Create("https://ws1.sii.cl/WSREGISTRORECLAMODTE/registroreclamodteservice") 'PRODUCCION
    Req.Headers.Add("SOAPAction", SOAPAction) ‘ej: “consultarDocDteCedible”
    Req.Headers.Add("Cookie", "TOKEN=" & TOKEN_GEN)
    Req.ContentType = "text/xml;charset='utf-8'".Replace(Chr(39), Chr(34))
    Req.Method = "POST"
    Req.Accept = "text/xml"
    Req.Proxy = WebRequest.DefaultWebProxy

    Return Req

    End Function

    ResponderEliminar
  38. Hola!
    Me funcionó esto, desde .net
    Namespace RegistroAceptaReclamaDte

    '''

    Partial Public Class RegistroReclamoDteServiceEndpointService
    Inherits System.Web.Services.Protocols.SoapHttpClientProtocol

    Friend token As String = String.Empty

    Private consultarDocDteCedibleOperationCompleted As System.Threading.SendOrPostCallback

    Private consultarFechaRecepcionSiiOperationCompleted As System.Threading.SendOrPostCallback

    Private getVersionOperationCompleted As System.Threading.SendOrPostCallback

    Private ingresarAceptacionReclamoDocOperationCompleted As System.Threading.SendOrPostCallback

    Private listarEventosHistDocOperationCompleted As System.Threading.SendOrPostCallback

    Private useDefaultCredentialsSetExplicitly As Boolean


    Protected Overrides Function GetWebRequest(uri As Uri) As Net.WebRequest
    Dim request As Net.WebRequest = MyBase.GetWebRequest(uri)
    request.Headers.Add("Cookie", "TOKEN=" & token)
    Return request
    End Function

    ResponderEliminar
  39. Buenos dias,
    estoy llamando a webservice de reclamo , con el metodo consultafechaSii , pero siempre me entrega 401-Unauthorized.
    Estoy probando con SOAPUi54.0,

    coloco el TOKEN, cookie "TOKEN=" ; en el detalle de header, pero sigo teniendo la misma respuesta.

    El certificado que uso del cliente tiene que tener alguna opción o configuración especial en la pagina del SII?

    ResponderEliminar
    Respuestas
    1. Este temas es bien recurrente estimado, muchos colegas me indican que no recuperan la fecha de recepción del documento. Recuerda que el documento que consultas debe ser un documento suceptible de cesión. Si no es así nunca te regresará una respuesta. es decir los documentos 61,56 no te responderá nada. Por lo menos en mi caso es así. Otra cosa que ocurre es que efectivamente el SII no responde a un documento correcto. Sí este es tu caso te recomiendo que extraigas la información desde el registro de compras y ventas y bajes los listados de tus documentos, allí podrás encontrar la fecha de emisión del documento.

      Atte.
      Marcelo Rojas Rojas

      Eliminar
  40. Hola buenas, tengo una duda tengo completas las consultas a los webservices, pero el de certificación cada vez que pruebo alguna consulta me devuelve el siguiente valor ' � ' pero el servidor de producción me entrega información correcta y registra sin problemas. es solo el servidor de certificación que me entrega esos caracteres. de ante manos gracias

    ResponderEliminar