Como começar
Instalando
É necessário ter o Java com versão superior à 8.0 instalado com o Gradle ou Maven.
Use o repositório do "Maven Central" para instalar o SDK:
repositories {
mavenCentral()
}
E também adicione a dependência do SDK:
dependencies {
implementation 'br.com.woovi:java-sdk:0.0.13'
}
Dessa forma, o SDK, um cliente HTTP (ktor) e uma implementação serão instalados.
Criando o cliente
O ponto de entrada do SDK é um WooviSDK:
package br.com.woovi;
import br.com.woovi.sdk.WooviSDK;
import java.util.concurrent.ExecutionException;
public class Main {
public static void main(String[] args) {
// Para começar a usar o SDK Java
WooviSDK sdk = new WooviSDK(System.getenv("APP_ID"));
}
}
O constructor cria um novo cliente a partir de um ID de aplicativo obtido no site da woovi. Também é possível passar configurações para o SDK, como o executor, para isso você pode observar os "overloads" dessa função, que por definição são os construtores com o mesmo nome, mas com parâmetros diferentes. Você também pode utilizar o método estático WooviSdk.of para construir.
Através dos "overloads" você pode específicar, a "url base", o "executor"(que é o ambiente onde vão ser despachadas as threads), uma instância de json e uma instância de http client.
Ambas instâncias de json e http client você pode configurar parâmetros internos, como explicitNulls,
leniência, e outros, que não vem ao caso, no momento. Todas elas estão documentadas em código, e são fáceis de ler.
Chamando a API
Um SDK possui métodos para acessar a API da woovi. Todos eles são assíncronos, e retornam um Future que pode ser usado para obter o resultado da chamada.
sdk.allCustomersAsync().get();
Cada função retorna um futuro, que pode ser acessado em "single-thread" utilizando o método get ou em "multi-thread" utilizando o método join.
Procurando páginas
Para procurar páginas, você pode utilizar os métodos, que tem como parâmetro os "start", "end", "charge", e outros, que são os parâmetros de paginação da API. Um exemplo desses métodos, é o método transactionsAsync, que retorna uma página de transações.
// Você pode utilizar o método get para obter o resultado da chamada. E não passar nenhum parametro, porque os parametros são opcionais.
sdk.transactionsAsync().get();
// Você pode utilizar os seguintes parametros:
sdk.transactionsAsync(start, end, charge, pixQrCode, withdrawal).get();
Formato das entradas
Cada formato de entrada é uma classe com tipos, geralmente são nomeados como Builder no final, por exemplo ChargeBuilder.
// Cria uma charge
ChargeBuilder charge = new ChargeBuilder()
.value(100)
.comment("comment")
.correlationID("correlationId")
.destinationAlias("destinationAlias")
.sourceAccountId("sourceAccountId");
sdk.createChargeAsync(charge).get();
Argumentos simples como strings e inteiros são utilizados no caso de operações de obtenção de apenas um recurso ou remoção. Por exemplo
// Obtém uma cobrança pelo ID. string.
sdk.getChargeAsync(correlationID);
// Remove uma cobrança pelo ID. string.
sdk.deleteChargeASync(correlationID);
Formato de saída
A execução de uma operação irá devolver resultados da API na forma de um objeto ou na forma de um paginador, especialmente em operações de listagem, como na listagem de transações.
/**
* Criando um pix qr code
*
* Retorna um objeto
*/
PixQrCodeBuilder builder = new PixQrCodeBuilder()
.identifier("identificador")
.name("nome");
System.out.println(sdk.createPixQrCodeAsync(builder).get());
/**
* Resultado: (Identado para fins de leitura)
*
* PixQrCodeResponse(
* pixQrCode=PixQrCode(
* name=nome,
* identifier=identificador,
* correlationID=bad32cd4-123e-49f7-8ca4-f1381c633831,
* paymentLinkID=a42a8a56-ab8e-4fc3-833d-c7dc1ff7473f,
* createdAt=2023-07-28T01:41:58.920Z,
* updatedAt=2023-07-28T01:41:58.920Z,
* brCode=00020126580014br.gov.bcb.pix013600ad360c-92c7-45ab-adb3-188307a6e4d05204000053039865802BR5910Woovi_Demo6009Sao_Paulo62170513identificador63040E64,
* paymentLinkUrl=https://woovi.com.br/pay/a42a8a56-ab8e-4fc3-833d-c7dc1ff7473f,
* qrCodeImage=https://api.woovi.com.br/woovi/charge/brcode/image/a42a8a56-ab8e-4fc3-833d-c7dc1ff7473f.png
* ),
* correlationID=null,
* brCode=null,
* )
*/
JavaDocs
Em cada operação disponível para um determinado tipo de recurso, existem Java Docs disponíveis informando o formato de entrada e saída da operação com um link para a documentação da API Rest e exemplo de utilização.
Para utilizar, é sugerido utilizar um editor com como o Eclipse ou o IntelliJ que possuem suporte para Java e bastante tooling para facilitar o desenvolvimento.
Também é possível consultar a documentação no site da woovi caso haja dúvidas.
Recursos disponíveis
Os seguintes recursos estão disponíveis no Client:
-
Future<PixQrCodeResponse> getPixQrCodeAsync(...): Obtém um Pix QR Code pelo ID. -
Future<PixQrCodeList> allPixQrCodesAsync(...): Lista todos os Pix QR Codes. -
Future<PixQrCodeResponse> createPixQrCodeAsync(...): Cria um Pix QR Code. -
Future<Account> getAccountAsync(...): Obtém uma conta pelo ID. -
Future<AccountListResponse> allAccountsAsync(...): Lista todas as contas. -
Future<WithdrawResponse> withdrawAsync(...): Realiza um saque. -
Future<PaymentResponseObject> getPaymentAsync(...): Obtém um pagamento pelo ID. -
Future<PaymentListResponse> allPaymentsAsync(...): Lista todos os pagamentos. -
Future<PaymentResponseObject> createPaymentAsync(...): Cria um pagamento. -
Future<ChargeDeleteResponse> deleteChargeAsync(...): Remove uma cobrança pelo ID. -
Future<ChargeResponse> getChargeAsync(...): Obtém uma cobrança pelo ID. -
Future<ChargeListResponse> chargesAsync(...): Lista todas as cobranças. -
Future<ChargeResponse> createChargeAsync(...): Cria uma cobrança. -
Future<File> chargeQrCodeImageAsync(...): Obtém a imagem de um QR Code de uma cobrança. -
Future<Customer> getCustomerAsync(...): Obtém um cliente pelo ID. -
Future<CustomerListResponse> allCustomersAsync(...): Lista todos os clientes. -
Future<CustomerResponse> createCustomerAsync(...): Cria um cliente. -
Future<RefundResponse> getRefundAsync(...): Obtém um reembolso pelo ID. -
Future<RefundListResponse> allRefundsAsync(...): Lista todos os reembolsos. -
Future<RefundResponse> createRefundAsync(...): Cria um reembolso. -
Future<WebhookDeleteResponse> deleteWebhookAsync(...): Remove um webhook pelo ID. -
Future<WebhookListResponse> allWebhooksAsync(...): Lista todos os webhooks. -
Future<WebhookResponse> createWebhookAsync(...): Cria um webhook. -
Future<TransactionResponse> getTransactionAsync(...): Obtém uma transação pelo ID. -
Future<TransactionListResponse> transactionsAsync(...): Lista todas as transações.
Dependências
O SDK depende de implementações das:
- Ktor Client (e outras dependências)
- Kotlinx Coroutines
- Kotlinx Serialization
O Ktor client é utilizado para realizar as requisições HTTP, e as outras dependências são utilizadas para realizar as requisições de forma assíncrona.