Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Membros Pro
Postado

Saudações a todos!


Estamos em processo de adaptação do sistema para o SiTef e de homologação e o suporte deles incou as seguintes questões:

1) O número do cupom fiscal fica repetido após o lançamento de algum pagamento:

image.thumb.png.d1c0539fa2f3b87774a564bde2ddee8a.png

2) Ao enviar o estorno de um pagamento o sistema abre um menu. Fui questionado pelo suporte deles se estou usando o código 110.

image.png.259512be6b8448bbe792a96b27a680b2.png

3) No pagamento com cartão de crédito o sistema sempre abre um menu, com a opção crediário, mesmo enviando o código 3989 :

image.png.2d02436abe1e55fcdf6c92c2d0e4d878.png

Neste caso, o suporte do sitef orientou que eu usasse o código 26, como se fizesse um laçamento específico de crédito a vista.

Poderiam me ajudar com estas questões?

 

 

Log_ACBr_2025-06-03.txt

  • Fundadores
Postado

Olá @SIDesenvolvimento

Você usa ACBrTEFD ou ACBrTEFAPI ?

 

23 horas atrás, SIDesenvolvimento disse:

1) O número do cupom fiscal fica repetido após o lançamento de algum pagamento:

Seus fontes estão atualizados ?  (lembro de ter feito um ajuste, para ele usar a hora atual, se não for informado o Documento da Venda)

notei que em algumas situações no Log, está sendo enviado o Indentificador

23 horas atrás, SIDesenvolvimento disse:

2) Ao enviar o estorno de um pagamento o sistema abre um menu. Fui questionado pelo suporte deles se estou usando o código 110.

da Transação como zeros

Citar

03/06/25 12:40:17:724 - EfetuarPagamento( 00000000, 300,00, tefmpCartao, tefmfAVista, [ teftcCredito ], 1 )

No seu Log, parece estar sendo enviado 200... veja

Citar

03/06/25 13:44:36:987 - CancelarTransacao( 999030011, 030011, 03/06/2025 13:42:40, 10,00, , MASTERCARD DEBIT )
03/06/25 13:44:36:988 - *** IniciaFuncaoSiTefInterativo. Modalidade: 200 Valor: 10,00 Documento: 00000215 Data: 20250603 Hora: 134436 Operador:  ParamAdic: 

 

Você pode configurar isso, na propriedade OperacaoCancelamento, exemplo:

      if ACBrTEFAPI1.TEF is TACBrTEFAPIClassCliSiTef then
      begin
        with TACBrTEFAPIClassCliSiTef(ACBrTEFAPI1.TEF) do
        begin
          OperacaoCancelamento := 110;
        end;
      end;

 

23 horas atrás, SIDesenvolvimento disse:

3) No pagamento com cartão de crédito o sistema sempre abre um menu, com a opção crediário, mesmo enviando o código 3989 :

Você está informando o parâmetro 'Financiamento' do método 'EfetuarPagamento' ?

      Ok := ACBrTEFAPI1.EfetuarPagamento( IntToStr(Venda.NumOperacao),
                                          AValor, Modalidade, CartoesAceitos, 
                                          tefmfAVista);    // <----- AQUI -----

 

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.

  • Membros Pro
Postado

Olá @Daniel Simoes, muito obrigado pelas respostas.

Citar

Você usa ACBrTEFD ou ACBrTEFAPI ?

Esou usando o ACBrTEFAPI.

Citar

Seus fontes estão atualizados ?  (lembro de ter feito um ajuste, para ele usar a hora atual, se não for informado o Documento da Venda)

notei que em algumas situações no Log, está sendo enviado o Indentificador da Transação como zeros

Sim, estão atualizados. Atualizei eles agora pouco e não veio nenhuma alterção no tef.

O envio da venda eu estou fazendo da seguinte forma:

          with TACBrTEFAPIClassCliSiTef(ACBrTEFAPI1.TEF) do
          begin
            ParamAdicConfig.Text := '[]';
            ParamAdicFinalizacao.Text := '[]';
            ParamAdicFuncao.Text := sRestringeFPagamento_; <- Crédito a vista [27;28;36;3989], Crédito parcelado estab. [26;28;36;3989], crédito parcelado emissor [26;27;36;3989] e débito [19;3031].
          end;

          Ok := ACBrTEFAPI1.EfetuarPagamento(IntToStrZero(Qr_TEFid.Value,8), <- sequencial
                                             Ed_Valor.Value,
                                             Modalidade, <- aqui pode ser tefmpCarteiraVirtual ou tefmpCartao
                                             CartoesAceitos, <- [] para carteira virtual, teftcCredito ou teftcDebito
                                             Parcelamento, <-  tefmfAVista, tefmfParceladoEstabelecimento ou tefmfParceladoEmissor
                                             UD_Parcelas.Position); <- número de 1 a 21

Citar

