Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3234 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Boa Tarde.

 

Estou implementando o TEF usando o ACBR e preciso cancelar o fluxo, usando o ESC, no momento em que a mensagem "Digite a senha" aparece, mas nesse momento o teclado se encontra bloqueado e o nenhuma tecla ou o mouse funcionam. 

 

Mesmo no demo, não é possível cancelar pelo botão nesse momento.

 

Alguma  sugestão do que eu possa fazer?

 

Obrigado.

Editado por brsamn
  • Moderadores
Postado

Neste caso você pode utilizar o evento onAguardaResp, testando se o GP Atual é Sitef e se arquivo é igual a 23, que seria a situação para esse momento que você precisa, algo mais ou menos assim:

 

  if (Arquivo = '23') and (ACBrTEF.GPAtual = gpCliSiTef) then
    Permite cancelar
 
Ao fazer o tratamento, sete dentro desse mesmo evento a variável interromper para o que deseja.
  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • 1 mês depois ...
Postado
Caros,
 
Estou testando este recurso no TEFDemo, realizando uma venda com cartão de crédito magnético à vista:
 
Cenário 1:
-------------
 
1 - Envio um CRT, seleciono a forma de pagamento e o tipo de cartão
2 - No momento em que me pede para passar ou inserir o cartao, pressiono o botão "CancelarResp" (Continua = -1);
3 - Aparece a tela de dialogo 13 - Operacao Cancelada? [Yes / No]; 
 
Bug:
--------
4 - Se a respota for "No", a tela de dialogo (Comando = 20) fica sempre aparecendo, sendo que o correto não seria ficar em Loop, esperando o retorno do de algum periférico no caso o PinPad (Comando = 23)????
 
  Obs.: Enquanto a resposta for "No" fica sempre aparecendo a tela de dialogo.
 
Cenário 2:
-------------
 
1 - Se respota for "Yes", é retonado para o TEFDemo, e repito novamente o fluxo de operações (venda com cartão de crédito magnético à vista); 
2 - Envio novamente um CRT, seleciono a forma de pagamento e o tipo de cartão;
 
Bug:
--------
6 - De cara , já me aparece o dialogo 13 - Operacao Cancelada? [Yes / No]
 
 
Conclusão:
 
Se pressiono o botão "CancelarResp", tenho que fechar o cupom com uma forma de pagamento que não seja cartão, pois se escolher cartão vai sempre aparecer o dialogo (dialogo 13 - Operacao Cancelada? [Yes / No]) e se respondo "No" acontece o "Cenário 1" e se respondo "Yes" acontece o "Cenário 2".
 
Gostaria de saber dos colegas se isso também ocorre com vocês???
 
Desde já agradeço.
Postado

Caros,

 

Alguém testou o TEFDemo, cancelando o fluxo da transação, repetindo o cenário descrito acima????

 

Pelo que pude observar nos fontes (ACBrTEFDCliSiTef.pas), os eventos "OnMudaEstadoReq" e "OnMudaEstadoResp" não são chamados/tratados para o SiTef quando enviamos um CRT ou CHQ; Sendo assim a variável "fCancelado" utilizada no TefDemo, depois que apertamos o botão "CancelarResp", nunca volta para "False" (Obs.: a variável esta sendo setada para False no evento OnMudaEstadoReq), deixando assim o programa em Loop no evento "OnAguardaResp" onde trata o Comando 23 ( Arquivo = '23'); O valor desta variável (fCancelado) é passada como resposta ao evento "OnAguardaResp" através da varável "Interromper", e dentro do método "TACBrTEFDCliSiTef.ContinuarRequisicao", no bloco case "ProximoComando = 23", a variável "Continua" sempre fica setada com o valor "-1" (menos 1), pois a variável "interromper" será sempre "True", causando os problemas relatados acima. 

 

Gostaria da opinião dos colegas, se também estão enfrentando problemas para cancelar o fluxo da transação.

 

Desde já agradeço.

Postado

Bom dia Juliomar,

 

Obrigado pela atenção.

 

Concordo que temos várias formas de implementar. Porém da forma como o TEFDemo está não funciona, e isso pode confundir algumas pessoas com mais dificuldades. Para o SiTef, os eventos "OnMudaEstadoReq" e "OnMudaEstadoResp" não são chamados/tratados quando enviamos um CRT ou CHQ. 

 

Se você tem uma outra forma de implementar e possa compartilhar conosco, seria de grande valia.

 

Desde já agradeço.

Postado

Bom dia Daniel,

 

Quando apertamos o botão "CancelarResp" a variável "fCancelado" é setada para "true" e a mesma é passada para a variável "Interromper" do evento "OnAguardaResp", correto. No final do bloco do evento "OnAguardaResp" tem a seguinte condicional "  if fCancelado then Interromper := True ;"

 

Este evento esta contido dentro do "repeat" do método "TACBrTEFDCliSiTef.ContinuarRequisicao", como a variável "fCancelado" não é setada nunca para "false" se respondermos não "No" diálogo "13 - Operacao Cancelada? [Yes / No]", o dialogo fica aparecendo sempre, e seu respondo "Yes", quando envio novamente um CRT, no momento que o PinPad começa interagir com a aplicação (evendo OnAguardaResp - Arquivo = 23), de cara já me aparece o diálogo sem ao menos termos pressionado o botão "CancelarResp".

 

Não sei se consegui passar o ocorrido aqui.

 

Obrigado

  • 2 semanas depois ...
  • Fundadores
Postado

Sim... notei que há um bug relacionado a isso no Demo... mas como vc disse, basta restaurar o estado de fCancelado para False...

 

Atualmente fiz várias modificações no meu Demo (experiências) e por isso não posso commitado..

 

Quando tiver um tempo reverto as modificações e corrijo esse bug...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Ok,

 

Daniel Simões

 

Uma outra coisa. No demo está sendo utilizados eventos "OnMudaEstadoReq" e "OnMudaEstadoResp", porém para o SiTef, os mesmos nunca são disparados quando enviamos um CRT ou CHQ. Portanto os blocos de comandos relacionados a esses eventos nuca serão processados. 

 

Desde já agradeço.

Postado

Estou usando o exemplo para teste e implementação da minha aplicação até o momento não tive problemas estou no teste 59 e esta indo uma maravilha...

  • 1 ano depois...
  • Consultores
Postado
Em 24/07/2014 at 09:05, ornei disse:

Bom dia Daniel,

 

Quando apertamos o botão "CancelarResp" a variável "fCancelado" é setada para "true" e a mesma é passada para a variável "Interromper" do evento "OnAguardaResp", correto. No final do bloco do evento "OnAguardaResp" tem a seguinte condicional "  if fCancelado then Interromper := True ;"

 

Este evento esta contido dentro do "repeat" do método "TACBrTEFDCliSiTef.ContinuarRequisicao", como a variável "fCancelado" não é setada nunca para "false" se respondermos não "No" diálogo "13 - Operacao Cancelada? [Yes / No]", o dialogo fica aparecendo sempre, e seu respondo "Yes", quando envio novamente um CRT, no momento que o PinPad começa interagir com a aplicação (evendo OnAguardaResp - Arquivo = 23), de cara já me aparece o diálogo sem ao menos termos pressionado o botão "CancelarResp".

 

Não sei se consegui passar o ocorrido aqui.

 

Obrigado

Enviei uma correção para este problema no DEMO hoje. Acredito que agora está exemplificando corretamente como agir. Mas lembramos que é apenas um exemplo e sua aplicação pode fazer de forma diferente.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 3234 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...