Estou passando por um problema na homologação do Sitef com múltiplos cartões, teste 38:
- Valor da transação: 100,00
- Para esta transação a aplicação deve estar pronta para realizar o pagamento no cartão novamente, passar o restante em dinheiro ou cancelar toda a venda.
- Realizar uma transação de Crédito magnético com uma parte do valor da venda
- Selecionar a opção á vista
- Realizar o pagamento do restante do valor com cartão de Débito
- Desativar o SiTef
- Selecionar a opção á vista
- Após o retorno da mensagem para a aplicação, ativar o SiTef, fechar o restante do valor da venda em dinheiro e concluir a venda normalmente.
- A CliSiTef retornará o timeout do SiTef
- A aplicação deverá exibir a mensagem retornada para o operador e retornar para a tela de pagamentos, permitindo que o operador selecione cartão novamente, outra forma de pagamento ou cancele a venda.
- Verificar comandos de mensagem retornados.
- A transação será autorizada
- Há impressão de cupom.
Obtive a seguinte resposta deles:
Automação enviando uma função Finaliza para cada operação em uma venda de múltiplos cartões. Em uma venda de múltiplos cartões, deve ser enviado o mesmo número de CupomFiscal para todas as operações dentro da venda de múltiplos. Essas transações ficarão pendentes até a automação identificar que atingiu o valor total da venda, e então, enviará apenas uma função Finaliza com o mesmo número de CupomFiscal para confirmar todas as operações anteriores dentro da venda de múltiplos.
E quando houver desligamento da automação durante uma venda de múltiplos, quando a automação voltar ela deverá obter as transações pendentes e cancelar todas elas.
Analisando a AcbrTefD, função ConfirmarTransacoesPendentes percebi que é realmente enviada uma confirmação para cada transação:
procedure TACBrTEFD.ConfirmarTransacoesPendentes(ApagarRespostasPendentes: Boolean);
var
HouveConfirmacao: Boolean;
I : Integer;
begin
fTefClass.GravaLog( 'ConfirmarTransacoesPendentes' );
HouveConfirmacao := False;
I := 0; while I < RespostasPendentes.Count do
begin
try
with RespostasPendentes do
begin
GPAtual := TipoGP; // Seleciona a Classe do GP
if not CNFEnviado then
begin
CNF( Rede, NSU, Finalizacao, DocumentoVinculado );
CNFEnviado := True;
HouveConfirmacao := True;
end;
if ApagarRespostasPendentes then
begin
ApagaEVerifica( ArqRespPendente );
ApagaEVerifica( ArqBackup );
end;
Inc( I ) ;
end;
except
{ Exceção Muda... Fica em Loop até conseguir confirmar e apagar Backup }
end;
end ;
try
if HouveConfirmacao and Assigned( fOnDepoisConfirmarTransacoes ) then
fOnDepoisConfirmarTransacoes( RespostasPendentes );
finally
if ApagarRespostasPendentes then
RespostasPendentes.Clear;
end;
end;
Alguém já passou por essa situação ? Teria que mudar esse código ?
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.
Clisitef Homologação Múltiplos Cartões
em Dúvidas sobre TEF
Postado
Boa tarde pessoal
Estou passando por um problema na homologação do Sitef com múltiplos cartões, teste 38:
- Valor da transação: 100,00
- Para esta transação a aplicação deve estar pronta para realizar o pagamento no cartão novamente, passar o restante em dinheiro ou cancelar toda a venda.
- Realizar uma transação de Crédito magnético com uma parte do valor da venda
- Selecionar a opção á vista
- Realizar o pagamento do restante do valor com cartão de Débito
- Desativar o SiTef
- Selecionar a opção á vista
- Após o retorno da mensagem para a aplicação, ativar o SiTef, fechar o restante do valor da venda em dinheiro e concluir a venda normalmente.
- A CliSiTef retornará o timeout do SiTef
- A aplicação deverá exibir a mensagem retornada para o operador e retornar para a tela de pagamentos, permitindo que o operador selecione cartão novamente, outra forma de pagamento ou cancele a venda.
- Verificar comandos de mensagem retornados.
- A transação será autorizada
- Há impressão de cupom.
Obtive a seguinte resposta deles:
Automação enviando uma função Finaliza para cada operação em uma venda de múltiplos cartões. Em uma venda de múltiplos cartões, deve ser enviado o mesmo número de CupomFiscal para todas as operações dentro da venda de múltiplos. Essas transações ficarão pendentes até a automação identificar que atingiu o valor total da venda, e então, enviará apenas uma função Finaliza com o mesmo número de CupomFiscal para confirmar todas as operações anteriores dentro da venda de múltiplos.
E quando houver desligamento da automação durante uma venda de múltiplos, quando a automação voltar ela deverá obter as transações pendentes e cancelar todas elas.
Analisando a AcbrTefD, função ConfirmarTransacoesPendentes percebi que é realmente enviada uma confirmação para cada transação:
procedure TACBrTEFD.ConfirmarTransacoesPendentes(ApagarRespostasPendentes: Boolean);
var
HouveConfirmacao: Boolean;
I : Integer;
begin
fTefClass.GravaLog( 'ConfirmarTransacoesPendentes' );
HouveConfirmacao := False;
I := 0;
while I < RespostasPendentes.Count do
begin
try
with RespostasPendentes do
begin
GPAtual := TipoGP; // Seleciona a Classe do GP
if not CNFEnviado then
begin
CNF( Rede, NSU, Finalizacao, DocumentoVinculado );
CNFEnviado := True;
HouveConfirmacao := True;
end;
if ApagarRespostasPendentes then
begin
ApagaEVerifica( ArqRespPendente );
ApagaEVerifica( ArqBackup );
end;
Inc( I ) ;
end;
except
{ Exceção Muda... Fica em Loop até conseguir confirmar e apagar Backup }
end;
end ;
try
if HouveConfirmacao and Assigned( fOnDepoisConfirmarTransacoes ) then
fOnDepoisConfirmarTransacoes( RespostasPendentes );
finally
if ApagarRespostasPendentes then
RespostasPendentes.Clear;
end;
end;
Alguém já passou por essa situação ? Teria que mudar esse código ?
Obrigado!