Mundo Físico (POS)

Imprimir Comprovante

Como realizar impressão de comprovantes

Pré-requisitos

  • Projeto configurado com payments-api-x.x.x.x.aar
  • PaymentClient bindado (paymentClient.bind(this))
  • Uma transação confirmada com paymentId conhecido
  • Terminal com impressora habilitada

Passos para Imprimir o Comprovante

1. Obtenha o paymentId da transação confirmada

String paymentId = paymentV2.getPaymentId(); // após confirmPayment()

2. Monte o PrintReceiptRequest

PrintReceiptRequest request = new PrintReceiptRequest();

// Credenciais (OBRIGATÓRIO)
Credentials credentials = new Credentials();
credentials.setApplicationId("SEU_APP_ID");
credentials.setSecretToken("SEU_SECRET_TOKEN");

ApplicationInfo appInfo = new ApplicationInfo();
appInfo.setCredentials(credentials);
appInfo.setSoftwareVersion("1.0.0"); // OBRIGATÓRIO

request.setApplicationInfo(appInfo);
request.setPaymentId(paymentId);

// Controle de impressão
request.setPrintMerchantReceipt(true);    // Via do estabelecimento
request.setPrintCustomerReceipt(true);    // Via do cliente

// Pré-visualização (padrão = true)
request.setPreviewMerchantReceipt(true);  // Mostra tela antes de imprimir via lojista
request.setPreviewCustomerReceipt(true);  // Mostra tela antes de imprimir via cliente

3. Chame printReceipt()

try {
    paymentClient.printReceipt(request, new PaymentClient.PaymentCallback<Object>() {
        @Override
        public void onSuccess(Object result) {
            Toast.makeText(MainActivity.this, "Comprovante impresso com sucesso!", Toast.LENGTH_SHORT).show();
            Log.i("PRINT", "Impressão concluída");
        }

        @Override
        public void onError(ErrorData errorData) {
            String msg = errorData.getResponseMessage();
            String code = errorData.getPaymentsResponseCode();

            Log.e("PRINT", "Erro: " + code + " - " + msg);
            Toast.makeText(MainActivity.this, "Falha na impressão: " + msg, Toast.LENGTH_LONG).show();
        }
    });
} catch (ClientException e) {
    Log.e("PRINT", "Erro de cliente", e);
}
ParâmetroTipoPadrãoDescrição
printMerchantReceiptBooleanfalseImprime via do estabelecimento
printCustomerReceiptBooleanfalseImprime via do cliente (portador)
previewMerchantReceiptBooleantrueExibe tela de pré-visualização antes da via lojista
previewCustomerReceiptBooleantrueExibe tela de pré-visualização antes da via cliente

Dica: Para impressão silenciosa (sem pré-visualização), use preview... = false.

Erros Comuns

CódigoDescriçãoSolução
TRANSACTION_NOT_CONFIRMEDTransação não confirmadaConfirme antes com confirmPayment()
RECEIPT_ALREADY_PRINTEDJá impresso (só permite reimpressão)Normal em reimpressão
PRINTER_ERRORFalha na impressoraVerifique papel, tampa, conexão
TRANSACTION_NOT_FOUNDpaymentId inválidoUse ID correto

Reimpressão

Basta chamar printReceipt() novamente com o mesmo paymentId. O sistema reconhece automaticamente como reimpressão.

Dicas Finais

Use preview... = false em totens/self-service Sempre trate onError – o cliente pode ter arrancado o papel! Teste com transações reais confirmadas Em estornos, use os mesmos parâmetros (printMerchantReceipt, etc.) no reversePaymentV2

Pronto! Agora seu app imprime comprovantes profissionais como o terminal nativo.

2025 © Nuvende - CNPJ 38.297.374/0001-93