Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization.
Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente.
Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno.
Si preferís , al final te mostramos cómo.
package com.example;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
try {
// Paso 1: Obtener el Token Authorization
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(15))
.build();
// Crear JSON para el request usando GSON
Map<String, String> authRequestMap = new HashMap<>();
authRequestMap.put("environment", "dev");
authRequestMap.put("tax_id", "20409378472");
authRequestMap.put("wsid", "wsfe");
Gson gson = new Gson();
String authRequestBody = gson.toJson(authRequestMap);
HttpRequest authRequest = HttpRequest.newBuilder()
.uri(new URI("https://app.afipsdk.com/api/v1/afip/auth"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(authRequestBody))
.build();
HttpResponse<String> authResponse = client.send(authRequest, HttpResponse.BodyHandlers.ofString());
if (authResponse.statusCode() >= 400) {
System.out.println("Error in auth request: " + authResponse.body());
return;
}
// Parsear respuesta para extraer el sign y token usando GSON
Type mapType = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> authData = gson.fromJson(authResponse.body(), mapType);
String token = authData.get("token");
String sign = authData.get("sign");
System.out.println("Token: " + token);
System.out.println("Sign: " + sign);
} catch (Exception e) {
e.printStackTrace();
}
}
}
token y sign corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos.
3. Llamar al método del Web Service que necesites
Con el TA ya podés realizar las llamadas a los Web Services que necesites.
Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request.
Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service.
Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía:
También podés usar las guías del blog de Afip SDK para Java:
Usar tu propio certificado (Opcional)
Primero, obtenemos el certificado siguiendo esta guía.
Al pedir la autorización agregamos cert y key en el body