Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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.

Postado

Para reproduzir no demo é só inicializar o SAT e clicar em Enviar Status Pagamento.

No showmessage que tem no evento do botão ao invés de: 

ShowMessage(RespostaStatusPagamento.Retorno);

Altere para:

ShowMessage(RespostaStatusPagamento.IntegradorResposta.Codigo);

Log em anexo.

ACBrSAT.log

Postado

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

  • Este tópico foi criado há 2388 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.