Impressão de Comprovantes

O PayGo Integrado, ao finalizar uma transação, retorna à automação comercial um objeto saidaTransacao. Se a transação foi aprovada, a automação deve realizar a impressão dos comprovantes.

Caso tenha interesse em realizar a impressão do comprovante gráfico, basta verificar se existe comprovante gráfico para a operação realizada (saidaTransacao.comprovanteGraficoDisponivel()) e, se sim, realizar a impressão ou exibição na tela. Segue abaixo a lista de funções que retornam comprovantes. Para mais informações sobre os tipos de comprovantes, consulte aqui.

  • saidaTransacao.obtemComprovanteGraficoLojista()
  • saidaTransacao.obtemComprovanteGraficoPortador()
  • saidaTransacao.obtemComprovanteCompleto()
  • saidaTransacao.obtemComprovanteReduzidoPortador()
  • saidaTransacao.obtemComprovanteDiferenciadoLoja()
  • saidaTransacao.obtemComprovanteDiferenciadoPortador()

Os comprovantes são retornados à automação no formato de String ou lista de Strings. O primeiro passo para realizar a impressão, é converter essa string para Bitmap e então chamar as funções de impressão, conforme exemplo abaixo:

protected fun stringBase64ToBitmap(stringBase64: String?): Bitmap? {
  val ba = Base64.decode(stringBase64, Base64.DEFAULT)
  return BitmapFactory.decodeByteArray(ba, 0, ba.size)
}

protected fun callIPrinter(comprovante: Bitmap?, iPrinter: IPrinter) {
  viewModelScope.launch(SupervisorJob() + Dispatchers.Default) {
    kotlin.runCatching {

      var printing = true
      val listener = object : IPrinterListener {
        override fun onSuccess() {
          printing = false
        }

        override fun onError(p0: PrinterError?) {
          printing = false
          _printerError.postValue(p0)
        }
      }

      iPrinter.printImage(comprovante, listener)
      iPrinter.printFormFeed(listener)

      while (printing) {
        delay(50)
      }
    }.exceptionOrNull()?.let { printerException ->
      printerException.printStackTrace()
      _printerError.postValue(PrinterError.ERROR)
    }
  }
}