Ao realizar transações com o seu PIN Pad, você pode se deparar com diversos códigos de retorno. Eles são mensagens importantes que indicam o status ou motivo de uma operação, seja ela um sucesso ou um erro.
Para te ajudar a indetificar rapidamente o que cada código siginifica, consulte a tabela abaixo:
Especificações dos termos que aparecem na tabela:
|
Códigos de Retorno do PIN PAD | |
|---|---|
| Código | Descrição |
| 0 | Operação efetuada com sucesso - parâmetros de retorno (OUTPUT) contém dados válidos |
| 1 | Em processamento. Deve-se chamar a função novamente ou PP_Abort para finalizar. |
| 2 | Em processamento. Deve-se apresentar no "checkout" uma mensagem retornada pela função e chamá-la novamente ou PP_Abort para finalizar. |
| 4 | Pressionada tecla de F1. |
| 5 | Pressionada tecla de F2. |
| 6 | Pressionada tecla de F3. |
| 7 | Pressionada tecla de F4. |
| 8 | Pressionada tecla de apagar (backspace). |
| Status de 10 a 29: Erros básicos da biblioteca | |
| 10 | Chamada inválida à função. As operações prévias são necessárias. |
| 11 | Parâmetro inválido passado à função. |
| 12 | Esgotado o tempo máximo estipulado para a operação. |
| 13 | Operação cancelada pelo operador. |
| 14 | Pin pad já aberto. |
| 15 | Pin pad não foi aberto. |
| 16 | Erro interno de execução - problema de implementação da biblioteca (software). |
| 17 | Função não suportada pelo modelo de pin pad. |
| 18 | Função não disponível na biblioteca do pin pad. |
| 19 | Ausência de dado mandatório para o processamento. |
| 20 | Tabelas expiradas (pelo "time-stamp"). |
| 21 | Erro ao tentar gravar tabelas (por falta de espaço, por exemplo). |
| 22 | Aplicação da rede adquirente não existe no pin pad. |
| Status de 30 a 39: Erros de comunição/protocolo com o pin pad | |
| 30 | Erro de comunicação: porta serial do pin pad possivelmente ocupada. |
| 31 | Erro de comunicação: pin pad provavelmente desconectado ou com problemas com a interface serial. |
| 32 | O status informado pelo pin pad não é conhecido. |
| 33 | A mensagem recebida do pin pad possui formato inválido. |
| 34 | Tempo esgotado ao esperar pela resposta do pin pad (no caso de comando não blocantes). |
| Status de 40 a 49: Erros básicos reportados pelo pin pad | |
| 40 | Erro interno do pin pad. |
| 41 | Erro de leitura do cartão magnético. |
| 42 | Erro na captura do PIN - Master Key pode não estar presente. |
| 43 | Não há cartão inteligente presente no acoplador. |
| 44 | Pin pad não pode processar a captura de PIN temporariamente devido a questões de segurança (como quando é atingido o limite de capturas dentro de um intervalo de tempo). |
| Status de 50 a 59: Erros de processamento de cartão com chip (SAM) | |
| 50 | Erro genérico no módulo SAM. |
| 51 | SAM ausente, "mudo" ou com erro de comunicação. |
| 52 | SAM inválido, desconhecido ou com problemas |
| Status de 60 a 99: Erros de processamento de cartão com chip (usuário) | |
| 60 | Cartão não responde ("mudo") ou chip não presente. |
| 61 | Erro de comunicação do pin pad com o cartão inteligente. |
| 62 | Cartão do tipo inválido ou desconhecido, não pode ser tratado (não é EMV nem TIBC v1). |
| 63 | Cartão bloqueado por número excessivo de senhas incorretas (somente para Easy-Entry TIBC v1) |
| 64 | Cartão TIBC v1 não autenticado pelo módulo SAM (somente para Easy-Entry TIBC v1) |
| 65 | Cartão TIBC v1 expirado (somente para Easy-Entry TIBC v1) |
| 66 | Cartão com erro de estrutura - arquivos estão faltando. |
| 67 | O cartão foi invalidado. Se o cartão dor TIBC v1, quando a seleção ou ATR retornar status '6284'. Se o cartão for EMV, quando seleção de aplicação retornar status '6A81'. |
| 68 | Cartão com problemas. Esse status é válido para muitas ocorrências no processamento de cartões TIBC v1 e EMV onde o cartão não se comporta conforme o esperado e a transação deve ser finalizada. |
| 69 | O cartão, seja TIBC v1 e EMV, comporta-se corretamente porém possui dados invpalidos ou inconsistentes. |
| 70 | Cartão sem nenhuma aplicação disponível para as condições pedidas (ou cartão é reconhecido como TIBC v1 ou EMV mas não possui nenhuma aplicação compatível com a requerida). |
| 71 | Somente para cartão EMV. A aplicação selecionada não pode ser utilizada neste terminal pois o Get Processing Options retornou status '6985'. |
| 72 | Somente para aplicação de moedeiro. O saldo do moedeiro é insuficiente para a operação. |
| 73 | Somente para aplicação de moedeiro. O limite máximo para operação foi excedido. |
Fonte: https://wiki.vrsoft.com.br/wiki/images/b/b3/Erros_retorno_sitef1.png
Autor do artigo: Daniela.imp.shop (Não remova esse quadro)Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como:
|
(Não remova esse quadro)Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição! |
<div id="text-end"></div>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag2(){dataLayer.push(arguments);}
gtag2('js', new Date());
gtag2('config', 'UA-193974933-1');
function gtagevents (action,category) {
console.log(category + ':' + action);
gtag2('event',action,{event_category:category,event_label: document.title});
};
</script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
(function(){
// RASTREIO DE USO DO VÍDEO
function gtagvideo(action){
gtagevents(action,'Video')
}
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
var seeking = false;
var priorTime = 0;
var currentTime = 0;
var reportouFinalDoConteudo = false;
// se pausar o play é acionado também.
player.on('play', function(data) {
if(data.seconds == 0){
gtagvideo('video-iniciado');
}
priorTime = data.seconds;
});
player.on('ended', function() {
gtagvideo('video-finalizado');
});
//seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
// pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
player.on('seeking', function(data) {
seeking = true;
});
player.on('pause',function(data){
gtagvideo('video-pausado');
});
player.on('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagvideo('video-voltando');
}
if(currentTime > priorTime){
gtagvideo('video-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = data.seconds;
var finalDoConteudo = (data.duration - data.seconds) < 5;
if(finalDoConteudo && !reportouFinalDoConteudo){
gtagvideo('conteudo-finalizado')
reportouFinalDoConteudo = true;
}
});
player.on('fullscreenchange', function() {
gtagvideo('video-fullscreen');
});
})();
</script>
<script>
// RASTREIO DO USO DE AUDIO
(function(){
function gtagaudio(action){
gtagevents(action,'Audio')
}
var audio = document.querySelector("audio");
var seeking = false;
var priorTime = 0;
var currentTime = 0;
audio.addEventListener('play',function(){
if(audio.currentTime == 0){
gtagaudio('audio-iniciado');
}
priorTime = audio.currentTime;
});
audio.addEventListener('ended',function(){
gtagaudio('audio-finalizado');
});
audio.addEventListener('pause',function(){
gtagaudio('audio-pausado');
});
audio.addEventListener('seeking', function(data) {
seeking = true;
});
audio.addEventListener('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagaudio('audio-voltando');
}
if(currentTime > priorTime){
gtagaudio('audio-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = audio.currentTime;
});
})();
</script>
<script>
(function(){
var terminou = false;
//RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
document.addEventListener('scroll',() => {
if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
if(!terminou){
terminou = true;
gtagevents('artigo-lido','Pagina')
}
}else{
terminou = false;
}
});
})();
</script>
|