Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde, os endereços para consultar CPF foram alterados para HTTPS. https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp e https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublicaExibir.asp

Fiz a alteração em ACBRConsultaCPF, na minha máquina rodando windows 10 a consulta foi feita sem problema, Porem se faço a mesma consulta em uma estação com WIN XP / WIN 7, me retorna erro http 500.

Alguém pode dar uma Luz?

 

Obrigado

Postado
16 horas atrás, Daniel Simoes disse:

Por favor anexe as Units modifixadas para análise...

unit ACBrConsultaCPF;

interface

uses
  SysUtils, Classes, ACBrSocket;

type
  EACBrConsultaCPFException = class ( Exception );

  { TACBrConsultaCPF }

  TACBrConsultaCPF = class(TACBrHTTP)
  private
    FNome: String;
    FSituacao: String;
    FCPF: String;
    FDigitoVerificador: String;
    FEmissao: String;
    FCodCtrlControle: String;
    FTokenCaptcha: String;

    function VerificarErros(Str: String): String;
    function LerCampo(Texto: TStringList; NomeCampo: String): String;
  public
    procedure Captcha(Stream: TStream);
    function Consulta(const ACPF, DataNasc, ACaptcha: String;
      ARemoverEspacosDuplos: Boolean = False): Boolean;
  published
    property CPF: String Read FCPF Write FCPF;
    property Nome: String Read FNome;
    property Situacao: String Read FSituacao;
    property DigitoVerificador: String Read FDigitoVerificador;
    property Emissao: String Read FEmissao;
    property CodCtrlControle: String Read FCodCtrlControle;
  end;

implementation

uses
  ACBrUtil, ACBrValidador, synacode, synautil, strutils;

function StrEntreStr(Str, StrInicial, StrFinal: String; ComecarDe: Integer = 1): String;
var
  Ini, Fim: Integer;
begin
  Ini:= PosEx(StrInicial, Str, ComecarDe) + Length(StrInicial);
  if Ini > 0 then
  begin
    Fim:= PosEx(StrFinal, Str, Ini);
    if Fim > 0 then
      Result:= Copy(Str, Ini, Fim - Ini)
    else
      Result:= '';
  end
  else
    Result:= '';
end;

procedure TACBrConsultaCPF.Captcha(Stream: TStream);
var
  Img64, ImgBin, DataClientID: AnsiString;
  P: Integer;
begin
  try
    //DataClientID := '41ff278aba054a4cb14ab7a03d2f4c4d';
    //HTTPPost('http://captcha2.servicoscorporativos.serpro.gov.br/captcha/1.0.0/imagem', DataClientID);
//    HTTPGet('http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/CPF/captcha/gerarCaptcha.asp');
    HTTPGet('https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp');

    if HTTPSend.ResultCode = 200 then
    begin
      (*
      Img64 := RespHTTP.Text;
      P := pos('@',Img64);
      if P > 0 then
      begin
        FTokenCaptcha := copy(Img64,1,P-1);
        Img64         := copy(Img64,P+1,Length(Img64)-Length(FTokenCaptcha)+2);
      end
      else
         raise Exception.Create('');

      ImgBin := DecodeBase64(Img64);
      Stream.Write(Pointer(ImgBin)^,Length(ImgBin));
      *)
      HTTPSend.Document.Position := 0;
      Stream.CopyFrom(HttpSend.Document, HttpSend.Document.Size);

      Stream.Position := 0;
    end;
  Except
    on E: Exception do begin
      raise EACBrConsultaCPFException.Create('Erro na hora de fazer o download da imagem do captcha.'+#13#10+E.Message);
    end;
  end;
end;

function TACBrConsultaCPF.VerificarErros(Str: String): String;
var
  Res: String;
begin
  Res := '';
  if Res = '' then
    if Pos( ACBrStr('Os caracteres da imagem não foram preenchidos corretamente'), Str) > 0 then
      Res := 'Os caracteres da imagem não foram preenchidos corretamente.';

  if Res = '' then
    if Pos(ACBrStr('O número do CPF não é válido. Verifique se o mesmo foi digitado corretamente.'), Str) > 0 then
      Res := 'O número do CPF não é válido. Verifique se o mesmo foi digitado corretamente.';

  if Res = '' then
    if Pos(ACBrStr('Não existe no Cadastro de Pessoas Jurídicas o número de CPF informado. '+
                   'Verifique se o mesmo foi digitado corretamente.'), Str) > 0 then
      Res := 'Não existe no Cadastro de Pessoas Jurídicas o número de CPF informado. '+
             'Verifique se o mesmo foi digitado corretamente.';

  if Res = '' then
    if Pos(ACBrStr('a. No momento não podemos atender a sua solicitação. Por favor tente mais tarde.'), Str) > 0 then
      Res := 'Erro no site da receita federal. Tente mais tarde.';

  Result := ACBrStr(Res);
end;

function TACBrConsultaCPF.LerCampo(Texto : TStringList ; NomeCampo : String
  ) : String ;
var
  i : integer;
  linha : String;
begin
  NomeCampo := ACBrStr(NomeCampo);
  Result := '';
  for i := 0 to Texto.Count-1 do
  begin
    linha := Texto;
    if Pos(NomeCampo, linha) > 0 then
    begin
      Result := Trim(StringReplace(linha, NomeCampo, ' ',[rfReplaceAll]));
      break;
    end;
  end
end;

function TACBrConsultaCPF.Consulta(const ACPF, DataNasc, ACaptcha: String;
  ARemoverEspacosDuplos: Boolean): Boolean;
var
  Post: TStringStream;
  Erro: String;
  Resposta : TStringList;
begin
  Erro := ACBrValidadorValidarCPF( ACPF ) ;
  if Erro <> '' then
     raise EACBrConsultaCPFException.Create(Erro);

  //txtCPF=11122334410&txtToken_captcha_serpro_gov_br=299218104152138191166941752496584741018616278361624164&txtTexto_captcha_serpro_gov_br=ZCI8B9&Enviar=Consultar
  Post:= TStringStream.Create('');
  try

   //acredito que irão mudar esse tempTxtCPF, tempTxtNascimento, temptxtToken e temptxtTexto_captcha_serpro_gov_br para como era anteriormente
    Post.WriteString('tempTxtCPF='+ACPF+'&');
    Post.WriteString('tempTxtNascimento='+datanasc+'&');
    Post.WriteString('temptxtToken_captcha_serpro_gov_br='+FTokenCaptcha+'&');
    Post.WriteString('txtTexto_captcha_serpro_gov_br='+Trim(ACaptcha)+'&');
    Post.WriteString('temptxtTexto_captcha_serpro_gov_br='+Trim(ACaptcha)+'&');
    Post.WriteString('Enviar=Consultar');

    Post.Position:= 0;

    HttpSend.Clear;
    HttpSend.Document.Position:= 0;
    HttpSend.Document.CopyFrom(Post, Post.Size);
    HTTPSend.MimeType := 'application/x-www-form-urlencoded';
//    HTTPPost('http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublicaExibir.asp');
    HTTPPost('https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublicaExibir.asp');

    Erro := VerificarErros(RespHTTP.Text);

    if Erro = '' then
    begin
      Result:= True;
      Resposta := TStringList.Create;
      try
        Resposta.Text := StripHTML(RespHTTP.Text);
        RemoveEmptyLines( Resposta );

        //DEBUG:
        //Resposta.SaveToFile('C:\temp\cpf.txt');

        FCPF      := LerCampo(Resposta,'No do CPF:');
        FNome     := LerCampo(Resposta,'Nome da Pessoa Física:');
        FSituacao := LerCampo(Resposta,'Situação Cadastral:');
        FEmissao  := LerCampo(Resposta,'Comprovante emitido às:');
        FCodCtrlControle   := LerCampo(Resposta,'Código de controle do comprovante:');
        FDigitoVerificador := LerCampo(Resposta,'Digito Verificador:');

      finally
        Resposta.Free;
      end ;

      if Trim(FNome) = '' then
        raise EACBrConsultaCPFException.Create('Não foi possível obter os dados.');

      if ARemoverEspacosDuplos then
      begin
        FNome := RemoverEspacosDuplos(FNome);
      end;
    end
    else
    begin
      Result:= False;
      raise EACBrConsultaCPFException.Create(Erro);
    end;
  finally
    Post.Free;
  end;
end;
end.
 

  • Fundadores
Postado

Você ainda usa o Trunk1 ? Seus fontes estão bem diferentes do original no trunk2

http://www.projetoacbr.com.br/forum/announcement/18-mudanças-no-projeto-acbr-como-um-todo-e-exclusão-do-trunk1/

 

 

 

 

 

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.

Postado
1 hora atrás, Daniel Simoes disse:

Você ainda usa o Trunk1 ? Seus fontes estão bem diferentes do original no trunk2

http://www.projetoacbr.com.br/forum/announcement/18-mudanças-no-projeto-acbr-como-um-todo-e-exclusão-do-trunk1/

 

 

 

 

 

Fiz a atualização e da o mesmo erro.

Se acesso o endereço https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp pelo navegador, abre sem problema.

Porem se vou fazer a consulta pela aplicação me retorna o seguinte erro em anexo

 

errocpf.png

Postado
13 minutos atrás, Daniel Simoes disse:

Para propor melhorias nos fontes, por favor certifique de estar usando a última versão do SVN...

Ok valeu, estou usando a ultima versão.

Vou quebrar a cabeça aqui

Obrigado

Postado
13 minutos atrás, Mariana Domingues disse:

Edrian, muito obrigada! Você me salvou s2

Que bom que pra vc funcionou, eu ainda tenho problema em máquinas usando Windows XP e 7

Postado
Em 13/06/2016 at 16:15, Edrian disse:

Boa tarde, os endereços para consultar CPF foram alterados para HTTPS. https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp e https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublicaExibir.asp

Fiz a alteração em ACBRConsultaCPF, na minha máquina rodando windows 10 a consulta foi feita sem problema, Porem se faço a mesma consulta em uma estação com WIN XP / WIN 7, me retorna erro http 500.

Alguém pode dar uma Luz?

 

Obrigado

oi Mariana, bom dia.

Conseguiu uma solução?

Pois, to com o mesmo problema.

 

Abraço

  • Fundadores
Postado

Veja... vamos pela lógica... se funciona uma vez... então o componente está correto... e nada precisa ser modificado nele...

Se está intermitente, o problema só pode estar no Servidor da SEFAZ...  Não há o que corrigir/modificar do lado do componente...

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.

Postado

Galera, estava tendo o mesmo problema mesmo depois de atualizando o Acbr. Descobri que é preciso das dlls "libeay32.dll" e "ssleay32.dll" na pasta system do windows. Se for x64 colocar na pasta "\Windows\SysWOW64" também.

Espero ter ajudado.

  • Fundadores
Postado

Humm.. bem lembrado... o ACBr usa a Synapse, que usará o OpenSSL para conexão segura... isso ocorre pois o endereço foi modificado para HTTPS

O tópico abaixo, explica mais sobre isso...

 

 

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.

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

The popup will be closed in 10 segundos...