Último recibo

Recupere os dados da última transação no Plugin SmartPOS para visualização, tratamento de recibo não encontrado ou reimpressão.

Recupere os dados da última transação realizada no terminal SmartPOS para visualização ou impressão.

Você pode imprimir a última transação passando o objeto retornado para o request de impressão.

Quando usar

Use a consulta do último recibo quando sua aplicação precisar recuperar a transação mais recente armazenada no terminal.

Esse fluxo pode ser útil para:

  • exibir os dados da última transação;
  • permitir reimpressão de recibo;
  • recuperar informações depois de uma falha de interface;
  • consultar dados de uma venda, Pix ou cancelamento recente.

Pré-requisitos

Antes de consultar o último recibo:

    1. Ative o terminal em Ativação SmartPOS.

    2. Inicialize o SDK e plugue o SmartPOSPlugin em Inicialização SmartPOS.

    3. Solicite as permissões Android necessárias em tempo de execução.

    4. Prepare a interface para exibir os dados da transação ou tratar recibo não encontrado.


Classe utilizada

Para visualizar o último recibo, use o builder de último recibo do Plugin SmartPOS.

A requisição é criada por:

SmartPOSPlugin.createLastReceiptRequestBuilder()

Exemplo

val request = SmartPOSPlugin.createLastReceiptRequestBuilder()
    .callback(object: Callback<LastReceiptResponse>() \{
        override fun onSuccess(response: LastReceiptResponse) {
            val transactionData = response.transaction
        }

        override fun onFail(error: Throwable) {
            // Recibo não encontrado
        }
    \})
    .build()

Zoop.post(request)

Retorno

A resposta retorna a última transação em um objeto TransactionData.

data class TransactionData(
    val value: Int?, // Valor da transação em centavos
    val paymentType: Int?, // Tipo de pagamento
    val installments: Int?, // Parcelas
    val status: String?, // Status (approved/canceled)
    val brand: String?, // Marca do cartão ex: Visa
    val address: String?, // Endereço do seller
    val sellerName: String?, // Nome do seller
    val acquiring: String?, // Adquirente
    val pan: String?, // PAN do cartão
    val autoCode: String?, // Código de autorização
    val documentType: String?, // Tipo de documento, CPF/CNPJ
    val document: String?, // Documento
    val nsu: String?, // NSU
    val date: String?, // Data da transação
    val hour: String?, // Hora da transação
    val cv: String?, // CV
    val arqc: String?, // ARQC
    val aid: String?, // AID
    val sellerReceipt: String?, // Recibo do estabelecimento
    val customerReceipt: String?, // Recibo do cliente
    val approvalMessage: String?, // Mensagem de aprovação ex: APROVADA PELO EMISSOR
    val aidLabel: String?, // Label do cartão
    var transactionId: String?, // Id da transação
    val receiptId: String? = null, // Id do recibo, caso aplicável (hoje, apenas transações Pix)
    val pixId: String? = null, // Id do Pix
    val cardFingerprint: String? = null // Token único do cartão.
)

O campo pixId é um identificador interno da Zoop.


Callbacks

.callback

Controla o fluxo principal da consulta do último recibo.

MétodoQuando ocorreAção recomendada
onSuccessA última transação foi encontrada.Use response.transaction para exibir ou imprimir o recibo.
onFailO recibo não foi encontrado ou a consulta falhou.Exiba uma mensagem clara e permita retornar ao fluxo anterior.

Imprimir o último recibo

Depois de recuperar response.transaction, envie o objeto para o fluxo de impressão.

val printRequest = SmartPOSPlugin.createPrintRequestBuilder()
    .printData(Printer.PrintData(transactionData = transactionData))
    .receiptType(ReceiptType.REPRINT_CUSTOMER)
    .callback(object: Callback<SmartPOSPrinterResponse>() \{
        override fun onSuccess(response: SmartPOSPrinterResponse) {
            handlePrintSuccess()
        }

        override fun onFail(error: Throwable) {
            handlePrinterError()
        }
    \})
    .build()

Zoop.post(printRequest)

Use o receiptType adequado ao tipo de via:

ReceiptType.REPRINT_ESTABLISHMENT // Reimpressão de via do estabelecimento
ReceiptType.REPRINT_CUSTOMER      // Reimpressão de via do cliente

Tratamento recomendado

Trate todos os estados da consulta para evitar uma experiência ambígua:

    1. Em onSuccess, valide se response.transaction está disponível.

    2. Exiba os dados relevantes da transação para o operador.

    3. Ofereça reimpressão quando o terminal suportar impressão.

    4. Em onFail, informe que o recibo não foi encontrado ou que a consulta falhou.

    5. Não assuma que sempre haverá uma transação anterior no terminal.


Checklist do último recibo

Antes de enviar a requisição com Zoop.post(request), confirme:

  • O SDK foi inicializado com credenciais.
  • O SmartPOSPlugin foi plugado.
  • A interface trata sucesso e falha na consulta.
  • O app trata o cenário de recibo não encontrado.
  • A tela não assume que existe uma transção anterior.
  • Para reimpressão, o app usa Printer.PrintData(transactionData = transactionData).
  • Para reimpressão, o app define o ReceiptType correto.

Próximo passo

Depois de implementar a consulta do último recibo, consulte Métodos do fabricante para acessar métodos públicos do dispositivo.


Did this page help you?