// Java 17+, sem dependências. Execute somente no servidor.
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class Sale {
    public static void main(String[] args) throws Exception {
        String key = System.getenv("PIX_API_KEY");
        String id = System.getenv("PIX_SALE_ID");
        if (key == null || key.isBlank() || id == null ||
            !id.matches("[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{21}"))
            throw new IllegalArgumentException("Configure PIX_API_KEY e PIX_SALE_ID.");
        if (args.length != 1 || !(args[0].equals("create") || args[0].equals("get")))
            throw new IllegalArgumentException("Use: java Sale.java create|get");
        boolean create = args[0].equals("create");
        // Persista ID e corpo antes do POST; preserve ambos em toda retentativa.
        String body = "{\"sale_id\":\"" + id +
            "\",\"amount_cents\":8990,\"reference\":\"Pedido 1042\"}";
        String url = "https://pixlojista.com.br/v1/integration/sales" + (create ? "" : "/" + id);
        HttpRequest.Builder request = HttpRequest.newBuilder(URI.create(url))
            .timeout(Duration.ofSeconds(15))
            .header("Authorization", "Bearer " + key).header("Content-Type", "application/json");
        if (create) request.POST(HttpRequest.BodyPublishers.ofString(body));
        else request.GET();
        HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(15))
            .followRedirects(HttpClient.Redirect.NEVER).build();
        HttpResponse<String> response = client.send(request.build(), HttpResponse.BodyHandlers.ofString());
        if (response.statusCode() < 200 || response.statusCode() >= 300)
            throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
        System.out.println(response.body()); // JSON: sale, brcode, qr_png_base64.
    }
}
