Factura Electrónica en Java

1,605 views
Skip to first unread message

Leandro López

unread,
Apr 7, 2015, 5:43:23 PM4/7/15
to pyaf...@googlegroups.com
Hola Gente.

Estoy armando un proyecto para poder emitir Factura Electrónica en java y poder utilizar los diferentes servicios que provee el servidor de WSFE.

Después de investigar mucho logro poder conectarme al WSAA y conseguir el Token y el Sing. Ahora estoy tratando de invocar al servicio de FEParamGetTiposCbte, para recuperar los diferentes tipos de comprobantes. Estoy haciendo esto como un paso previo al poder utilizar el servicio FECAEASolicitar. El problema es que me esta devolviendo errores a mi entender es porque le estoy errando a la URL que me permite utilizar el servicio FEParamGetTiposCbte. O también puede ser que no estoy volviendo a encriptar el mensaje utilizando CMS con el certificado y la clave. Les adjunto el código que me esta generando el error, y seguidamente les pongo el error a ver si alguien me pude dar una mano.

Método:

public static String invokeFEParamGetTiposCbte(String aToken, String aSing, String aCuit) throws Exception {

    String LoginTicketResponse = null;

    try {

      Service service = new Service();
      Call call = (Call)service.createCall();

      //
      // Prepare the call for the Web service
      //
      call.setTargetEndpointAddress(new java.net.URL("https://wswhomo.afip.gov.ar/wsfev1/service.asmx"));
      call.setOperationName("FEParamGetTiposCbte");
      call.addParameter("request", XMLType.XSD_STRING, ParameterMode.IN);
      call.setReturnType(XMLType.XSD_STRING);

      //
      // Make the actual call and assign the answer to a String
      //
      LoginTicketResponse = (String)call.invoke(new Object[]{
        Base64.encode(getXmlFEParamGetTiposCbte(aToken, aSing, aCuit).getBytes())});

    } catch(org.apache.axis.AxisFault e) {
      e.printStackTrace(System.out);
    } catch(ServiceException | MalformedURLException | RemoteException e) {
      e.printStackTrace(System.out);
    }
    return (LoginTicketResponse);
  }

  private static String getXmlFEParamGetTiposCbte(String aToken, String aSing, String aCuit) {

    String FEParamGetTiposCbte_xml;

    FEParamGetTiposCbte_xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
      + "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\n"
      + "  <soap12:Body>\n"
      + "    <FEParamGetTiposCbte xmlns=\"http://ar.gov.afip.dif.FEV1/\">\n"
      + "      <Auth>\n"
      + "        <Token>" + aToken + "</Token>\n"
      + "        <Sign>" + aSing + "</Sign>\n"
      + "        <Cuit>" + aCuit + "</Cuit>\n"
      + "      </Auth>\n"
      + "    </FEParamGetTiposCbte>\n"
      + "  </soap12:Body>\n"
      + "</soap12:Envelope>";

    return (FEParamGetTiposCbte_xml);
  }

Error:

run:
AxisFault
 faultSubcode: 
 faultString: Server did not recognize the value of HTTP Header SOAPAction: .
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}stackTrace:Server did not recognize the value of HTTP Header SOAPAction: .
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1781)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2957)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at testfacelec.fe.AfipWsfeClient.invokeFEParamGetTiposCbte(AfipWsfeClient.java:39)
at testfacelec.fe.UITestClientWsaa.testClient(UITestClientWsaa.java:380)
at testfacelec.fe.UITestClientWsaa.actionPerformed(UITestClientWsaa.java:729)
at testfacelec.fe.UITestClientWsaa.access$000(UITestClientWsaa.java:21)
at testfacelec.fe.UITestClientWsaa$1.actionPerformed(UITestClientWsaa.java:573)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


Server did not recognize the value of HTTP Header SOAPAction: .
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1781)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2957)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at testfacelec.fe.AfipWsfeClient.invokeFEParamGetTiposCbte(AfipWsfeClient.java:39)
at testfacelec.fe.UITestClientWsaa.testClient(UITestClientWsaa.java:380)
at testfacelec.fe.UITestClientWsaa.actionPerformed(UITestClientWsaa.java:729)
at testfacelec.fe.UITestClientWsaa.access$000(UITestClientWsaa.java:21)
at testfacelec.fe.UITestClientWsaa$1.actionPerformed(UITestClientWsaa.java:573)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Leonardo Martinez Yegros

unread,
Aug 27, 2015, 5:26:29 PM8/27/15
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola! yo también estoy en ese paso, tengo una aplicación en php, y a mi también me tira ese error. Ni siquiera el FEDummy puedo invocar sin que me salga ese error. Con la versión wsfe funcionaba correctamente. 

Pudiste resolverlo vos?

Saludos.

Fabricio Pizzichillo

unread,
Aug 28, 2015, 7:45:41 AM8/28/15
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola Leandro. Por lo que veo de tu código, estás consumiendo directamente el servicio soap de afip y no estás usando nada de pyafipws. Tenes pensado también hacerlo con la parte de facturación? Estoy en la misma etapa que vos y realmente no se por donde arrancar!
Probaste con generarte el proxy mediante wsdl2code y consumir el servicio con eso?

Saludos

Nicolás Barbesini