Você pode configurar isso, na propriedade OperacaoCancelamento, exemplo:

Fiz a alteração desta forma:

        with TACBrTEFAPIClassCliSiTef(F_Principal.ACBrTEFAPI1.TEF) do
        begin
          OperacaoCancelamento := 110;
        end;
        Ok := F_Principal.ACBRTEFAPI1.CancelarTransacao(Qr_Pagnsu.Value, Qr_Pagautorizacao.Value, DateOf(Qr_Paglanc.Value), Qr_Pagvpag.Value, Qr_Pagfinalizacao.Value, Qr_Pagrede.Value);

E depois da alteração o sistema abre o menu adm:

image.png.69491affce188ecf3318e8101d157db7.png

 

Citar

Você está informando o parâmetro 'Financiamento' do método 'EfetuarPagamento' ?

Sim, indiquei este parâmetro como uma variável do tipo TACBrTEFModalidadeFinanciamento.

  • Membros Pro
Postado

@Daniel Simoes, o suporte do Siitef comentou sobre usar o código 26 para lançar o pagamento de crédito a vista, como solução para este menu. Como se fosse um pagamento específico. Existe este mesmo código como o do cancelamento?

  • Fundadores
Postado
Em 04/06/2025 at 18:36, SIDesenvolvimento disse:

            ParamAdicFuncao.Text := sRestringeFPagamento_; <- Crédito a vista [27;28;36;3989], Crédito parcelado estab. [26;28;36;3989], crédito parcelado emissor [26;27;36;3989] e débito [19;3031].

O Sitef tem um funcionamento diferente, onde devemos informar quais formas de pagamento não queremos... Isso é feito, nos fontes do ACBr, em 

TACBrTEFAPIClassCliSiTef.EfetuarPagamento

Observe que nesse método, o ACBr tenta traduzir os parâmetros recebidos no método EfetuarPagamento  para esses parâmetros de restrição...

  Restricoes := DadosAdicionais;
  if (pos('[', fParamAdicFuncao.Text) = 0) then   // Não especificou Restrições de Menu ?
  begin
    if (Op <> 0) and (OP <> 1) then       // Débito
      Restricoes := Restricoes + CSITEF_RestricoesCueque + ';';

    if (Op = 2) then       // Débito
      Restricoes := Restricoes + CSITEF_RestricoesCredito + ';'
    else if (Op = 3) then  // Crédito
      Restricoes := Restricoes + CSITEF_RestricoesDebito + ';';

    if (Financiamento = tefmfAVista) then
    begin
      Restricoes := Restricoes + CSITEF_RestricoesParcelado + ';';
      Restricoes := Restricoes + CSITEF_RestricoesParcelaAministradora + ';';
      Restricoes := Restricoes + CSITEF_RestricoesParcelaEstabelecimento + ';';
    end
    else if (Financiamento = tefmfParceladoEmissor) then
    begin
      Restricoes := Restricoes + CSITEF_RestricoesAVista + ';';
      Restricoes := Restricoes + CSITEF_RestricoesParcelaEstabelecimento + ';';
    end
    else if (Financiamento = tefmfParceladoEstabelecimento) then
    begin
      Restricoes := Restricoes + CSITEF_RestricoesAVista + ';';
      Restricoes := Restricoes + CSITEF_RestricoesParcelaAministradora + ';';
    end;

e no final, ele adiciona os parâmetros que você tenha injetado em ParamAdicConfig e move tudo para ParamAdicFuncao... 

      // Convertendo para formato de parâmetro, conforme esperado
      if (SL.Count > 0) then
      begin
        Restricoes := StringReplace(Trim(SL.Text), sLineBreak, ';', [rfReplaceAll]);
        if Restricoes <> '' then
          Restricoes := '['+Restricoes+']';

        if fParamAdicConfig.Count > 0 then
           Restricoes := Restricoes + ';'+ Trim(fParamAdicConfig.Text);

        if (Restricoes <> '') then
          fParamAdicFuncao.Add( Restricoes );
      end;
    finally
      SL.Free;
    end;    

Então precisamos ver no Log do ACBr (ou Sitef), como ficaram as restrições e parâmetros finais, enviados para o Sitef

 

Segunda a documentação do SiTEF:
https://dev.softwareexpress.com.br/docs/clisitef/clisitef_documento_principal/#início-da-transação-de-pagamento-ou-gerencial

110    Abre o menu de transações Gerenciais

Os Cancelamentos, iniciam no comando 200 (que é o comando padrão do ACBr)

 

  • Curtir 1
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.

  • Membros Pro
Postado

@Daniel Simoes, gostaria de atualizar aqui.

1) Consegui resolver o menu para cancelamento com a de crédito usando a propriedade OperacaoCancelamento. Para crédito usei 210 e Débito 211. Estou aguardando o código para cancelamento de carteira digital.

