Ir para conteúdo
  • Cadastre-se

dev botao

Como saber se EnviarStatusPagamento deu certo?


Ver Solução Respondido por André Ferreira de Moraes,
  • Este tópico foi criado há 2132 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Retorno com erro:

<Integrador>
  <Identificador>
    <Valor>178472</Valor>
  </Identificador>
  <IntegradorResposta>
    <Codigo>EE</Codigo>
    <Valor>Erro inesperado</Valor>
  </IntegradorResposta>
  <Resposta>
    <retorno>Uma exceção foi acionada pelo destino de uma chamada.</retorno>
  </Resposta>
</Integrador>

Retorno com sucesso:

<Integrador>
  <Identificador>
    <Valor>759788</Valor>
  </Identificador>
  <IntegradorResposta>
    <Codigo>AP</Codigo>
    <Valor>Arquivo processado</Valor>
  </IntegradorResposta>
  <Resposta>
    <IdPagamento>23322793</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 é 23322793</Mensagem>
    <StatusPagamento>EnviadoAoValidador</StatusPagamento>
  </Resposta>
</Integrador>

Eu tento acessar:

if RespostaStatusPagamento.IntegradorResposta.Codigo = 'AP' then

Mas me retorna vazio.

Link para o comentário
Compartilhar em outros sites

Beleza. 

Caso ajude, se comentar essa linha em pcnVFPeR:

function TRespostaStatusPagamentoR.LerXml: boolean;
begin
  Leitor.Grupo := Leitor.Arquivo;

  // Linha comentada
  // 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;

E adicionar essa linha em ACBrIntegrador:

function TACBrIntegrador.EnviarStatusPagamento(
  StatusPagamento: TStatusPagamento): TRespostaStatusPagamento;
var
  Comando, Resp : String;
begin
  Result := TRespostaStatusPagamento.Create;

  GerarNumeroSessao;

  StatusPagamento.Identificador := numeroSessao;
  Comando := StatusPagamento.AsXMLString;
  DoLog('EnviarStatusPagamento( '+Comando+' )');

  Resp := FComandoIntegrador.EnviaComando(numeroSessao,'EnviarStatusPagamento',Comando);

  // LINHA NOVA
  Result.IntegradorResposta := FComandoIntegrador.FIntegradorResposta;

  Result.AsXMLString := Resp;
end;

Ai sim funciona. Mas não parece ser muito aconselhável. kkk

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Já revisei o código, o @Daniel Simoes está verificando se não causou nenhum efeito colateral e em breve os ajustes serão enviados ao SVN.

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

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

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.