Ir para conteúdo
  • Cadastre-se

Erro Capturar Captcha Cnpj


Ver Solução Respondido por Junior Bindaco,
  • Este tópico foi criado há 4120 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

  • Consultores
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!

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Consultores
Postado

Bom dia!

está relacionando ao problema já mencionado aqui e em outros posts!

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

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

  • Consultores
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?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

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