Getnet DocsGetnet Docs

Processe uma venda

Este guia mostra como iniciar uma venda com o SDK White Label. Você pode deixar o SDK coletar o valor e o meio de pagamento, ou definir os dois no seu aplicativo.

Como funciona

Você inicia uma venda com initSale. O parâmetro saleSetup define quem fornece o valor e o meio de pagamento. O SDK exibe as telas, executa a transação e devolve o resultado por um callback (consulte Resultado da transação).

A chamada retorna imediatamente; o resultado chega depois em onPaymentResult. É necessário um warm-up bem-sucedido (WarmUpStatus.Success).

Antes de começar

Se quiser, verifique quais meios de pagamento estão habilitados para o terminal. As duas funções são suspend, então chame-as de uma coroutine:

lifecycleScope.launch {
    val apolo = ApoloSdk.getClient()
    val available = apolo.getAvailablePaymentTypes()          // Set<IMethod>
    val pixEnabled = apolo.isPaymentTypeAvailable(IBrSaleMethod.Pix)
}

Venda guiada (o SDK coleta os dados)

Use Default para deixar o usuário escolher o valor e o meio de pagamento nas telas do SDK. Use Amount para definir o valor e deixar o usuário escolher o meio de pagamento:

val apolo = ApoloSdk.getClient()

// the user informs the amount and the method
apolo.initSale(context = activity, onPaymentResult = { result -> /* ... */ })

// the application fixes the amount; the user chooses the method
apolo.initSale(
    context = activity,
    saleSetup = Amount(amountInCents = 1990L), // R$ 19.90
    onPaymentResult = { result -> /* ... */ },
)

Os valores são sempre em centavos e devem ser maiores que zero. Amount(19) significa R$ 0,19, e não R$ 19,00.

Venda direta (o aplicativo define o valor e o meio de pagamento)

Defina o valor e o meio de pagamento com uma variante de BrSaleSetup.

Crédito

O crédito aceita pagamento à vista e parcelado:

// single payment
apolo.initSale(
    context = activity,
    saleSetup = BrSaleSetup.Credit(amountInCents = 15000L), // R$ 150.00
    onPaymentResult = { result -> /* ... */ },
)

// installments
apolo.initSale(
    context = activity,
    saleSetup = BrSaleSetup.Credit(
        amountInCents = 15000L,
        installmentPlan = CreditInstallmentPlan(
            installments = 3,
            installmentType = CreditInstallmentType.MERCHANT_NO_INTEREST,
        ),
    ),
    onPaymentResult = { result -> /* ... */ },
)

No parcelamento, installments deve ser maior que 1. O installmentType define quem financia o plano de parcelamento:

  • MERCHANT_NO_INTEREST — o estabelecimento absorve o custo; o portador do cartão não paga juros.
  • ISSUER_WITH_INTEREST — o emissor financia; o portador do cartão paga juros.

Débito, Voucher e Pix

Cada variante recebe somente o valor em centavos:

apolo.initSale(context = activity, saleSetup = BrSaleSetup.Debit(amountInCents = 8990L))   // R$ 89.90
apolo.initSale(context = activity, saleSetup = BrSaleSetup.Voucher(amountInCents = 3500L)) // R$ 35.00
apolo.initSale(context = activity, saleSetup = BrSaleSetup.Pix(amountInCents = 12000L))    // R$ 120.00

No Pix, o SDK gera e exibe o QR Code e acompanha o pagamento antes de retornar o resultado.

Leia o resultado

O resultado chega em onPaymentResult. Trate result.result == "00" como aprovação e qualquer outro valor como não aprovação. Consulte Resultado da transação para ver os códigos e o payload.

Próximos passos