Firmador de comprobantes electrónicos SRI Ecuador

Actualización liberada para firmar con los certificados electrónicos de todas las entidades emisoras del Ecuador, son las siguientes:

En teoría debe funcionar con los certificados de todas la entidades, en producción aún no hemos tenido la oportunidad de firmar un comprobante electrónico con los certificados de las siguientes entidades:

  • Datilmedia S.A.
  • Eclipsoft

El enlace para el código fuente está a continuación, en el encontraran un método Main donde se muestra los parámetros según su certificado.

https://gitlab.com/allku/QuijoteLuiFirmador

Vuelvo a compartir el vídeo donde se muestra el proceso, actualmente está desactualizado, pero seguro que pueden entenderlo.

Si logran firmar con los certificados aún no probados, comentan por favor. Con el tiempo empezaremos a probar todos los certificados y los quitaremos de la lista.

17 thoughts on “Firmador de comprobantes electrónicos SRI Ecuador

  1. Gracias por estar siempre actualizando este proyecto. Estoy intentando con una firma de Security Data, pero no funciona, me sale el siguiente error:
    «`
    QuijoteLui Firmador
    Archivo Firma P12: /Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets/oscar.p12
    Exception in thread «main» java.lang.NullPointerException: Cannot invoke «String.toLowerCase(java.util.Locale)» because «alias» is null
    at java.base/sun.security.pkcs12.PKCS12KeyStore.engineGetCertificate(PKCS12KeyStore.java:508)
    at java.base/sun.security.util.KeyStoreDelegator.engineGetCertificate(KeyStoreDelegator.java:101)
    at java.base/java.security.KeyStore.getCertificate(KeyStore.java:1135)
    at com.quijotelui.firmador.GenericXMLSignature.execute(GenericXMLSignature.java:140)
    at com.quijotelui.firmador.XAdESBESSignature.sign(XAdESBESSignature.java:78)
    at com.quijotelui.firmador.Main.main(Main.java:43)
    «`

    Este es el codigo que le tengo en el Main.java
    «`
    public static void main(String[] args) {

    System.out.println(«QuijoteLui Firmador»);
    XAdESBESSignature xadesBesFirma = new XAdESBESSignature();

    File archivo = new File(«/Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets/»
    + «factura-1.xml»);
    String urlOutArchivo = «/Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets»;
    String PKCS12_RESOURCE = «/Users/guasaplay/Desktop/PROYECTOS/GAIA/QuijoteLuiFirmador/assets»;
    String PKCS12_PASSWORD;

    String nombreP12 = «oscar.p12»;
    PKCS12_RESOURCE = PKCS12_RESOURCE + File.separatorChar + nombreP12;
    System.out.println(«Archivo Firma P12: » + PKCS12_RESOURCE);

    PKCS12_PASSWORD = «*******»;

    /*
    * Para firmar con un certificado emitido por Security Data
    */
    xadesBesFirma.sign(archivo,
    urlOutArchivo,
    PKCS12_RESOURCE,
    PKCS12_PASSWORD,
    TokensAvailables.SD_EPASS3000);

    /*
    * Para firmar con un certificado emitido por el BCE
    */
    // xadesBesFirma.sign(archivo,
    // urlOutArchivo,
    // PKCS12_RESOURCE,
    // PKCS12_PASSWORD,
    // TokensAvailables.BCE_IKEY2032);

    /*
    * Para firmar con un certificado emitido por el Consejo de la Judicatura
    */
    // xadesBesFirma.sign(archivo,
    // urlOutArchivo,
    // PKCS12_RESOURCE,
    // PKCS12_PASSWORD,
    // TokensAvailables.KEY4_CONSEJO_JUDICATURA);
    «`

    Algun tipo de sugerencia para solucionar este error, estaría muy agradecido. 🙏🙏🙏

  2. Saludos coridales, gracias por compartir el proyecto lo utilizo con Security Data, Consejo de la Judicatura y funciona muy bien.
    Consulta, ¿quizá se puede actualizar el código a un JDK más actual?

  3. Estimados amigos, por favor su ayuda, en ambiente de PRUEBAS desde hace unos dias tengo un error en esta linea:
    response = port.validarComprobante(ArchivoUtils.archivoToByte(xmlFile));
    en el metodo public RespuestaSolicitud enviarComprobante(File xmlFile), del proyecto QuijoteLuiClient, adjunto capture:
    https://ibb.co/XX4Lqtt

  4. Hola que puede ser este error

    Exception in thread «main» java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at es.mityc.javasign.pkstore.keystore.KeyTool.(KeyTool.java:46)
    at es.mityc.javasign.pkstore.keystore.KSStore.(KSStore.java:42)
    at com.quijotelui.firmador.GenericXMLSignature.execute(GenericXMLSignature.java:128)
    at com.quijotelui.firmador.XAdESBESSignature.sign(XAdESBESSignature.java:78)
    at com.quijotelui.firmador.Main.main(Main.java:91)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    … 5 more

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *