Consultar ltimo comprobante en Java

RunLLM
RunLLM

Para consultar el último comprobante emitido en Java, debes seguir estos pasos:

  1. Obtener el Token de Autorización: Realiza una solicitud POST al endpoint https://app.afipsdk.com/api/v1/afip/auth para obtener el token y sign necesarios. Debes incluir los parámetros environment, tax_id, y wsid en el cuerpo de la solicitud.

  2. Realizar la solicitud al web service: Con el token y sign obtenidos, realiza una solicitud POST al endpoint https://app.afipsdk.com/api/v1/afip/requests. En el cuerpo de la solicitud, especifica el método consultarUltimoComprobanteAutorizado, el wsid correspondiente, y los parámetros necesarios como authRequest, codigoTipoComprobante, y numeroPuntoVenta.

Aquí tienes un ejemplo de cómo hacerlo en Java:

HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(15)).build();
Map<String, Object> authRequestMap = new LinkedHashMap<>();
authRequestMap.put("environment", "dev");
authRequestMap.put("tax_id", "20409378472");
authRequestMap.put("wsid", "wsct");
String authRequestBody = new 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());
Map<String, String> authData = new Gson().fromJson(authResponse.body(), new TypeToken<Map<String, String>>() {}.getType());
String token = authData.get("token");
String sign = authData.get("sign");

Map<String, Object> invoiceRequestMap = new LinkedHashMap<>();
invoiceRequestMap.put("environment", "dev");
invoiceRequestMap.put("method", "consultarUltimoComprobanteAutorizado");
invoiceRequestMap.put("wsid", "wsct");
Map<String, Object> authParams = new LinkedHashMap<>();
authParams.put("token", token);
authParams.put("sign", sign);
authParams.put("cuitRepresentada", "20409378472");
Map<String, Object> params = new LinkedHashMap<>();
params.put("authRequest", authParams);
params.put("codigoTipoComprobante", 195);
params.put("numeroPuntoVenta", 1);
invoiceRequestMap.put("params", params);
String invoiceRequestBody = new Gson().toJson(invoiceRequestMap);
HttpRequest invoiceRequest = HttpRequest.newBuilder()
    .uri(new URI("https://app.afipsdk.com/api/v1/afip/requests"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(invoiceRequestBody))
    .build();
HttpResponse<String> invoiceResponse = client.send(invoiceRequest, HttpResponse.BodyHandlers.ofString());
System.out.println("Invoice Response: " + invoiceResponse.body());

Este código realiza la autenticación y luego consulta el último comprobante autorizado. Asegúrate de reemplazar los valores de tax_id y cuitRepresentada con los correctos para tu caso.

Sources: