Ir para conteúdo
  • Cadastre-se

dev botao

Duvidas TEFDemo usando CLIDTEF(Direção) e multiplos cartões


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

Recommended Posts

Bom Dia,

Já procurei por este tipo de "problema" no forum e não encontrei nada,

não sei se é um problema ou um erro meu,

sou completamente novo na operação com TEF,

posso estar fazendo a operação de modo incorreto,

me desculpem se for esse o caso,

estou tentando simular uma venda com mais de um cartão no TEFDemo,

antes de implementer no meu AC,

estou usando o TEF da Direção,

mas,

não estou conseguindo finalizar corretamente as transações com 2 ou mais cartões,

tipo:

no TEFDemo, está setado:

GP = gpCliDTEF

Auto Ativar G.P. = True

Multiplos Cartões = True

AutoEfetuarPagamento = False

AutoFinalizarCupom = True

CHQ em Gerencial = True

faço da sequinte forma:

na aba de configuração

-ativo ecf

-inicializo gerenciador

na aba de operação

Multiplos Cartões = True

TEF Direção = Cartão de Crédito

valor ECF = 100

primeiro cartão:

Valor TEF = 55

chamo CRT(clico no botão)

ele abre o gerenciador da direção com o valor correto a receber 55

informo o numero do cartão

recebo a informação de autorizado

nada é impresso até aqui, perfeito,

segundo cartão

Valor TEF = 45

chamo CRT(botão)

ele abre o gerenciador da direção com o valor correto a receber 45

informo o outro numero de cartão

recebo a informação de autorizado

agora sozinho o TEFDemo:

finaliza corretamente o cupom com a forma de pagamento CARTAO = 100,00

imprime corretamente um comprovante de credito ou debito do primeiro cartão e do segundo cartão,

com o numero do cupom correto e os numeros das nsu d-tef das transações corretas,

até aqui parece estar tudo em ordem,

mas ao verificar no site da direção as operações feitas,

ele acusa que o primeiro cartão foi autorizado, saiu do status de pendente mas,

o ultimo cartão que foi informado ficou no status de pendente de confirmação,

olhando os log's do TEFDemo, posso estar enganado, mas me parece que ele faz a confirmação

do primeiro cartão e então finaliza a transação, e depois faz a confirmação do segundo cartão,

mas como a transação foi finalizada antes, o segundo cartão fica em pendente.

logs do acbrtefd:

-- 14/11 10:42:14:598 - InfoECF: ineEstadoECF

-- 14/11 10:42:14:639 - Ret: P

-- 14/11 10:42:14:643 - InfoECF: ineSubTotal

-- 14/11 10:42:14:768 - Ret: 100

-- 14/11 10:42:14:772 - CliDTEF ECFPagamento: Indice: 02 Valor: 100,00

-- 14/11 10:42:15:623 - InfoECF: ineSubTotal

-- 14/11 10:42:15:846 - Ret: 0

-- 14/11 10:42:15:850 - CliDTEF ComandarECF: Oper: opeFechaCupom

-- 14/11 10:42:17:535 - InfoECF: ineEstadoECF

-- 14/11 10:42:17:661 - Ret: L

-- 14/11 10:42:17:665 - ImprimirTransacoesPendentes

-- 14/11 10:42:17:669 - InfoECF: ineEstadoECF

-- 14/11 10:42:17:799 - Ret: L

-- 14/11 10:42:17:804 - BloquearMouseTeclado: SIM

-- 14/11 10:42:17:810 - CliDTEF DoExibeMsg: Oper: opmExibirMsgOperador Mensagem: IMPRIMINDO...

-- 14/11 10:42:17:824 - CliDTEF ECFAbreVinculado: COO: 000204 Indice: 02 Valor: 100,00

-- 14/11 10:42:18:538 - CliDTEF ECFImprimeVia: trVinculado Via: 1

-- 14/11 10:42:21:994 - CliDTEF ComandarECF: Oper: opePulaLinhas

-- 14/11 10:42:22:895 - CliDTEF DoExibeMsg: Oper: opmDestaqueVia Mensagem: Destaque a 1ª Via

-- 14/11 10:42:25:925 - CliDTEF DoExibeMsg: Oper: opmRemoverMsgOperador Mensagem:

-- 14/11 10:42:25:931 - CliDTEF DoExibeMsg: Oper: opmRemoverMsgCliente Mensagem:

-- 14/11 10:42:25:958 - CliDTEF DoExibeMsg: Oper: opmExibirMsgOperador Mensagem: IMPRIMINDO...

-- 14/11 10:42:25:966 - CliDTEF ECFImprimeVia: trVinculado Via: 1

-- 14/11 10:42:30:963 - CliDTEF DoExibeMsg: Oper: opmRemoverMsgOperador Mensagem:

-- 14/11 10:42:31:053 - CliDTEF DoExibeMsg: Oper: opmRemoverMsgCliente Mensagem:

-- 14/11 10:42:31:057 - CliDTEF ComandarECF: Oper: opeFechaVinculado

-- 14/11 10:42:33:428 - ConfirmarTransacoesPendentes

-- 14/11 10:42:33:432 - ConfirmarTransacoesPendentes: Count:2 <------- isso fui eu que coloquei nos fontes para o log me mostrar quantos cartões estavam pendentes

-- 14/11 10:42:33:436 - ConfirmarTransacoesPendentes: Rede:1 NSU:000633 Finalizacao: DocumentoVinculado:000204 <-------- aqui também pra ver onde ele confirmava a transação no caso aqui do primeiro cartão.

-- 14/11 10:42:33:440 - *** FinalizaTransacaoDPOS. Confirma: SIM Documento: 000204 Data: 20121114 Hora: 104233 <------ isso aqui veio do log mesmo

-- 14/11 10:42:34:859 - ConfirmarTransacoesPendentes: Rede:1 NSU:000636 Finalizacao: DocumentoVinculado:000204 <------ aqui vem a confirmação do segundo cartão.

-- 14/11 10:42:34:872 - BloquearMouseTeclado: NAO

como eu disse acima, posso estar fazendo algo muito errado,

tentei colocar tudo da forma que estou procedendo,

mas não sei mais como fazer,

se alguém puder me ajudar......

obs: com uma forma de pagamento sendo dinheiro e o restante sendo em um cartão,

funciona perfeito também, no site da direção ele acata o cartão corretamente.

Agradeço desde já qualquer ajuda,

Gerson

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Provavelmente a classe da Direção precise de uma revisão no ACBrTEFD...

Hoje ela usa grande parte do código do TEF discado (Gerenciador Padrão)... e no caso do G.P., realmente é necessário confirmar a última transação antes de iniciar uma nova.. (pois o mesmo não foi projetado para múltiplos cartões)

O ideal seria implementar o TEF direção usando a comunicação direta (sem o uso do client)... assim como foi feito na classe do SiTEF

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Ultima forma....

Notei que a classe TACBrTEFDCliDTEF está sim usando a comunicação direta com o uso da DLL...

Porém ela realmente precisa ser revista... muita coisa foi modificada com a necessidade da Cielo Premia...

Não terei tempo de Debugar, por isso gostaria de contar com a sua ajuda.... Pelo que notei pode ser algum problema no método:

TACBrTEFDCliDTEF.CNF... ele tem um tratamento para saber se é a última transação a ser confirmada e ai sim, Finalizar a Transação toda...

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.

Link para o comentário
Compartilhar em outros sites

Olá Daniel,

obrigado pela resposta,

fiz algumas modificações nas classes e ainda estou testando,

para o problema de dois ou mais cartões deu certo,

só não sei ainda ao certo o que pode afetar no restante do componente,

tive que mexer na

TACBrTEFDCliDTEF.FinalizarTransacao

comentando as duas linhas abaixo:

if pos(DocumentoVinculado, fDocumentosProcessados) > 0 then

