Pular para o conteúdo principal

Respostas e erros

Toda resposta traz clientTransactionId, status e protocolVersion. O status diz o que aconteceu; o error diz por quê; os demais campos aparecem conforme a operação.

CampoQuando vem
statusSempre
errorEm declined, cancelled, busy, error e unknown
receiptEm approved de venda e estorno, e em declined quando a adquirente gera comprovante da recusa
transactions, nextCursorEm consultas
terminalEm terminal_status
users, userNas operações de usuários locais

Status​

StatusSignificadoAção do seu app
approvedOperação concluídaConcluir; o comprovante vem em receipt
declinedRecusada pelo emissor ou adquirenteMostrar error.message; o cliente pode tentar outro meio
cancelledInterrompida pelo operador ou portador no terminalVoltar ao carrinho
busyHavia outra operação em curso; nada foi executadoTentar de novo em instantes
errorFalhou antes de virar transação, ou o desfecho é desconhecidoDecidir por error.code (tabela abaixo)
unknownStatus de uma versão mais nova do hostMostrar error.message sem tomar decisão de negócio

O atalho response.isApproved equivale a status == APPROVED.

Comprovante (receipt)​

CampoConteúdo
transactionIdIdentificador da transação no gateway. Use-o em estorno, reimpressão e consulta
amountInCents, paymentMethod, transactionType, installmentsDados da venda
authorizationCode, nsu, timestampIsoDados da autorização
cardBrand, cardBin, cardLastDigitsBandeira, 6 primeiros e 4 últimos dígitos. O número completo nunca sai do terminal
merchantName, merchantDocument, terminalId, terminalSerialNumberIdentificação do estabelecimento e do terminal
merchantReceipt, customerReceiptVias do lojista e do cliente, já formatadas para impressão
voucherBalanceInCentsSaldo do voucher, quando a adquirente informa. null significa não informado
acquirerNome do adquirente que processou (por exemplo, pagseguro). null significa não informado. No estorno, é o adquirente da venda original

Objeto de erro​

CampoUso
codeCódigo estável do protocolo. Use este campo para lógica
messageTexto pronto para o operador, no idioma do terminal
vendorCodeCódigo bruto do fabricante ou do adquirente. Só para log e suporte, porque muda junto com o kernel do fabricante

Nunca tome decisão pelo texto de message: ele pode mudar entre versões do host.

Códigos de erro​

CódigoSignificadoAção recomendada
no_responseGerado no seu app: o host não respondeu ou a resposta veio ilegívelRecuperar o desfecho antes de cobrar de novo (Recuperação)
operation_timeoutTeto de tempo atingido (a transação pode seguir viva no terminal), ou cartão não apresentado no prazoRecuperar; só cobrar de novo se não houve aprovação
terminal_busyOutra operação em curso, inclusive uma anterior que ainda pode devolver desfechoAguardar; se houver id pendente, recuperar
unauthorized_callerApp não credenciadoPedir credenciamento com requestAuthorization
authorization_deniedCredenciamento recusado, ou senha de Supervisor não confirmadaParar; é decisão humana
terminal_not_initializedTerminal ainda não ativado, ou ativado mas sem as tabelas de pagamento carregadasAbrir a ativação com activateTerminal(). Se a resposta da própria ativação for esta, o terminal já está cadastrado: verificar a rede dele
malformed_requestJSON inválido, campo obrigatório ausente, action diferente da operação, metadata fora dos limites ou com número de cartão, bloco de impressão desconhecido, ou valor e parcelas fora das regras do terminal (mínimo, máximo, limite de contactless)Corrigir a requisição; não é caso de retentativa
unsupported_operationOperação que esta versão do host não executaEsconder a função ou atualizar o host
unsupported_protocol_versionO host não fala a versão enviadaAtualizar o host ou o contrato
unsupported_payment_methodMeio de pagamento não habilitado no terminalOferecer outro meio
operation_cancelledInterrompida no terminal, ou transação desfeitaVoltar ao carrinho
card_read_errorFalha na leitura do cartãoPedir para apresentar o cartão de novo
declined_by_issuerRecusa do emissorMostrar a mensagem; oferecer outro meio
network_errorFalha de comunicação com o gateway: sem rede, terminal não autorizado no gateway, sessão expirada, requisição recusada ou falha do servidorVerificar a conexão do terminal e tentar de novo; se persistir, acionar o suporte
refund_exceeds_balanceEstorno maior que o saldo da transaçãoAjustar o valor
transaction_not_foundId sem registro para o seu app no terminalNa recuperação ou reimpressão: consultar o portal
printer_error, no_paperFalha de impressãoVerificar a impressora e o papel
invalid_user_dataNome vazio, CPF sem 11 dígitos, perfil desconhecido ou senha fora do formatoCorrigir os dados
user_not_founduserId inexistenteAtualizar a lista com list_users
user_already_existsJá há usuário com o CPFUsar o cadastro existente
last_supervisorDeixaria Operadores sem SupervisorCadastrar outro Supervisor antes
supervisor_limitTerminal já tem 10 SupervisoresRemover ou rebaixar um
supervisor_requiredSem Supervisor, o primeiro usuário tem de ser SupervisorCadastrar um Supervisor primeiro
internal_errorFalha inesperada no host, ou documento de impressão inválidoRegistrar message e, quando vier, vendorCode; acionar o suporte
unknownCódigo não classificado: de uma versão mais nova do host, ou falha sem código do fabricanteMostrar message; não decidir

terminal_busy merece atenção: o terminal executa uma operação por vez e recusa concorrência em vez de enfileirar, porque uma fila deixaria o operador sem retorno por minutos.