Jump to content

Compre o Delphi
Com até 30% de desconto
e parcelado em até 12x sem juros

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Marcos_M

MFe pela DLL Envio de pagamento

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

Share this post


Link to post
Share on other sites

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.

  • Like 1
  • Confused 1

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Boa tarde,

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

Att.

  • Like 1

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

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

Share this post


Link to post
Share on other sites

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;

 

  • Like 1
  • Thanks 2

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other 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.

  • Like 4

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

-Edsger W. Dijkstra

Share this post


Link to post
Share on other sites

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
 

Share this post


Link to post
Share on other sites
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.

  • Like 2

Consultor SAC ACBr André Ferreira de Moraes
DJPDV - Frente de caixa SIMPLES e COMPLETO

DJSystem

Share this post


Link to post
Share on other sites

Obrigado por reportar.

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

  • Like 1

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...