Getnet DocsGetnet Docs

Procesa una venta

Esta guía muestra cómo iniciar una venta con el SDK White Label. Puedes dejar que el SDK recopile el monto y el método de pago, o definirlos desde tu aplicación.

Cómo funciona

Inicias una venta con initSale. El parámetro saleSetup define quién proporciona el monto y el método de pago. El SDK muestra las pantallas, ejecuta la transacción y devuelve el resultado mediante un callback (consulta Resultado de la transacción).

La llamada retorna de inmediato; el resultado llega después en onPaymentResult. Se requiere un warm-up exitoso (WarmUpStatus.Success).

Antes de comenzar

De forma opcional, verifica qué métodos están habilitados para el terminal. Ambas funciones son suspend, así que llámalas desde una coroutine:

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

Venta guiada (el SDK recopila los datos)

Usa Default para que el usuario elija el monto y el método en las pantallas del SDK. Usa Amount para definir el monto y dejar que el usuario elija el método:

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 -> /* ... */ },
)

Los montos siempre están en centavos y deben ser mayores que cero. Amount(19) significa R$ 0.19, no R$ 19.00.

Venta directa (la aplicación define el monto y el método)

Define el monto y el método con una variante de BrSaleSetup.

Crédito

El crédito admite pago único y pago en cuotas:

// 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 -> /* ... */ },
)

Para el pago en cuotas, installments debe ser mayor que 1. installmentType define quién financia el plan:

  • MERCHANT_NO_INTEREST — el comercio absorbe el costo; el titular de la tarjeta no paga intereses.
  • ISSUER_WITH_INTEREST — el emisor financia; el titular de la tarjeta paga intereses.

Débito, Voucher y Pix

Cada variante recibe solo el monto en 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

En el caso de Pix, el SDK genera y muestra el QR Code, y monitorea el pago antes de devolver el resultado.

Lee el resultado

El resultado llega en onPaymentResult. Trata result.result == "00" como una aprobación y cualquier otro valor como una no aprobación. Consulta Resultado de la transacción para ver los códigos y el payload.

Siguientes pasos