Usar web services de ARCA en Java
Con pocas líneas de código
Consumir los web services de ARCA en Java puede ser un poco complicado, por eso vamos a utilizar la librería afip.java, que nos permite conectarnos a los web services de ARCA sin complicarnos con el uso de SOAP y la autenticación.
Requisitos previos
Para poder seguir esta guía, primero necesitarás:
Instalación
Lo primero es instalar la librería afip.java
Maven
<dependency>
<groupId>com.afipsdk</groupId>
<artifactId>afip-sdk-java</artifactId>
<version>1.0.0</version>
</dependency>
Gradle
implementation 'com.afipsdk:afip-sdk-java:1.0.0'
Creamos una instancia de la clase Afip
Para usar los web services de ARCA, se requiere un certificado digital, con Afip SDK puedes integrarte en modo desarrollo usando el CUIT 20409378472 sin necesidad de obtener un certificado, para poder integrarte lo más rápido posible.
Te dejo este enlace por si luego quieres usar tu propio certificado para desarrollo.
import com.afipsdk.Afip;
import com.afipsdk.model.AfipOptions;
AfipOptions options = new AfipOptions();
options.setCuit("20409378472"); // CUIT vinculado al certificado
options.setProduction(false);
options.setAccessToken("TU_ACCESS_TOKEN");
Afip afip = new Afip(options);
Creamos una instancia del web service
/**
* Nombre del web service.
*
* El nombre por el cual se llama al web service en ARCA.
* Esto lo podes encontrar en el manual correspondiente.
* Por ej. el de factura electronica se llama 'wsfe', el de
* comprobantes T se llama 'wsct'
**/
String servicio = "wsct";
/**
* Creamos el web service
**/
AfipWebService genericWebService = afip.webService(servicio);
Llamamos al web service
Este es un ejemplo de como utilizar el wsct para obtener el ultimo comprobante autorizado.
Aquí veras como obtener un Token Authorization para el web service que acabamos de crear y como ejecutar un request básico
import com.afipsdk.AfipWebService;
import com.afipsdk.model.GetServiceTAResponse;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Obtenemos el Token Authorization
**/
GetServiceTAResponse ta = genericWebService.getTokenAuthorization();
/**
* Preparamos los datos que nos pide el web service
*
* Este ejemplo es especifico para el wsct. En el manual
* del web service que quieras utilizar encontraras que
* datos requiere cada metodo
**/
Map<String, Object> authRequest = new LinkedHashMap<>();
authRequest.put("token", ta.getToken());
authRequest.put("sign", ta.getSign());
authRequest.put("cuitRepresentada", afip.getOptions().getCuit());
Map<String, Object> data = new LinkedHashMap<>();
data.put("authRequest", authRequest);
data.put("codigoTipoComprobante", 195); // Código del tipo de comprobante
data.put("numeroPuntoVenta", 1); // Número del punto de venta
/**
* Ejecutamos la request al web service
*
* consultarUltimoComprobanteAutorizado es un metodo
* de wsct, esto debes cambiarlo por el metodo que
* quieras utilizar
**/
Map<String, Object> result = genericWebService.executeRequest(
"consultarUltimoComprobanteAutorizado",
data
);
System.out.println(result.get("consultarUltimoComprobanteAutorizadoReturn"));
En result nos devolverá la respuesta del web service.
{
"consultarUltimoComprobanteAutorizadoReturn": ...
}
Con esto ya podemos conectarnos a cualquier web service de ARCA con Java.
Lo único que nos queda es pasar a modo producción.
Ante cualquier duda o pregunta al respecto, pueden resolverla rápidamente dentro de la Comunidad Afip SDK. Además, puedes unirte para estar al tanto de las novedades y problemas técnicos al usar los servicios de ARCA.