Ir para conteúdo
  • Cadastre-se

dev botao

Erro Capturar Captcha Cnpj


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

Recommended Posts

Postado

Pessoal, a receita mudou o modo de pegar o captcha do CNPJ, deixando igual do CPF

 

agora é possível recuperar pela URL: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/captcha/gerarCaptcha.asp

 

 

ATENÇÃO

 

Retorno do Captcha agora é PNG e não mais JPG

 

em anexo fontes

ACBrConsultaCNPJ.pas

Alexandre De Carli,
Gerente de Projetos na empresa Econtabil Software.


email: [email protected]
site: http://www.extremeprogramming.wordpress.com
Pato Branco - PR

Postado

Caros amigos,

 

Primeira parte do problema era a exibição do Captcha sem dar erro e resolvi desta forma:

 

procedure TACBrConsultaCNPJ.Captcha(Stream: TStream);
var
  Img64, ImgBin, DataClientID: AnsiString;
  P: Integer;
begin
  try
    if HTTPSend.ResultCode = 200 then
    begin
      HTTPSend.Document.Position := 0;
      Stream.CopyFrom(HttpSend.Document, HttpSend.Document.Size);
 
      Stream.Position := 0;
    end;
  Except
    on E: Exception do begin
      raise EACBrConsultaCNPJException.Create('Erro na hora de fazer o download da imagem do captcha.'+#13#10+E.Message);
    end;
  end;
end;
 
 
Antes estava assim:
 
procedure TACBrConsultaCNPJ.Captcha(Stream: TStream);
var
  Img64, ImgBin, DataClientID: AnsiString;
  P: Integer;
begin
  try
    HTTPGet(GetCaptchaURL);
    if HttpSend.ResultCode = 200 then
    begin
      HTTPSend.Document.Position := 0;
      Stream.CopyFrom(HttpSend.Document, HttpSend.Document.Size);
      Stream.Position := 0;
    end;
  Except on E: Exception do begin
    raise EACBrConsultaCNPJException.Create('Erro na hora de fazer o download da imagem do captcha.'+#13#10+E.Message);
  end;
  end;
end;
 
 
Na rotina de consulta deve estar da mesma forma ue a usada na Consulta CPF e, para isto, basta olhar o exemplo de consulta CPF.
 
 
Por fim estou tentando resolver a parte de consulta, mas até agora não consegui progredir em nada.
 
Espero ter ajudado a dar um caminho para iniciarmos uma solução final.
 
Atenciosamente...
 
Marcus Vinicius Scarpelli
  • Curtir 1
Postado

Esta parte resolvi com este procedimento:
 

procedure TfrmPrincipal.LabAtualizarCaptchaClick(Sender: TObject);
var
  Stream: TMemoryStream;
  ImgArq: String;
begin
  Stream := TMemoryStream.Create;
  try
    ACBrConsultaCNPJ1.Captcha(Stream);
    ImgArq := ExtractFilePath(ParamStr(0))+PathDelim+'captch.png';
    Stream.SaveToFile( ImgArq );
    Image1.Picture.LoadFromFile( ImgArq );
 
    EditCaptcha.Clear;
    EditCaptcha.SetFocus;
  finally
    Stream.Free;
  end;
end;
Postado

Acho que vou esperar mais um pouco....
 

Estou de cabeça quente aqui...

 

Ainda não consegui resolver...

 

Se alguém tiver mais alguma forma de ajudar eu agradeço...

 

Abraços...

 

Marcus Vinicius Scarpelli

Postado

Aqui está dando erro na hora de consultar o cnpj.

Erro de List Index Out Of Bounds

Alguém está com esse problema também ?

Analista/Programador

 "Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende”

Postado

Bom, fiz duas mudanças no ACBrConsultaCNPJ.pas e consegui pegar o resultado. Segue os 2 trechos que modifiquei e o arquivo .pas final, se quiserem ver e modificar.

Lembrando que, precisa mudar, como já dito anteriormente, o carregamento do componente TImage para aceitar PNG agora. Acima ai já foi postado solução para isso.

 

 

1 - procedure TACBrConsultaCNPJ.Captcha(Stream: TStream);

procedure TACBrConsultaCNPJ.Captcha(Stream: TStream);
begin
    try
        //Passando só a URL do captcha, dava erro depois, na leitura dos campos. - Rafael
        if HttpSend.ResultCode = 200 then
        begin
            HttpSend.Document.Position := 0;
            Stream.CopyFrom(HttpSend.Document, HttpSend.Document.Size);
            Stream.Position := 0;
        end;
    Except
        on E: Exception do
        begin
            raise EACBrConsultaCNPJException.Create('Erro na hora de fazer o download da imagem do captcha.' + #13#10 + E.Message);
        end;
    end;
end;
 
2 - o inicio da function TACBrConsultaCNPJ.Consulta(const ACNPJ, ACaptcha: String;
function TACBrConsultaCNPJ.Consulta(const ACNPJ, ACaptcha: String;
    ARemoverEspacosDuplos: Boolean): Boolean;
var
    Post: TStringStream;
    Erro: String;
    Resposta: TStringList;
    StrAux: String;
begin
    Erro := ACBrValidadorValidarCNPJ(ACNPJ);
    if Erro <> '' then
        raise EACBrConsultaCNPJException.Create(Erro);
 
    Clear;
    Post := TStringStream.Create('');
    try
        Post.WriteString('origem=comprovante&');
        Post.WriteString('cnpj=' + OnlyNumber(ACNPJ) + '&');
        Post.WriteString('txtTexto_captcha_serpro_gov_br=' + Trim(ACaptcha) + '&');
        Post.WriteString('submit1=Consultar&');
        Post.WriteString('search_type=cnpj');
        Post.Position := 0;
..........

 

 

ACBrConsultaCNPJ.pas

  • Curtir 1
Postado

 

Bom, fiz duas mudanças no ACBrConsultaCNPJ.pas e consegui pegar o resultado. Segue os 2 trechos que modifiquei e o arquivo .pas final, se quiserem ver e modificar.

Lembrando que, precisa mudar, como já dito anteriormente, o carregamento do componente TImage para aceitar PNG agora. Acima ai já foi postado solução para isso.

 

 

1 - procedure TACBrConsultaCNPJ.Captcha(Stream: TStream);

procedure TACBrConsultaCNPJ.Captcha(Stream: TStream);
begin
    try
        //Passando só a URL do captcha, dava erro depois, na leitura dos campos. - Rafael
        if HttpSend.ResultCode = 200 then
        begin
            HttpSend.Document.Position := 0;
            Stream.CopyFrom(HttpSend.Document, HttpSend.Document.Size);
            Stream.Position := 0;
        end;
    Except
        on E: Exception do
        begin
            raise EACBrConsultaCNPJException.Create('Erro na hora de fazer o download da imagem do captcha.' + #13#10 + E.Message);
        end;
    end;
end;
 
2 - o inicio da function TACBrConsultaCNPJ.Consulta(const ACNPJ, ACaptcha: String;
function TACBrConsultaCNPJ.Consulta(const ACNPJ, ACaptcha: String;
    ARemoverEspacosDuplos: Boolean): Boolean;
var
    Post: TStringStream;
    Erro: String;
    Resposta: TStringList;
    StrAux: String;
begin
    Erro := ACBrValidadorValidarCNPJ(ACNPJ);
    if Erro <> '' then
        raise EACBrConsultaCNPJException.Create(Erro);
 
    Clear;
    Post := TStringStream.Create('');
    try
        Post.WriteString('origem=comprovante&');
        Post.WriteString('cnpj=' + OnlyNumber(ACNPJ) + '&');
        Post.WriteString('txtTexto_captcha_serpro_gov_br=' + Trim(ACaptcha) + '&');
        Post.WriteString('submit1=Consultar&');
        Post.WriteString('search_type=cnpj');
        Post.Position := 0;
..........

 

 

Muito bom.. Deu certinho.. Muito obrigado cara. Resolveu meu problema.

Analista/Programador

 "Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende”

Postado

Blz meu amigo....
 

Aqui deu tudo certo...

 

Conferi e testei  e 100% ok...

 

Quanto ao CNAE2 olha o exemplo e faz a adaptação no seu sistema que dá certinho...

 

Atenciosamente...

 

Marcus Vinicius Scarpelli

  • Moderadores
Postado

Boa tarde

peguei o código para comparar e subir ao svn mas com o merge marcou o arquivo todo!

usou algum formatador de código? se sim favor somente altera o necessário para funcionar e anexar novamente a unit para poder efetuar o merge!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

deu tudo certo aqui.   obrigado!

 

aproveitando....  existe alguma forma de obter a inscrição estadual?

 

Opa... Eu utilizo o AcbrNFe pra puxar a IE.

 

var lCnpj: String;

begin

    ACBrNFe1.Configuracoes.WebServices.UF            := 'MG';
    ACBrNFe1.WebServices.ConsultaCadastro.UF      := 'MG';
    ACBrNFe1.WebServices.ConsultaCadastro.CNPJ := '14.757.209/0001-09';
    ACBrNFe1.WebServices.ConsultaCadastro.Executar;
 
    lCnpj := ACBrNFe1.WebServices.ConsultaCadastro.RetConsCad.InfCad.Items[0].IE;
    ...
end;
Postado

Oi Rafael, 

Peguei o ACBrConsultaCNPJ que vc postou e testei, só que agora apareceu o erro: JPEG error #53. 

João Duarte de Azevedo
Utilsoft Soluções em Gestão Empresarial

Postado

Olá Rafael, 

Ignore o meu post anterior. O erro estava na minha rotina. 

Funcionou perfeitamente. Parabéns.

Abraço,

João Duarte de Azevedo
Utilsoft Soluções em Gestão Empresarial

  • Moderadores
Postado

Segue novamente o arquivo que modifiquei, sem fazer a formatação dos fontes.

Os 2 trechos que mudei coloquei um comentario com o nome Rafael, para facilitar a busca para quem se interessar em ver o que foi modificado.

Boa noite

ainda assim não entendi como é que após você chamar uma vez a tela e depois passar o capctha ele sabe de qual sessão está sendo passado

pois foi removido as informações?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Este tópico foi criado há 3568 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.