exit ;

pois para cada cartão ele faz uma chamada a função FinalizarTransacao,

então ao enviar o segundo cartão pra cá a função já encerrava,

uma vez que o documento vinculado é o mesmo para os dois cartões,

e dentro dela é tratado se é confirmação de cartão ou finalização de transação,

o log ficou assim, lembrando que eu coloquei mais alguns gravalog():

-- 16/11 16:58:19:681 - ConfirmarTransacoesPendentes: Count:2

-- 16/11 16:58:19:683 - ConfirmarTransacoesPendentes: Rede:1 NSU:000937 Finalizacao: DocumentoVinculado:000230 <-- confirmou o primeiro cartão

-- 16/11 16:58:19:693 - *** CNF - Rede:1 Confirma:NAO NSU:000937 DocumentoVinculado:000230

-- 16/11 16:58:19:695 - *** DocumentoVinculado: 000230 DocumentosProcessados:

-- 16/11 16:58:19:698 - *** TipoTransacao: 1 NSU:000937

-- 16/11 16:58:19:734 - ConfirmarTransacoesPendentes: Rede:1 NSU:000940 Finalizacao: DocumentoVinculado:000230 <-- confirmou o segundo cartão

-- 16/11 16:58:19:787 - *** CNF - Rede:1 Confirma:SIM NSU:000940 DocumentoVinculado:000230

-- 16/11 16:58:19:790 - *** DocumentoVinculado: 000230 DocumentosProcessados:000230|

-- 16/11 16:58:19:792 - *** TipoTransacao: 1 NSU:000940

-- 16/11 16:58:19:829 - *** FinalizaTransacaoDPOS. Confirma: SIM Documento: 000230 Data: 20121116 Hora: 165819 <-- finalizou a transação

-- 16/11 16:58:20:280 - BloquearMouseTeclado: NAO

no site da direção, os cartões agora aparecem autorizadoes e sem pendências,

tive que comentar as ultimas linhas na função também,

if not Confirma then

TACBrTEFD(Owner).DoExibeMsg( opmOK, 'Transação não efetuada.'+sLineBreak+

'Favor reter o Cupom' );

me pareceu que este Confirma não se presta a essa operação nesta função,

posso estar errado,

e também tive que mexer na

TACBrTEFD.ConfirmarTransacoesPendentes,

aqui pode ser um problema, pois não sei se afeta os outros gerenciadores,

if not CNFEnviado then

begin

fTefClass.GravaLog( 'ConfirmarTransacoesPendentes: Rede:' + Rede + ' NSU:' + NSU + ' Finalizacao:' + Finalizacao + ' DocumentoVinculado:' + DocumentoVinculado ) ;

if (I = RespostasPendentes.Count-1) then // <======== mudei aqui.....

CNF( Rede, NSU, Finalizacao, DocumentoVinculado )

else

CNF( Rede, NSU, 'I', DocumentoVinculado ); // <======== mudei aqui.....

CNFEnviado := True ;

end;

consegui simular aqui todas as operações com cartão,

dinheiro e cartão,

mais de dois cartões,

desligamento da impressora e reinicio do computador,

parece ter dado tudo certo, fez o que o roteiro de homologação pedia,

vou fazer mais testes,

estou olhando agora o cielo premia para ver se atende os requisitos,

se eu fiz alguma bobagem, por favor me avise.

Grato

Gerson

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Oi Gerson,

Todas as mundaças na Classe TACBrTEFDCliDTEF não vão interferir nas demais...

a modificação efetuada em: TACBrTEFD, poderiamos fazer um IF, verificando o tipo de Classe..

Se desejar, anexe aqui no post um Zip com os fontes modificados... Faço a analise necessária...

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Notei que esta classe reescreve desnecessariamente vários métodos, como por exemplo o "ImprimirComprovantes"... (isso já estava assim)

Assim que tiver um tempo vou dar uma revisada nela... Onde posso achar material de teste do TEF direção ?

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.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4166 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...