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)
}
}
}
Updated over 1 year ago