Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.upaybr.com/llms.txt

Use this file to discover all available pages before exploring further.

Upay Java SDK

SDK oficial da Upay para Java. Compatível com Java 17+ e Spring Boot.

Instalação

Requisitos

Certifique-se de ter instalado:
  • Java: JDK 17 ou superior
  • Maven: Para gerenciar dependências e construir o projeto

Instalando Maven

Linux:
sudo apt install maven
Windows (usando Chocolatey):
choco install maven -y

Adicionando a dependência

Este SDK ainda não está publicado no Maven Central. Clone e instale localmente:
git clone https://github.com/anthonymengottii/upay-java-sdk
cd upay-java-sdk && mvn install -DskipTests
Após o mvn install, adicione ao seu pom.xml:
<dependency>
    <groupId>com.upay</groupId>
    <artifactId>upay-java</artifactId>
    <version>1.0.0</version>
</dependency>
E a dependência de serialização JSON:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.17.1</version>
</dependency>

Uso Rápido

import com.upay.UpayClient;

// Inicialize o SDK com sua API Key
UpayClient upay = new UpayClient(System.getenv("UPAY_API_KEY"));
import com.upay.UpayClient;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.Map;

UpayClient upay = new UpayClient(System.getenv("UPAY_API_KEY"));

JsonNode link = upay.paymentLinks.create(Map.of(
    "title",       "Produto Premium",
    "amountCents", 9900,
    "description", "Acesso vitalício"
));

System.out.println(link.path("url").asText()); // URL de checkout para o cliente

Resposta

{
  "id": "lnk_abc123",
  "title": "Produto Premium",
  "description": "Acesso vitalício",
  "amountCents": 9900,
  "status": "ACTIVE",
  "url": "https://pay.upaybr.com/l/abc123",
  "createdAt": "2026-04-08T00:00:00.000Z",
  "updatedAt": "2026-04-08T00:00:00.000Z"
}

Criando uma Transação PIX

JsonNode tx = upay.transactions.create(Map.of(
    "product",        "Curso Java",
    "paymentMethod",  "PIX",
    "amountCents",    19900,
    "clientName",     "João Silva",
    "clientEmail",    "joao@example.com",
    "clientDocument", "12345678900"
));

System.out.println(tx.path("pixCopiaECola").asText());

Validando um Cupom

JsonNode result = upay.coupons.validate("DESCONTO10", 19900);

if (result.path("valid").asBoolean()) {
    System.out.println("Desconto: " + result.path("discountCents").asInt());
    System.out.println("Total: " + result.path("finalAmountCents").asInt());
}

Validação de Webhooks

// Spring Boot
@PostMapping("/webhook")
public ResponseEntity<?> webhook(
        @RequestBody byte[] body,
        @RequestHeader("x-webhook-signature") String signature
) throws Exception {
    if (!upay.verifyWebhookSignature(new String(body), signature, System.getenv("UPAY_WEBHOOK_SECRET"))) {
        return ResponseEntity.status(401).body(Map.of("error", "Assinatura inválida"));
    }
    return ResponseEntity.ok(Map.of("received", true));
}

Tratamento de Erros

import com.upay.utils.UpayException;

try {
    JsonNode tx = upay.transactions.create(Map.of(...));
} catch (UpayException e) {
    System.err.println("Erro " + e.getStatusCode() + ": " + e.getMessage());
} catch (IOException | InterruptedException e) {
    System.err.println("Erro de rede: " + e.getMessage());
}