Getnet DocsGetnet Docs

Controlar la impresora del dispositivo

Esta guía explica cómo interactuar con el hardware físico de impresión del dispositivo utilizando el PrinterRepository. Esto permite verificar la disponibilidad de papel e imprimir tanto recibos estándar como contenidos personalizados.

Comprobar el estado del papel

Antes de intentar cualquier tarea de impresión, la mejor práctica es verificar que la impresora tiene papel. Utiliza la función checkPaper para consultar el estado del hardware.

Repositorio: PrinterRepository
Función: checkPaper

Ejemplo de implementación

Devuelve true si hay papel disponible, false en caso contrario.

suspend fun verifyPaperAvailability() {
    val result = printerRepository.checkPaper()

    when (result) {
        is RepositoryResult.Success -> {
            val hasPaper = result.data
            if (hasPaper) {
                println("✅ Printer is ready.")
            } else {
                println("⚠️ Printer is out of paper.")
            }
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        is RepositoryResult.ProtocolError -> println("❌ Error: ${result.type}")
        else -> {}
    }
}

Imprimir un ticket estándar

El SDK proporciona un método integrado para generar e imprimir un recibo estándar utilizando datos de un objeto Transaction. Esto es útil para generar rápidamente recibos conformes sin tener que diseñar el diseño manualmente.

Función: printDefaultTicket

Parámetros:

  • context: El contexto de la aplicación Android.
  • headerIcon: Una imagen Bitmap para imprimir en la parte superior del recibo (p. ej., el logotipo de tu comercio).
  • transaction: El objeto Transaction que contiene los detalles del pago.

Ejemplo de implementación

suspend fun printReceipt(context: Context, logo: Bitmap, transaction: Transaction) {
    val result = printerRepository.printDefaultTicket(
        context = context,
        headerIcon = logo,
        transaction = transaction
    )

    handlePrintResult(result)
}

Imprimir contenido personalizado (Bitmaps)

Si necesitas un control total sobre el diseño del recibo (p. ej., añadir cupones, códigos QR o diseños personalizados), puedes renderizar tu contenido en un Bitmap y enviarlo directamente a la impresora.

Función: printBitmap

Parámetros:

  • bitmap: El objeto Bitmap a imprimir.

Ejemplo de implementación

suspend fun printCustomDesign(myCustomBitmap: Bitmap) {
    val result = printerRepository.printBitmap(
        bitmap = myCustomBitmap
    )

    handlePrintResult(result)
}

Gestión de resultados de impresión

Ambos métodos de impresión devuelven un RepositoryResult<Boolean>.

fun handlePrintResult(result: RepositoryResult<Boolean>) {
    when (result) {
        is RepositoryResult.Success -> {
            if (result.data) {
                println("✅ Print job completed successfully.")
            } else {
                println("❌ Print job failed.")
            }
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        is RepositoryResult.ProtocolError -> println("❌ Protocol Error: ${result.type}")
        else -> {}
    }
}

Próximos pasos