API REST - mdiago/VeriFactu GitHub Wiki

Ejemplos de llamadas al API REST

Java

Ejemplo llamada generación código QR

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class VerifactuApiPostExample {
    public static void main(String[] args) {
        // URL del endpoint
        String endpoint = "https://facturae.irenesolutions.com:8050/Kivu/Taxes/Verifactu/Invoices/GetQrCode";

        // Cuerpo de la solicitud (JSON)
        String requestBody = """
                {
                    "ServiceKey": "your service key",
                    "InvoiceID": "FRTEST1734699642488",
                    "InvoiceDate": "2024-12-20T13:00:42.488Z",
                    "SellerID": "B12959755",
                    "CompanyName": "IRENE SOLUTIONS SL",
                    "TaxItems": [
                        {
                            "TaxBase": 11.99,
                            "TaxAmount": 2.52
                        }
                    ]
                }
                """;

        try {
            // Crear cliente HTTP
            HttpClient client = HttpClient.newHttpClient();

            // Construir la solicitud
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(endpoint))
                    .header("Content-Type", "application/json") // Tipo de contenido
                    .POST(HttpRequest.BodyPublishers.ofString(requestBody)) // Método POST con el cuerpo
                    .build();

            // Enviar la solicitud y obtener la respuesta
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

            // Manejar la respuesta
            if (response.statusCode() == 200) {
                System.out.println("Respuesta exitosa:");
                System.out.println(response.body());
            } else {
                System.out.println("Error en la llamada: " + response.statusCode());
                System.out.println("Detalle: " + response.body());
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Error al realizar la solicitud.");
        }
    }
}

Para deserializar el JSON en un objeto dinámico en Java, puedes usar bibliotecas como Jackson o Gson, que son populares y sencillas de usar.

A continuación, se muestra cómo hacerlo con Jackson, ya que permite trabajar fácilmente con objetos dinámicos.

Primero, asegúrate de incluir la dependencia de Jackson en tu archivo Maven (pom.xml) o Gradle:

Maven:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>


Gradle:

implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'

Código para Deserializar JSON en un Objeto Dinámico

Aquí tienes un ejemplo de cómo deserializar el JSON recibido en un objeto dinámico utilizando ObjectMapper de Jackson:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonDeserializationExample {
    public static void main(String[] args) {
        // JSON como cadena (puedes obtenerlo desde una respuesta HTTP)
        String json = """
                {
                    "ServiceKey": "your service key",
                    "InvoiceID": "FRTEST1734699642488",
                    "InvoiceDate": "2024-12-20T13:00:42.488Z",
                    "SellerID": "B12959755",
                    "CompanyName": "IRENE SOLUTIONS SL",
                    "TaxItems": [
                        {
                            "TaxBase": 11.99,
                            "TaxAmount": 2.52
                        }
                    ]
                }
                """;

        try {
            // Crear instancia de ObjectMapper
            ObjectMapper objectMapper = new ObjectMapper();

            // Deserializar JSON en un objeto dinámico (JsonNode)
            JsonNode rootNode = objectMapper.readTree(json);

            // Acceder a los campos del JSON
            String serviceKey = rootNode.get("ServiceKey").asText();
            String invoiceId = rootNode.get("InvoiceID").asText();
            String invoiceDate = rootNode.get("InvoiceDate").asText();
            String sellerId = rootNode.get("SellerID").asText();
            String companyName = rootNode.get("CompanyName").asText();

            System.out.println("ServiceKey: " + serviceKey);
            System.out.println("InvoiceID: " + invoiceId);
            System.out.println("InvoiceDate: " + invoiceDate);
            System.out.println("SellerID: " + sellerId);
            System.out.println("CompanyName: " + companyName);

            // Acceder a los elementos de la lista TaxItems
            JsonNode taxItemsNode = rootNode.get("TaxItems");
            for (JsonNode item : taxItemsNode) {
                double taxBase = item.get("TaxBase").asDouble();
                double taxAmount = item.get("TaxAmount").asDouble();

                System.out.println("TaxBase: " + taxBase);
                System.out.println("TaxAmount: " + taxAmount);
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Error al deserializar el JSON.");
        }
    }
}
⚠️ **GitHub.com Fallback** ⚠️