Ir para conteúdo
  • Cadastre-se

dev botao

MFe pela DLL Envio de pagamento


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

Recommended Posts

Bom dia.

Estou implantando a opção de emissão via DLL do MFE do Ceará para não utilizar mais o Integrador. A emissão deu certo, os testes também, mas na hora que fui fazer um envio de pagamento ele da access violation, abri o demo e acontece a mesma coisa. Segue em anexo um print da demo do ACBr com o erro e as configurações.

Como ficou essa questão do envio do pagamento do MFE ainda vai ser usado?

Outra questão, quando tento gerar o Log utilizando a DLL ele gera o arquivo em branco, quando uso pelo integrador funciona, poderiam verificar?

Obrigado!

Print.PNG

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

De acordo com as regras  da SEFAZ-CE o integrador ainda sim precisa estar instalado na maquina do cliente. Não sei se realmente causa seu problema, mas vale a pena verificar.

Att.

  • Curtir 1
  • Confuso 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Boa tarde @Juliana Tamizou tudo bem? Estou com o mesmo problema citado a cima.

Eu tenho o integrador instalado, ele está aberto e mesmo assim o erro acontece, estou utilizando a dll que o próprio integrador disponibiliza na pasta onde foi instalado: "C:\Program Files (x86)\SEFAZ-CE\Driver MFE\Biblioteca de funções\mfe.dll". O Drive que eu estou usando é a versão 01.05 (Comunicação direta) baixei direto da página de dowloads do SEFAZ-CE, porém esse drive não comunica com o integrador, para isso tem que usar a versão do drive 01.04 que não comunica com a DLL, eu não consigo utilizar as duas ferramentas juntas, teria alguma forma de fazer isso?

Obrigado.

"A arte de programar consiste em organizar e dominar a complexidade." 🤖

-Edsger W. Dijkstra

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Boa tarde.

Não estou conseguindo debugar porque ele só carrega a DLL se eu executo por fora do delphi. Usando Showmessage identifiquei que o Acess violation acontece quando vai alimentar o TRespostaPagamento com o retorno do TEnviaPagamento.

procedure TForm1.btMFEEnviarPagamentoClick(Sender: TObject);
var
  PagamentoMFe : TEnviarPagamento;
  RespostaPagamentoMFe : TRespostaPagamento;
begin
  PagamentoMFe := TEnviarPagamento.Create;
  try
    with PagamentoMFe do
    begin
      Clear;
      ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';
      ChaveRequisicao := '26359854-5698-1365-9856-965478231456';
      Estabelecimento := '10';
      SerialPOS := InputBox('SerialPOS','Informe o Serial do POS','ACBr-'+RandomName(8));
      CNPJ := edtEmitCNPJ.Text;
      IcmsBase := 0.23;
      ValorTotalVenda := 1530;
      HabilitarMultiplosPagamentos := True;
      HabilitarControleAntiFraude := False;
      CodigoMoeda := 'BRL';
      EmitirCupomNFCE := False;
      OrigemPagamento := 'Mesa 1234';
    end;
    RespostaPagamentoMFe := TACBrSATMFe_integrador_XML(ACBrSAT1.SAT).EnviarPagamento(PagamentoMFe); //Aqui
    ShowMessage(IntToStr(RespostaPagamentoMFe.IDPagamento)); 
  finally
    PagamentoMFe.Free;
  end;
end;

A Função de Enviar pagamento passa normal o problema esta quando o "RespostaPagamentoMFe" recebe o que ela retorna.

Poderiam verificar por favor?

Muito obrigado.

"A arte de programar consiste em organizar e dominar a complexidade." 🤖

-Edsger W. Dijkstra

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Boa tarde pessoal.

Fazendo alguns testes aqui consegui resolver o erro mudando a linha

    RespostaPagamentoMFe := TACBrSATMFe_integrador_XML(ACBrSAT1.SAT).EnviarPagamento(PagamentoMFe);

para

RespostaPagamentoMFe := ACBrIntegrador1.EnviarPagamento(PagamentoMFe);

ai o access violation não acontece mais.

Se caso queiram dar uma olhada no componente eu agradeço.

Obrigado

"A arte de programar consiste em organizar e dominar a complexidade." 🤖

-Edsger W. Dijkstra

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde,

Obrigada pela análise, adicionada para validação.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Modifiquei o Demo... além do "cast" sem teste, ainda havia um "Memory Leak"...
eu particularmente, não gosto de métodos que criam e retornam Objetos... (mas foi implementado dessa maneira)

procedure TForm1.btMFEEnviarPagamentoClick(Sender: TObject);
var
  PagamentoMFe : TEnviarPagamento;
  RespostaPagamentoMFe : TRespostaPagamento;
begin
  RespostaPagamentoMFe := Nil;
  PagamentoMFe := TEnviarPagamento.Create;
  try
    with PagamentoMFe do
    begin
      Clear;
      ChaveAcessoValidador := '25CFE38D-3B92-46C0-91CA-CFF751A82D3D';
      ChaveRequisicao := '26359854-5698-1365-9856-965478231456';
      Estabelecimento := '10';
      SerialPOS := InputBox('SerialPOS','Informe o Serial do POS','ACBr-'+RandomName(8));
      CNPJ := edtEmitCNPJ.Text;
      IcmsBase := 0.23;
      ValorTotalVenda := 1530;
      HabilitarMultiplosPagamentos := True;
      HabilitarControleAntiFraude := False;
      CodigoMoeda := 'BRL';
      EmitirCupomNFCE := False;
      OrigemPagamento := 'Mesa 1234';
    end;

    if ACBrSAT1.SAT is TACBrSATMFe_integrador_XML then
      RespostaPagamentoMFe := TACBrSATMFe_integrador_XML(ACBrSAT1.SAT).EnviarPagamento(PagamentoMFe)
    else
      RespostaPagamentoMFe := ACBrIntegrador1.EnviarPagamento(PagamentoMFe);

    if Assigned(RespostaPagamentoMFe) then
      ShowMessage(IntToStr(RespostaPagamentoMFe.IDPagamento));
  finally
    PagamentoMFe.Free;
    if Assigned(RespostaPagamentoMFe) then
      RespostaPagamentoMFe.Free;
  end;
end;

 

  • Curtir 1
  • Obrigado 2
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

Bom dia.

Muito Obrigado @Daniel Simoes, e lembrando pra quem for implementar o MFE do Ceará sem o integrado. A opção de envio via DLL funciona apenas para Envio, Cancelamento e Inutilização, se foi enviar o pagamento POS tem que ter o integrador rodando pois ainda usa ele.

Obrigado.

  • Curtir 4

"A arte de programar consiste em organizar e dominar a complexidade." 🤖

-Edsger W. Dijkstra

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • Moderadores
1 hora atrás, Bruno Ravel disse:

estou com o seguinte erro

EACBrSATErro - Erro ao carregar a função: AssociarAssinatura na Biblioteca: C:\Program Files (x86)\SEFAZ-CE\Driver MFE\Biblioteca de funções\mfe.dll
 

Tente colocar a DLL na mesma pasta que seu executável.

  • Curtir 2
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Administradores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1635 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.