2) Enviei para o suporte do sitef o teu retorno sobre o pagamento e o uso dos códigos. Tentei usar a propriedade OperacaoVenda com o código 26, que foi indicado por eles, e não funcionou. Ainda sigo com aquele menu nos pagamentos por crédito (qualquer modalidade).

3) Sobre o número do cupom estar repetido ou zerado, eu só informo ele no EfetuarPagamento. 

EfetuarPagamento(IntToStrZero(Qr_TEF_Avulsoid.Value,8),
                                             Ed_Valor.Value,
                                             Modalidade,
                                             CartoesAceitos,
                                             Parcelamento,
                                             UD_Parcelas.Position);

As outras chamadas que eu uso são Iniciarlizar, EfetuarAdministrativo, ConfirmarTransacaoAutomaticamente, FinalizarTransacao e CancelarTransacao. Como posso indicar o número do cupom nelas?

  • Membros Pro
Postado

@Daniel Simoes, em tempo. 
Notei que na pasta onde ficam os log estão ficando alguns arquivos .tef:

image.png.62c7d9547be6998dafe402206dd48c80.png

Quando isto acontece, ao inicializar o sistema abre o menu para cancelamento.

Existe alguma configuração para não gerar estes arquivos? Eles são necessários para o tratamento de pendências?

 

Desde já agradeço pela atenção. 🙏

  • Fundadores
Postado
33 minutos atrás, SIDesenvolvimento disse:

As outras chamadas que eu uso são Iniciarlizar, EfetuarAdministrativo, ConfirmarTransacaoAutomaticamente, FinalizarTransacao e CancelarTransacao. Como posso indicar o número do cupom nelas?

humm, ok... provavelmente eles repostaram em relação a esses outros métodos..  Vou fazer uma validação

17 minutos atrás, SIDesenvolvimento disse:

Existe alguma configuração para não gerar estes arquivos? Eles são necessários para o tratamento de pendências?

Experimente apagar eles, antes da inicialização...

  ACBrTEFAPI1.LimparRespostasTEF;

 

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.

  • Membros Pro
Postado

@Daniel Simoes, boa tarde!
Consegui acesso aos logs do Sitef. Segue anexo o arquivo dmp de hoje.

Fiz o teste de falta de energia, com o lançamento de venda:

1º - Uma venda com duas formas de pagamento

image.thumb.png.8ca9024e62b3622d5b88b818c866b102.png

2º - Encerro a aplicação antes de tirar o cartão do pinpad

3º - Entro no sistema e ativo o componente:

image.thumb.png.ee4001f729ac6239eb0b9679e80b8f1e.png

Ao chamar a modalidade 130 é informado o mesmo cupom fiscal da venda. Está correto desta forma? 

Revisando o log e o meu código vi que o sistema estava enviando o cupom fiscal zerado quando tinha mais de um pagamento na mesma venda. Ja fiz a correção aqui:

image.thumb.png.347e81c7cafe0ff6ddba4dcef62eedbc.png

image.thumb.png.b3d20bc32c517b43826209c31a1b8944.png

Aqui um exemplo de pagamento com crédito e débito. Agora ficou da seguinte forma:

image.thumb.png.5de8accb0f90f5141a1fd1ec03daf38a.png

 image.thumb.png.ebf1bbe1b1434265b8a104e6fbaad67a.png

Log: CliSiTef.20250611.dmp.txt

image.png

Só para complementar a questão do código 130, o suporte do Sitef está alegando que o cupom fiscal está saindo repetido nele.

  • Membros Pro
Postado

Olá @Daniel Simoes, tudo bem?

Enviei um novo roteiro de pré-homologação, e tive dois retornos negativos:

1º) O problema citado antes, de repetir o número do cupom. Este número de cupom pode ser alterado ao chamar o componente, quando transações gerenciais ou de cacelamento?

Analisando a imagem, é como se nos cancelamento o componente usasse o último cupom enviado.

image.thumb.png.1810665517a6d588b3eb58c4ce42f0b4.png

2º) Tratamento de transação pendente sendo executada duas vezes.

image.thumb.png.ed2016e8b6fdffe80f2b584d0607999e.png

Vou anexar o log do sitef aqui para você poder ver melhor o que foi enviado.

CliSiTef.20250612.dmp.txt

Teria alguma coisa que eu possa fazer para resolver estes problemas?

  • Membros Pro
Postado

Ainda sobre o cancelamento, quando é chamada a CancelarTransacao, parece que ela pega o cupom da ultima rotina realizada. 

Aqui temos uma sequencia de dois adm e dois cancelamentos:

image.png.a8a800d234d448e51b166e66ca005374.png

image.png.dd527ec38832a246d540cf52f26bb567.png

Neste caso o cupom muda de acordo com o horário:

image.png.5978fe4a291000eaf13d01b2b5cbf5ac.png

image.png.13ec9d4041c8820a4042a5a735bd59af.png

E nos cancelamentos o número do cupom ficou do último adm.

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.