unread,
Feb 10, 2016, 1:19:30 PM2/10/16
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Leandro tengo el mismo problema que vos, tambien en java. Pudiste solucionarlo con el wsds2java??

Saludos!

Ing. Vechetti Ariel

unread,
Feb 10, 2016, 7:48:51 PM2/10/16
to pyaf...@googlegroups.com
Hola Gente, cual es el objetivo de desarrollarlo en java, es directamente desarrollar una librería en java para utilizar los servicios de afip  o mezclar java con python. Si es la primera podríamos armar un foro y por la segunda tengo algo hecho, si le interesa se lo comparto.


El 05/02/2016 a las 02:31 p.m., Nicolás Barbesini escribió:
Leandro tengo el mismo problema que vos, tambien en java. Pudiste solucionarlo con el wsds2java??

Saludos!
--
Proyecto PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT:
http://www.pyafipws.com.ar/ - http://www.github.com/reingart/pyafipws - http://www.sistemasagiles.com.ar/
---
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+u...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pyaf...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/pyafipws.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Jorge Alberto Dreher

unread,
Apr 19, 2016, 6:28:59 PM4/19/16
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola Ariel, estoy luchando con lo mismo, podrias compartir lo que mencionas ?

Muchas gracias

Sebastian Esteban

unread,
May 22, 2017, 9:15:49 AM5/22/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
bueno yo soy otro de los mismo que tiene el mismo problema parece que el codigo que brinda el afip es cualquier cosa ya que lo he probado en c shar vb.net y me andan bien...pero en java...me sale el mismo problema que tienen todos...en este foro ojala si alguien lo tiene terminado pasar el salto de autentificacion del wsaa. si me puede pasar el codigo ...saludos...

Romina L. Castrogiovani

unread,
May 22, 2017, 2:05:01 PM5/22/17
to pyaf...@googlegroups.com
Hola Sebastian,

Te dejo un ejemplo para que veas si te sirve:


Saludos

Castrogiovani L. Romina
Sistemas Ágiles
011 4450-0716 / 153048-9211
L a V de 10 a 17hs
Skype: romina.castrogiovani

El 22 de mayo de 2017, 5:29, Sebastian Esteban <sebastian....@gmail.com> escribió:
bueno yo soy otro de los mismo que tiene el mismo problema parece que el codigo que brinda el afip es cualquier cosa ya que lo he probado en c shar vb.net y me andan bien...pero en java...me sale el mismo problema que tienen todos...en este foro ojala si alguien lo tiene terminado pasar el salto de autentificacion del wsaa. si me puede pasar el codigo ...saludos...

--
Proyecto PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT:
http://www.pyafipws.com.ar/ - http://www.github.com/reingart/pyafipws - http://www.sistemasagiles.com.ar/
---
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+unsubscribe@googlegroups.com.

Juan Pose

unread,
Feb 1, 2019, 4:43:49 PM2/1/19
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Estimados, baje el código JAVA ejemplo que tiene en la página AFIP para conectar con WSAA y obtener el token y no logro compilarlo siquiera (al parecer no tengo las librerías y sus versiones correctas). 

Alguno logro pasar esta etapa? Tienen identificadas las versiones de las librerías que se requieren? Algún ejemplo de código que tengan para obtener el Token en JAVA?

Muchas gracias!



El lunes, 22 de mayo de 2017, 15:05:01 (UTC-3), Romina L. Castrogiovani escribió:
Hola Sebastian,

Te dejo un ejemplo para que veas si te sirve:


Saludos

Castrogiovani L. Romina
Sistemas Ágiles
011 4450-0716 / 153048-9211
L a V de 10 a 17hs
Skype: romina.castrogiovani

El 22 de mayo de 2017, 5:29, Sebastian Esteban <sebastian....@gmail.com> escribió:
bueno yo soy otro de los mismo que tiene el mismo problema parece que el codigo que brinda el afip es cualquier cosa ya que lo he probado en c shar vb.net y me andan bien...pero en java...me sale el mismo problema que tienen todos...en este foro ojala si alguien lo tiene terminado pasar el salto de autentificacion del wsaa. si me puede pasar el codigo ...saludos...

--
Proyecto PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT:
http://www.pyafipws.com.ar/ - http://www.github.com/reingart/pyafipws - http://www.sistemasagiles.com.ar/
---
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+u...@googlegroups.com.

SupraWeb Soft

unread,
May 22, 2019, 2:15:47 PM5/22/19
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
hola leonardo estoy luchando con el código puro de java que ofrece la pagina de afip .
me gustaría saber como superaste el primer paso yo todavía estoy atascado en el wsass. creeria que hay que usar el openssl para exportar a una archivo base64 ya que el error es se encuentra en esta sintaxis de abajo
    LoginTicketResponse = (String) call.invoke(new Object[]{       Base64.encode(LoginTicketRequest_xml_cms)});

        } catch (Exception e) {
            logger.fatal(e.getMessage(), e);
        }
 Base64.encode(LoginTicketRequest_xml_cms)});

puede ser que hay que exportar el archivo p12 a base 64 ... lo mas extraño de todo es que en el código que tiene afip en vb.net ese mismo archivo p12 me funciona bien.....


El martes, 7 de abril de 2015, 18:43:23 (UTC-3), Leandro López escribió:
Reply all
Reply to author
Forward
0 new messages