Buscar en este blog

viernes, 22 de febrero de 2013

Solicitar Semilla al SII


Obtener semilla del SII

Una vez creado nuestro proxy de comunicación al SII debemos empesar a utilizarlo para autenticarnos. Para tales efectos debemos contar con el certificado digital del usuario registrado en el SII el cual puede realizar los envios y consultas de los documentos DTE o IECV exigidos por la entidad publica. 

Sí Ud. No cuenta con la clases para realizar la comunicación y autenticación con el SII puede revisar estas urls para copiar el código y pegarlos en sus clases .Net.

Ver archivo con descripción de GetSeed

Ver archivo con descripción de GetTokenFromSeed

Para tales efectos el SII diseño un pequeño algoritmo para realizar el proceso de autentificación, el cual yo extraje desde su 'Manual de Desarrollador Autenticación Automática' que explica como realizar la operación. No quice darle muchas vueltas al asunto pues la figura es bastante expllicativa, por esta razón solo realice una copia del diagrama. En todo caso siempre es bueno que lean lo dispuesto por el SII asi que les dejo el link para que descarguen el manual.


Vision general del sistema


















Ahora visto esto y tomando en consideración que ya contamos con nuestro proxy que nos conecta al SII, les presento un pequeño metodo que nos permitira recuperar la semilla del SII. Esta piesa de caracteres se denomina semilla, la cual no es otra cosa que una cadena de caracteres la cual debemos firmar  y luego enviarla al SII para que ellos determinen que quien firmo la semilla es un usuario registrado en el SII.


Metodo para extraer la semilla.
Este metodo administra el modo de operación de la consulta de la semilla, es decir si lo hace en ambiente deproducción ( Palena ) o en el de certificación ( Maullin ). En todo caso se expone aqui el metodo completo para efectos nuestros solo estamos interesados en solo en un par de lineas.


  
#region CrSeedService 

   ////
   //// Crear instancia  
   CrSeedService maullin = new CrSeedService();
   string respuesta = maullin.getSeed();


#endregion


El resultado de esta operación regresa el siguiente documento xml en formato string desde el SII. En el mejor de los casos. pero puede darse el caso que el estado del documento xml cambie por diversas razones. Así que cuando el desarrollador implemente este metodo, debera agregar las rutinas necesarias para capturar las excepciones que el webservices retorne en su nodo estado.


  

 
  00
 
 
  000000000078
 
 


Una vez que se obtiene la semilla el desarrollador debéra extraer el valor de la misma y agregarla al documento xml necesario para ser firmado y posteriormente enviado al SII.

74 comentarios:

  1. Marcelo agregue las clases al proyecto, pero no se como agregar el código para obtener la semilla, esto quería hacerlo con un formulario y una caja de texto donde me muestre la semilla extraída, el ejemplo que tienes publicado no se donde colocarlo, me podrías ayudar con eso.

    #region CrSeedService

    ////
    //// Crear instancia
    CrSeedService maullin = new CrSeedService();
    string respuesta = maullin.getSeed();


    #endregion

    Atento a sus comentarios
    Saludos

    ResponderEliminar
  2. El error que me aparece es el siguiente :

    No se puede ir automaticamente al servidor. Error de conexion con el servidor 'maullin.sii.cl'. Parece que el Monitor de depuración remota de Microsoft Visual Studio (MSVSMON.EXE) no se esta ejecutando en el equipo remoto. Esto puede deberse a que un firewall impide la comunicación con el equipo remoto. Consulte la ayuda para obtener asistencia al configurar la depuración remota.


    Que podrá ser este error, desactive firewall y antivirus

    Atento a sus comentarios

    ResponderEliminar
  3. En el depurador de errores me muestra lo siguiente

    001082453248 00

    Esa es la semilla obtenida ?
    pero como saco el error anterior y a que se debe ?

    ResponderEliminar
  4. Al fin puede obtener la semilla, algo pasaba con la libreria en c# al traspasarla a Vb me arrojaba ese error, al parecer voy a tener que hacer todo en c#, esto me cuesta un poco porque llevo muchos años programando en vb. Ahora tratare de conseguirme un certificado digital valido para firmar la semilla y luego obtener el Token.

    Gracias marcelo por tu apoyo.

    Saludos

    ResponderEliminar
  5. Hola Marcelo, sabes hace dias que no puedo obtener la semilla del servidor de certificacion maullin, me arroja lo siguiente:

    Tried to invoke method public java.lang.String CrSeed.getSeed() throws java.lang.Exception with arguments . The arguments do not match the signature.; nested exception is:
    java.lang.IllegalArgumentException: java.lang.ClassCastException@14226c4

    lo extraño es que derrepente si funciona y me entrega la semilla, ¿que será?

    ResponderEliminar
    Respuestas
    1. Estimado,

      Desde algunos dias que es dificil obtener la semilla. Te recomiendo que crees una funcion iteradora que pregunte varias veces pos la semilla ( 100 veces ) y cuando la obtenga salga del iterador. Eso ayudara un poco.

      Eliminar
    2. Estimados...en mi caso.. lo que hice fue actualizar los WSDL los cuales tenía referenciados. Así, el diccionario quedó actualizado y desde entonces no he tenido problemas para obtener la semilla. Espero les sirva.....

      Eliminar
  6. a mi me funciona pero tambien me aparece

    No se puede ir automaticamente al servidor. Error de conexion con el servidor 'maullin.sii.cl'.

    ¿como puedo eliminar este error?

    lo invoco de esta manera :

    string respuesta = maullin.getSeed();

    ResponderEliminar
    Respuestas
    1. Hace algun tiempo el SII esta utilizando maullin2.sii.cl favor cambiar la url de su conector al SII y probar. quizas esto solucione el problema

      Eliminar
  7. Hola buenas , tengo una consulta .. resulta que ya hace varias semanas tenemos una incidencia con unos de los aplicativos de factura electrónica , cuando que queremos realizar el envio al SII del consumo de folios (este aplicativo solo trabaja con boletas electronicas) arroja un error con respecto al retorno de la semilla , esto ocurrio de un dia para otro... este el log arroja

    [root@opendte-servipag bin]# ./ejecutaEnviarConsumoFolioSII.sh
    Providers null
    Setting providers com.sun.net.ssl.internal.www.protocol
    Added SSL_PROVIDER com.sun.net.ssl.internal.ssl.Provider
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA12275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.b(DashoA12275)

    Time-out
    [ERROR] -IniciandoERROR, durante la ejecución ocurrió un problema: -Error, el SII retorno semilla nula con local message: -Error, el SII retorno semilla nula

    Saludos,

    ResponderEliminar
    Respuestas
    1. Estimado Carlos,

      Tus rutinas estan construídas en c#. Cuando puedas llamame a la casa para entender el problema 224042279

      Eliminar
  8. Hola Marcelo!
    Al obtener el string de la semilla y tratar de guardarla en XML esto no se realiza. Alguna idea del porque? He aquí un trozo de mi código en c#.
    string response= clienteSemilla.getSeed();

    XmlDocument s1 = new XmlDocument();
    s1.LoadXml(response);

    ResponderEliminar
  9. Hola Marcelo, en esta ultima semana del 19-04-2016 una actualziacion de windows (KB3147458) esta dando problemas al solicitar semilla en una aplicacion de escritorio desarrollada en c# error "org.xml.sax.saxparseexception content is not allowed in prolog", sabes algo al respecto?
    saludos

    ResponderEliminar
  10. Hola, A mi también me da el error org.xml.sax.saxparseexception content is not allowed in prolog, pero con Vb.Net corriendo en Win 10
    se se si pasa lo mismo en Win 7.

    ResponderEliminar
    Respuestas
    1. A mi me sucede sólo con Windows 10. Con Windows 7 o Windows Server 2008 no arroja error. Comenzó a pasar a mediados de abril. ¿Alguna sugerencia? Yo por ahora levanté una máquina virtual con Windows 7.

      Eliminar
    2. Amigos, a nosotros nos paso lo mismo despues de aplicar unas actualizaciones en el servidor.
      Lo que hicimos fue desinstalar todas las actualizaciones que se aplicaron en la ultima actualizacion.
      No puedo decir que actualización en particular genera este error porque en los foros se habla de la KB3147458, KB3147461 pero ninguna de esas teníamos instalada

      Eliminar
  11. Ahora el error ocurre en windows 7 :(

    ResponderEliminar
  12. Tengo el mismo problema en windows 7... desinstalé varias actualizaciones del 11/05 pero sigue igual, ¿¿alguien tiene alguna novedad??

    ResponderEliminar
  13. También tengo el problema, Comenzó esa semana.
    Alguna solución??

    ResponderEliminar
  14. Quitar las siguientes actualizaciones Windows:
    kb:3142033
    kb:3142024
    kb:3150220
    kb:3142037
    kb:3142023
    kb:3142026

    ResponderEliminar
  15. Estimados,
    En windows 7 a mi por lo menos me dio resultado quitando la KB3142037...

    ResponderEliminar
  16. Estimados.
    Hoy quitamos la actualización KB3156421, en Windows 10 y comenzó a funcionar otra vez.

    ResponderEliminar
  17. Windows 7, quitar kb:3142033, kb:3142024, kb:3150220

    ResponderEliminar
  18. Elimine la actualización KB3156421 en Windows10 y funciono.. el problema que tengo que es un proyecto de Windows Azure, y no tengo como eliminar desinstalar esa actualización ahí. Existe alguna modificación de codigo o algo, para solucionar este problema?

    Saludos!

    ResponderEliminar
  19. Marcelo como estas? Mismo problema aqui. Alguna solucion ´para windows 2008?

    ResponderEliminar
  20. En windows 7 también me resultó quitando sólo KB3142037

    ResponderEliminar
  21. Estimados: ¿alguna solución aplicando código diferente y no desinstalando actualizaciones? en Windows server 2012 no funciona quitando las actualizaciones mencionadas.

    Gracias!

    ResponderEliminar
  22. Estimados, la solución a este problema específico pasa por compilar el proyecto, sin modificar ninguna linea de código, con .Net Framework 4.6 Al hacer esto (yo lo hice en VS 2012 express), ni siquiera es necesario quitar las actualizaciones de Windows KB.
    La solución modificando las entredas de registro de Windows es buena, pero en beneficio del poco tiempo y productividad que requerimos los desarrolladores, creo que la solución que se indica es la óptima (y aquellos que usan VS2010 aprovechan de probar VS2012 que está bastante mejorada).

    Aprovecho de felicitar a Marcelo por su gran contribución al mundo de los desarrolladores.

    Saludos.

    David Yáñez C.

    ResponderEliminar
  23. Estimado,

    nose si esta bien preguntar aqui, pero yo ya pase por el tema de la semilla y token, ahora necesito enviar el Reporte de Consumo de Boletas y no tengo idea el WebService que hace esto o como se envia. Perdon por la pregunta pero no se donde mas preguntar

    Saludos

    Jaime Jofre.

    ResponderEliminar
    Respuestas
    1. Estimado, el consumo de folios de boletas se envia al mismo web services que e envian los dtes.

      Atte.
      Marcelo Rojas Rojas

      Eliminar
  24. Hola, les comento que me volvió a aparecer el error en Windows 7 y se solucionó desinstalando la actualización KB4014504, para que lo tengan en cuenta.

    Saludos!
    Oriana.

    ResponderEliminar
  25. El webservice para obtener la semilla sigue dando problemas desde hace un par de días atrás, he tratado de generar una rutina iteradora, pero aun así sigue dando el error: "org.xml.sax.SAXParseException: Content is not allowed in prolog.". Tengo el sistema alojado en la nube como plataforma (PaaS), por lo que no tengo cómo desinstalar actualizaciones.

    ResponderEliminar
    Respuestas
    1. Estimado

      Si Ud. Esta utilizando framewrok 4.0 para compilar sus apps, le recomiendo que compile la app con framework 4.5 en adelante esto debería solucionar su problema

      Atte.
      Marcelo Rojas Rojas

      Eliminar
    2. Probé con 4.5 y 4.6 y 4.7 y en todas me da el mismo error. Alguien ha logrado resolver esto sin desinstalar actualizaciones? Tengo mi codigo corriendo en una web app de Azure y por lo tanto no tengo la posibilidad de desinstalar actualizaciones.

      Eliminar
  26. Buenas tardes,

    Quiero hacer un aporte a la página web de Marcelo.
    Este famoso problema del "org.xml.sax.SAXParseException: Content is not allowed in prolog." lo he resuleto de dos formas distintas:

    1.- Realizo una actualización de Visual Studio (en mi caso 2012) con el siguiente paquete de Microsoft: Microsoft .NET Framework 4.6 Targering Pack, esto lo pueden descargar desde la página web de Microsoft. (se recomienda hacer una búsqueda por google)

    Luego que lo instalan deben modificar en Visual Studio la siguiente opción:

    Hacer Click derecho sobre tu proyecto (ojo NO en la solución) ahí seleccionar la opción Propiedades, luego hacer click en el Menu Aplicación (el primero de la lista) y finalmente seleccionar la opción .NET Framework 4.5.1 en Versión de .NET Framework de destino(esta opción es la que aparece al instalar el Upgrade)


    2.- La segunda opcion es modificar en tu equipo las siguientes llaves del registro:


    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
    "SchSendAuxRecord"=dword:00000000

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
    "SchSendAuxRecord"=dword:00000000

    Una completa información a esta solución la da Microsoft en la siguiente ruta:

    https://support.microsoft.com/es-es/help/3155464/ms16-065-description-of-the-tls-ssl-protocol-information-disclosure-vu

    Espero que esta información les sea util.

    Un abrazo y saludos

    Franco Gomara G.

    ResponderEliminar
    Respuestas
    1. Estimado

      Agradecemos mucho su información y que la comparta con todos nuestros lectores. Siempre es bueno contar con personas como UD. que les gusta ayudar al resto.

      Muchas Gracias

      Atte.
      Marcelo Rojas Rojas

      Eliminar
    2. Hola solo darte las gracias por la ayuda, me ayudo mucho, solo comentarte, que solo realicé los pasos que indicas, pero no tuve necesidad de cambiar a framework 4.5.1, mantuve el 4.5.

      Gracias nuevamente.

      Eliminar
  27. Hola solo darte las gracias por la ayuda, me ayudo mucho, solo comentarte, que solo realicé los pasos que indicas, pero no tuve necesidad de cambiar a framework 4.5.1, mantuve el 4.5.

    Gracias nuevamente.

    ResponderEliminar
  28. Hola, yo estoy con Windows 10 Enterprise y framework 4.6
    el problema se produce en debug del código (cuando estoy desarrollando).
    si genero la solución y ejecuto exe no me da el error.
    ¿Alguien se le ocurre qué puede ser?

    ResponderEliminar
  29. Hola, yo estoy con Windows 10 Enterprise, framework 4.6 y VS 2015.

    El problema se me produce en debug del código (cuando estoy desarrollando).

    Si genero la solución y ejecuto exe no me da el error "org.xml.sax.SAXParseException: Content is not allowed in prolog."

    ¿Alguien se le ocurre qué puede ser?

    ResponderEliminar
  30. Buenas tardes, estoy tratando de obtener la semilla para ello cree un proyecto en visual studio y e hice una referencia de servicio https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL

    Todo bien, luego en un botón incorporo el siguiente código:

    Dim semilla As New ServiceReference1.CrSeedClient

    numero = semilla.getSeed

    Pero la variable numero después de consumir semilla.getseed queda nothing, que podrá ser o algo me falta?

    Saludos y Gracias a todos.

    ResponderEliminar
  31. Hola, yo de nuevo como complemento puedo decir que nosotros tenemos cuenta como contribuyente y además contamos con el certificado digital ante el SII, la duda es se necesita alguna cuenta especial como desarrollador y asi poder tener acceso a consumir los Webservices del SII, ya que hacemos como comente anteriormente logro hacer la referencia, pero al consumir me arroja nothing.

    Ojala puedan ayudarme . Saludos y Gracias.

    ResponderEliminar
    Respuestas
    1. Estimado
      Para poder consumir estos web services es necesario que estes inscrito en el SII en al ambiente de ertificación para que puedas realizar las pruebas.

      Eliminar
  32. Muchas gracias Marcelo por tu rapida respuesta. Saludos.

    ResponderEliminar
  33. Marcelo otra consulta con respecto a lo mismo, si nosotros tenemos un representate que cuenta con clave y certificado digital, donde en el portal del SII debe o como hacer ese registro en sus bases de datos para hacer pruebas en ambiente de certificacion, no logramos saber donde hacer ese registro. Si nos pudieras guiar seria de gran ayuda. Saludos y gracias

    ResponderEliminar
  34. Muchas gracias por la dedicación Marcelo, le envié un correo por si me puede aclarar una duda porfavor, de ante mano muchas gracias

    ResponderEliminar
  35. Tengo el típico problema del org.xml.sax.saxparseexception content is not allowed in prolog" , he actualizado hasta el ultimo framework haciendo pruebas , busque las actualizacines , no las tenia , he probado tres formas de consumir el Web Service y me da el mismo problema . Que mas puede ser ?.

    ResponderEliminar
  36. Nueva actualización con problemas en Windows 7:

    KB4040980

    Saludos,
    Oriana

    ResponderEliminar
  37. Hola Marcelo, estoy tratando de recuperar la semilla desde .net, he intentado desde VB y C#, he seguido todos los consejos posteados mas arriba, pero sigo teniendo el problema "org.xml.sax.saxparseexception content is not allowed in prolog", sobre windows 7. Alguien logro solucionar este problema.

    ResponderEliminar
  38. Hola estimado, revise la url de maullin2 y no sale que no existe. Instale el el framwork 4.6.2 TargeringPack y me sigue arrojando el mismo error.
    Tengo Windows 10 Profesional 64 bit
    Visual Studio 2012

    ResponderEliminar
    Respuestas
    1. cuando pueda llameme al 997800285 y charlamos del error

      Eliminar
    2. Hola estimado, también tengo el mismo problema a pesar de no tener instalada ninguna de las actualizaciones que mencionan como causantes, sin embargo cuando ejecuto directamente el ejecutable de la app no me devuelve error y me devuelve la semilla.
      Tengo Windows 7 32x, uso VS2015 y los proyectos están con la versión 4.6.2 de framework.
      Desde ya muchas gracias por tu respuesta

      Eliminar
    3. Estimado,
      puedes probar utilizando el siguiente archivo.

      HefestoFixed.reg

      el contenido es:

      Windows Registry Editor Version 5.00

      [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
      "SchSendAuxRecord"=dword:00000000

      Windows Registry Editor Version 5.00

      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
      "SchSendAuxRecord"=dword:00000000


      Ejecutalo como administrador de la maquina. esto debería solucionar el problema.

      Eliminar
    4. Muchas gracias por la ayuda, el problema se resolvió con esto.

      Eliminar
    5. a mi igual me funciono incluso con visual basic 2017y el archivito reg que pusieron mas arriba , graciassss

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

      Eliminar
    7. Tenía el mismo problema, se resolvió con el archivo reg mencionado acá... muchas gracias!!!

      Eliminar
  39. Estimado:

    Antes de llamar al método de la semilla es necesario ocupar algún método para autentificar el usuario que pedirá la semilla.

    Ya que me al ocupar el método me sale erro de autentifcacion de proxy.

    Saludos

    ResponderEliminar
    Respuestas
    1. Tengo entendido que tienes que tener el certificado digital instalado en tu ordenador

      Eliminar
  40. Buenas tardes.

    Una consulta para todos, se puede REUTILIZAR UNA SEMILLA y UN TOKEN? O siempre se tiene que generar uno nuevo para ingresar a los servicios del SII?

    Mi pregunta se basa porque, por ejemplo, para la facturación Argentina, el TOKEN tiene una duración de 12 horas, y con ese mismo TOKEN puedo realizar funcionalidades como registros, consultas sin necesidad de generar uno nuevo.

    Por algun foro leí que el token tiene una duración de 6 horas. Es verdad eso?

    Saludos.

    ResponderEliminar
  41. Hola, alguien ha podido hacer esta conexión con java?

    ResponderEliminar
  42. hola Marcelo:
    segun SII, en la actualidad hay que enviar las boletas al servicio, pero indican que son diferentes al de facturación (palena y maullin), pero no indicar como se obtienen los WSDL de los web services.

    tu sabes cuales son sus respectivas URL's para obtener la semilla y token?

    gracias.
    atte.
    Pablo Navia

    ResponderEliminar
    Respuestas
    1. Hola Pablo, en este link se encuentra la documentación y las instrucciones de integración
      https://www4c.sii.cl/bolcoreinternetui/api/

      Eliminar
    2. hola frank:
      si, vi esa documentación, pero, no hay algo como : https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL.

      para crear el webServices Cliente?

      Eliminar
    3. Los servicios de la boleta electrónica son de tipo REST, las de factura electrónica son de tipo SOAP es por ello que permiten generar el WSDL.

      Eliminar
    4. si, ya entendí la diferencia y hice una prueba con REST.

      gracias...

      Eliminar
    5. Efectivamente, las consultas y envíos de boletas son realizadas a servicios rest del SII.

      Eliminar
    6. Marcelo:
      estoy realizando el servicio REST POST /boletas.etrectonica.envio y me esta retornando un XML de la siguiente estructura "env:ClientAcceso Denegado (from client)"

      indicando Acceso Denegado.

      me puedes orientar cual puede ser la razón del este error?

      gracias...

      Eliminar
  43. Marcelo:
    Por medio de RESTFUL y el openapi.json del SII genere los recursos para publicar boletas electronicas, pero el recurso /boleta.electronica.token retorna una respuesta XML distinta en su orden a lo que el SII entrega.
    según documento https://www4c.sii.cl/bolcoreinternetui/api/
    el recurso token tendría que recibir XML
    SII:RESPUESTA xmlns:SII="http:www.sii.clXMLSchema"
    SII:RESP_HDR
    ESTADO--00--ESTADO
    GLOSA--Token Creado--GLOSA
    SII:RESP_HDR
    SII:RESP_BODY
    TOKEN--XAuSbYXiNh9Ik--TOKEN
    SII:RESP_BODY
    SII:RESPUESTA

    y la respuesta de SII envia el XML en distinto orden.
    SII:RESPUESTA xmlns:SII="http:www.sii.clXMLSchema"
    SII:RESP_BODY
    TOKEN--XAuSbYXiNh9Ik--TOKEN
    SII:RESP_BODY
    SII:RESP_HDR
    ESTADO--00--ESTADO
    GLOSA--Token Creado--GLOSA
    SII:RESP_HDR
    SII:RESPUESTA

    PREGUNTA: sabes si existe una actualización del SII al openapi.json, que corrija esto y otros.?

    gracias...

    y la pregunta

    ResponderEliminar
  44. Han tenido problemas al obtener semilla en ambiente de certificación?

    ResponderEliminar
    Respuestas
    1. Al obtener la semilla dice
      Anulada la solicitud no se puede crear un canal seguro SSL/TLS

      Eliminar
  45. Encotre una solucion cambiando el proyecto a NET Framework a la version 4.6.1 y agragando una linea de código antes de getSeed()

    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

    ResponderEliminar