Jump to content

2 Dia do ACBr

Visite Stands dos Patrocinadores
Control iD, CS Devices, Elgin, Gertec, Bematech, Jetway, PlugMobile, Epson, Custom e Sweda
Inscreva-se

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

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

elixandre

Quando na minha aplicação uso o comando "Enviar Status Pagamento" ?

Recommended Posts

Estou com módulo da elgin para fazer testes e logo a homologação se tudo der certo, estou no desenvolvimento
do envio do pagamento dos cartões, estou testando o demo, e agora depois de muito 
pesquisar no fórum pintou muitas dúvidas, e se possível algum amigo que possa ajudar já agradeço
antencipamente.

No demo do ACbr temos os seguintes comandos : MFE Enviar Pagamento, Enviar Status Pagamento, Verificar Status Validador,R
4-Resposta Fiscal.

Seguindo os teste estou fazendo o seguinte :

1-MFE Enviar Pagamento
2-Com SerialPos entro no site : http://simuladorposceara.azurewebsites.net, e estou fazendo o passo para autorizar e poder seguir os passos seguintes.
3-Depois estou executando o comando do demo : Verificar Status Validador, passo IdPagamento, é confirmado com sucesso.

Quando na minha aplicação uso o comando "Enviar Status Pagamento" ?   

pois depois que executo o comando "Verificar Status Validador", se tento usar o "Enviar Status Pagamento", tem como retorno o seguinte erro : 

Uma exceção foi acionada pelo destino de uma chamada.


Arquivo de Log do teste :

ACBrSAT.Inicializado
NumeroSessao: 490378
EnviarPagamento( <Integrador><Identificador><Valor>490378</Valor></Identificador><Componente Nome="VFP-e"><Metodo Nome="EnviarPagamento"><Construtor><Parametros><Parametro><Nome>chaveAcessoValidador</Nome><Valor>25CFE38D-3B92-46C0-91CA-CFF751A82D3D</Valor></Parametro></Parametros></Construtor><Parametros><Parametro><Nome>ChaveRequisicao</Nome><Valor>26359854-5698-1365-9856-965478231456</Valor></Parametro><Parametro><Nome>Estabelecimento</Nome><Valor>10</Valor></Parametro><Parametro><Nome>SerialPos</Nome><Valor>ACBr-JUOCRVFC</Valor></Parametro><Parametro><Nome>Cnpj</Nome><Valor>14.200.166/0001-66</Valor></Parametro><Parametro><Nome>IcmsBase</Nome><Valor>0.23</Valor></Parametro><Parametro><Nome>ValorTotalVenda</Nome><Valor>1530</Valor></Parametro><Parametro><Nome>HabilitarMultiplosPagamentos</Nome><Valor>true</Valor></Parametro><Parametro><Nome>HabilitarControleAntiFraude</Nome><Valor>false</Valor></Parametro><Parametro><Nome>CodigoMoeda</Nome><Valor>BRL</Valor></Parametro><Parametro><Nome>EmitirCupomNFCE</Nome><Valor>false</Valor></Parametro><Parametro><Nome>OrigemPagamento</Nome><Valor>Mesa 1234</Valor></Parametro></Parametros></Metodo></Componente></Integrador> )
NumeroSessao: 490378 - Resposta:<?xml version="1.0" encoding="utf-8"?>
<Integrador>
  <Identificador>
    <Valor>490378</Valor>
  </Identificador>
  <IntegradorResposta>
    <Codigo>AP</Codigo>
    <Valor>Arquivo processado</Valor>
  </IntegradorResposta>
  <Resposta>
    <IdPagamento>1877265</IdPagamento>
    <Mensagem>Pagamento enviado com sucesso ao validador fiscal! O ID da transação para acompanhar o status e identificá-la no portal de ajustes é 1877265</Mensagem>
    <StatusPagamento>EnviadoAoValidador</StatusPagamento>
  </Resposta>
</Integrador>
NumeroSessao: 774904
VerificarStatusValidador( <Integrador><Identificador><Valor>774904</Valor></Identificador><Componente Nome="VFP-e"><Metodo Nome="VerificarStatusValidador"><Construtor><Parametros><Parametro><Nome>chaveAcessoValidador</Nome><Valor>25CFE38D-3B92-46C0-91CA-CFF751A82D3D</Valor></Parametro></Parametros></Construtor><Parametros><Parametro><Nome>idFila</Nome><Valor>1877265</Valor></Parametro><Parametro><Nome>cnpj</Nome><Valor>14.200.166/0001-66</Valor></Parametro></Parametros></Metodo></Componente></Integrador> )
NumeroSessao: 774904 - Resposta:<?xml version="1.0" encoding="utf-8"?>
<Integrador>
  <Identificador>
    <Valor>774904</Valor>
  </Identificador>
  <IntegradorResposta>
    <Codigo>AP</Codigo>
    <Valor>Arquivo processado</Valor>
  </IntegradorResposta>
  <Resposta>
    <CodigoAutorizacao>123456</CodigoAutorizacao>
    <Bin>123456</Bin>
    <DonoCartao>TESTE</DonoCartao>
    <DataExpiracao>01/01</DataExpiracao>
    <InstituicaoFinanceira>OPERADORA_CARTAO</InstituicaoFinanceira>
    <Parcelas>1</Parcelas>
    <UltimosQuatroDigitos>1234</UltimosQuatroDigitos>
    <CodigoPagamento>12345</CodigoPagamento>
    <ValorPagamento>1530</ValorPagamento>
    <IdFila>1877265</IdFila>
    <Tipo>VISA</Tipo>
  </Resposta>
</Integrador>

 

Share this post


Link to post
Share on other sites

Seguindo o manual do Integrador existem os fluxos de envio em cada uma das situações de POS Online, POS Offline, TEF Online e TEF Offline. 
Ao consultar cada um deles você encontrará a ordem e os métodos necessários para cada comunicação que terá que implementar.

Segue o link do manual:

Manual de utilização do Integrador Fiscal

 

Os processos que mencionei começam a ser mostrados na página 15 dele.

Share this post


Link to post
Share on other sites

Boa tarde a todos.

Estou com um problema ao enviar o pagamento realizado no TEF ao Integrador.

Utilizando o Integrador do MFe do Ceará , depois de confirmar uma transação no TEF é necessário informar ao integrador o pagamento, utilizando o comando abaixo.

RespostaStatusPagamento := TACBrSATMFe_integrador_XML(ACBr_SAT.SAT).EnviarStatusPagamento(StatusPagamentoMFe);

Após este comando preciso pegar o retorno. Estou fazendo assim:

Result := StrToIntDef(RespostaStatusPagamento.Retorno,0), o problema está que a propriedade .Retorno está vindo vazia.

 

Analisando o método RespostaStatusPagamentoR.LerXml da unit pcnVFPeR,  na linha 141, percebi que na execução do Leitor.rCampo(tcStr, 'retorno') aqui que estava vindo vazio.

RespostaStatusPagamento.Retorno := Leitor.rCampo(tcStr, 'retorno');

Para contornar a falta do Retorno, vi que em outros métodos LerXml da mesma classe, há um teste antes da execução do RespostaStatusPagamento.Retorno := Leitor.rCampo(tcStr, 'retorno')
 

Por Exemplo em TRetornoRespostaFiscalR.LerXml está assim:

 if (Pos(UpperCase('retorno'),UpperCase(Leitor.Arquivo)) <= 0) and
     (Pos(UpperCase('Integrador'),UpperCase(Leitor.Arquivo)) <= 0) then
    RetornoRespostaFiscal.IdRespostaFiscal := Leitor.Arquivo
  else
  begin
    RetornoRespostaFiscal.IdRespostaFiscal := Leitor.rCampo(tcStr, 'retorno');
    RetornoRespostaFiscal.IntegradorResposta.LerResposta(Leitor.Grupo);
  end;

 

Então seguindo o método anterior, fiz a seguinte alteração:

function TRespostaStatusPagamentoR.LerXml: boolean;   (Linha 135)
begin
  Leitor.Grupo := Leitor.Arquivo;

  RespostaStatusPagamento.Clear;


  if (Pos(UpperCase('retorno'),UpperCase(Leitor.Arquivo)) <= 0) and
     (Pos(UpperCase('Integrador'),UpperCase(Leitor.Arquivo)) <= 0) then
     RespostaStatusPagamento.Retorno := Leitor.Arquivo
  else
  begin
     RespostaStatusPagamento.Retorno := Leitor.rCampo(tcStr, 'retorno');
     RespostaStatusPagamento.IntegradorResposta.LerResposta(Leitor.Grupo);
  end;

  Result := True;
end;

 

Agora sim está retornando valor no campo Retorno.

Sugiro aos administradores, após análise de minha alteração, se for conveniente, fazer a alteração no componente.

Se estiver fazendo errado, gostaria que alguém desse-me uma luz de como pegar o retorno desta função.

 

Share this post


Link to post
Share on other sites
Em 23/02/2018 at 15:02, DonizeteFalcon disse:

Boa tarde a todos.

Estou com um problema ao enviar o pagamento realizado no TEF ao Integrador.

Utilizando o Integrador do MFe do Ceará , depois de confirmar uma transação no TEF é necessário informar ao integrador o pagamento, utilizando o comando abaixo.

RespostaStatusPagamento := TACBrSATMFe_integrador_XML(ACBr_SAT.SAT).EnviarStatusPagamento(StatusPagamentoMFe);

Após este comando preciso pegar o retorno. Estou fazendo assim:

Result := StrToIntDef(RespostaStatusPagamento.Retorno,0), o problema está que a propriedade .Retorno está vindo vazia.

 

Analisando o método RespostaStatusPagamentoR.LerXml da unit pcnVFPeR,  na linha 141, percebi que na execução do Leitor.rCampo(tcStr, 'retorno') aqui que estava vindo vazio.

RespostaStatusPagamento.Retorno := Leitor.rCampo(tcStr, 'retorno');

Para contornar a falta do Retorno, vi que em outros métodos LerXml da mesma classe, há um teste antes da execução do RespostaStatusPagamento.Retorno := Leitor.rCampo(tcStr, 'retorno')
 

Por Exemplo em TRetornoRespostaFiscalR.LerXml está assim:

 if (Pos(UpperCase('retorno'),UpperCase(Leitor.Arquivo)) <= 0) and
     (Pos(UpperCase('Integrador'),UpperCase(Leitor.Arquivo)) <= 0) then
    RetornoRespostaFiscal.IdRespostaFiscal := Leitor.Arquivo
  else
  begin
    RetornoRespostaFiscal.IdRespostaFiscal := Leitor.rCampo(tcStr, 'retorno');
    RetornoRespostaFiscal.IntegradorResposta.LerResposta(Leitor.Grupo);
  end;

 

Então seguindo o método anterior, fiz a seguinte alteração:

function TRespostaStatusPagamentoR.LerXml: boolean;   (Linha 135)
begin
  Leitor.Grupo := Leitor.Arquivo;

  RespostaStatusPagamento.Clear;


  if (Pos(UpperCase('retorno'),UpperCase(Leitor.Arquivo)) <= 0) and
     (Pos(UpperCase('Integrador'),UpperCase(Leitor.Arquivo)) <= 0) then
     RespostaStatusPagamento.Retorno := Leitor.Arquivo
  else
  begin
     RespostaStatusPagamento.Retorno := Leitor.rCampo(tcStr, 'retorno');
     RespostaStatusPagamento.IntegradorResposta.LerResposta(Leitor.Grupo);
  end;

  Result := True;
end;

 

Agora sim está retornando valor no campo Retorno.

Sugiro aos administradores, após análise de minha alteração, se for conveniente, fazer a alteração no componente.

Se estiver fazendo errado, gostaria que alguém desse-me uma luz de como pegar o retorno desta função.

 

Estava acontecendo a mesma coisa comigo, só resolveu quando utilizei o seu pcnVFPeR.pas. Obrigado.

Share this post


Link to post
Share on other sites

Bom dia.

Como estou fazendo a compatibilização do nosso software com o Integrador do CE, quando o pagamento é realizado em TEF

estou utilizando o ACBrTEFD, porém alguns campos não estão retornando no comando RespostasPendentes do ACBrTEFD,

e estes são necessários para preencher o comando EnviarStatusPagamento. 

O Software está homologado pela CliSitef, que agora está disponibilizando os mesmos como por ex: CNPJ Credenciadora, Bandeira, Codigo da Credenciadora,

Validade do Cartão, nome do dono do cartao, os ultimos quatro digitos do cartão.

Diante disto fiz alterações nas classes ACBrTEFDClass.pas e ACBrTEFDCliSiTef.pas  implementando os campos  1002, 1003, 1190.

Em anexo estou disponibilizando as mesmas para, se assim os administradores entender ser viável, colocar as alteraçoes no svn.

Não sabia se o melhor lugar para as mesmas seria aqui, mas como a implementação do integrador CE me levou a isto, então estou disponibilizando aqui.

ACBrTEFDClass.pas

ACBrTEFDCliSiTef.pas

Share this post


Link to post
Share on other sites

Bom dia a todos.

Fiz alterações também na classe ACBrTEFDClass.pas para comportar os novos campos: CNPJ Credenciadora, Bandeira, Codigo da Credenciadora,

Validade do Cartão, nome do dono do cartão, os ultimos quatro digitos do cartão, para o TEFDial. Que são solicitados pelo MFE do Ceará.

Em anexo estou disponibilizando as mesma para, se assim os administradores entenderem ser viável, colocar as alterações no svn.

 

ACBrTEFDClass.pas

  • Like 1

Share this post


Link to post
Share on other sites
Em 01/12/2017 at 15:59, elixandre disse:

Estou com módulo da elgin para fazer testes e logo a homologação se tudo der certo, estou no desenvolvimento
do envio do pagamento dos cartões, estou testando o demo, e agora depois de muito 
pesquisar no fórum pintou muitas dúvidas, e se possível algum amigo que possa ajudar já agradeço
antencipamente.

No demo do ACbr temos os seguintes comandos : MFE Enviar Pagamento, Enviar Status Pagamento, Verificar Status Validador,R
4-Resposta Fiscal.

Seguindo os teste estou fazendo o seguinte :

1-MFE Enviar Pagamento
2-Com SerialPos entro no site : http://simuladorposceara.azurewebsites.net, e estou fazendo o passo para autorizar e poder seguir os passos seguintes.
3-Depois estou executando o comando do demo : Verificar Status Validador, passo IdPagamento, é confirmado com sucesso.

Quando na minha aplicação uso o comando "Enviar Status Pagamento" ?   

pois depois que executo o comando "Verificar Status Validador", se tento usar o "Enviar Status Pagamento", tem como retorno o seguinte erro : 

Uma exceção foi acionada pelo destino de uma chamada.


Arquivo de Log do teste :

ACBrSAT.Inicializado
NumeroSessao: 490378
EnviarPagamento( <Integrador><Identificador><Valor>490378</Valor></Identificador><Componente Nome="VFP-e"><Metodo Nome="EnviarPagamento"><Construtor><Parametros><Parametro><Nome>chaveAcessoValidador</Nome><Valor>25CFE38D-3B92-46C0-91CA-CFF751A82D3D</Valor></Parametro></Parametros></Construtor><Parametros><Parametro><Nome>ChaveRequisicao</Nome><Valor>26359854-5698-1365-9856-965478231456</Valor></Parametro><Parametro><Nome>Estabelecimento</Nome><Valor>10</Valor></Parametro><Parametro><Nome>SerialPos</Nome><Valor>ACBr-JUOCRVFC</Valor></Parametro><Parametro><Nome>Cnpj</Nome><Valor>14.200.166/0001-66</Valor></Parametro><Parametro><Nome>IcmsBase</Nome><Valor>0.23</Valor></Parametro><Parametro><Nome>ValorTotalVenda</Nome><Valor>1530</Valor></Parametro><Parametro><Nome>HabilitarMultiplosPagamentos</Nome><Valor>true</Valor></Parametro><Parametro><Nome>HabilitarControleAntiFraude</Nome><Valor>false</Valor></Parametro><Parametro><Nome>CodigoMoeda</Nome><Valor>BRL</Valor></Parametro><Parametro><Nome>EmitirCupomNFCE</Nome><Valor>false</Valor></Parametro><Parametro><Nome>OrigemPagamento</Nome><Valor>Mesa 1234</Valor></Parametro></Parametros></Metodo></Componente></Integrador> )
NumeroSessao: 490378 - Resposta:<?xml version="1.0" encoding="utf-8"?>
<Integrador>
  <Identificador>
    <Valor>490378</Valor>
  </Identificador>
  <IntegradorResposta>
    <Codigo>AP</Codigo>
    <Valor>Arquivo processado</Valor>
  </IntegradorResposta>
  <Resposta>
    <IdPagamento>1877265</IdPagamento>
    <Mensagem>Pagamento enviado com sucesso ao validador fiscal! O ID da transação para acompanhar o status e identificá-la no portal de ajustes é 1877265</Mensagem>
    <StatusPagamento>EnviadoAoValidador</StatusPagamento>
  </Resposta>
</Integrador>
NumeroSessao: 774904
VerificarStatusValidador( <Integrador><Identificador><Valor>774904</Valor></Identificador><Componente Nome="VFP-e"><Metodo Nome="VerificarStatusValidador"><Construtor><Parametros><Parametro><Nome>chaveAcessoValidador</Nome><Valor>25CFE38D-3B92-46C0-91CA-CFF751A82D3D</Valor></Parametro></Parametros></Construtor><Parametros><Parametro><Nome>idFila</Nome><Valor>1877265</Valor></Parametro><Parametro><Nome>cnpj</Nome><Valor>14.200.166/0001-66</Valor></Parametro></Parametros></Metodo></Componente></Integrador> )
NumeroSessao: 774904 - Resposta:<?xml version="1.0" encoding="utf-8"?>
<Integrador>
  <Identificador>
    <Valor>774904</Valor>
  </Identificador>
  <IntegradorResposta>
    <Codigo>AP</Codigo>
    <Valor>Arquivo processado</Valor>
  </IntegradorResposta>
  <Resposta>
    <CodigoAutorizacao>123456</CodigoAutorizacao>
    <Bin>123456</Bin>
    <DonoCartao>TESTE</DonoCartao>
    <DataExpiracao>01/01</DataExpiracao>
    <InstituicaoFinanceira>OPERADORA_CARTAO</InstituicaoFinanceira>
    <Parcelas>1</Parcelas>
    <UltimosQuatroDigitos>1234</UltimosQuatroDigitos>
    <CodigoPagamento>12345</CodigoPagamento>
    <ValorPagamento>1530</ValorPagamento>
    <IdFila>1877265</IdFila>
    <Tipo>VISA</Tipo>
  </Resposta>
</Integrador>

 

por acaso você resolveu o problema ao enviar o EnviarStatusPagamento com TEF ? eu estou recebendo sempre este erro.

Uma exceção foi acionada pelo destino de uma chamada.

Para o TEF  usamos o seguinte fluxo:

EnviarPagamento -> faz o pagamento no TEF -> EnviarStatusPagamento -> gera o CF-e -> RespostaFiscal.

ja conferi o XML os dados estão corretos..porém sempre recebo este erro, se alguem ja passou por isso e puder elucidar o que foi feito eu agradeço.

 

 

Share this post


Link to post
Share on other sites
17 horas atrás, joaobuenosi disse:

por acaso você resolveu o problema ao enviar o EnviarStatusPagamento com TEF ? eu estou recebendo sempre este erro.

Uma exceção foi acionada pelo destino de uma chamada.

Para o TEF  usamos o seguinte fluxo:

EnviarPagamento -> faz o pagamento no TEF -> EnviarStatusPagamento -> gera o CF-e -> RespostaFiscal.

ja conferi o XML os dados estão corretos..porém sempre recebo este erro, se alguem ja passou por isso e puder elucidar o que foi feito eu agradeço.

 

 

Descobri!

 

os campos  de informações de BIN, Codigo de Autorizaçao, que contenham dados vindo do TEF não podem ter zeros a esquerda, caso tenham causa erro na aplicação do integrador.

juvenil... mas ok.

resolvido.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...