Consultores Victor H. Gonzales - Panda Postado 28 Setembro, 2023 Consultores Compartilhar Postado 28 Setembro, 2023 2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". Favor leia as regras do fórum. Victor H Gonzales - Pandaaa Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord 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 !! "Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci "Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo" Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 28 Setembro, 2023 Compartilhar Postado 28 Setembro, 2023 Boa tarde pessoal, quem esta com problema na consulta do CNPJ, fiz uma função utilizando JSONResponse, simples e eficiente, estou utilizando delphi 10.3 Link para o comentário Compartilhar em outros sites More sharing options...
Sandro Felipe Adad Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 7 horas atrás, Luiz Eduardo Bodo disse: Boa tarde pessoal, quem esta com problema na consulta do CNPJ, fiz uma função utilizando JSONResponse, simples e eficiente, estou utilizando delphi 10.3 Utiliza a api free oficial do governo? caso positivo poderia compartilhar a sua solução? 1 Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 Sim utilizando a API free oficial, esta funcionando perfeitamente, de ontem pra hoje dei uma melhorada nela, encapsulando. segue a unit. Fiz uma função para chamar. function TfrmPessoas.ConsultarCNPJ(const CNPJ: string): TCNPJInfo; begin Result := TCNPJInfo.Create; try Result.Consultar(CNPJ); except on E: Exception do begin // Trate as exceções, se necessário. ShowMessage('Erro ao consultar CNPJ: ' + E.Message); Result.Free; // Libere a instância em caso de erro. Result := nil; // Defina o resultado como nulo em caso de erro. end; end; end; // MODO DE USAR... InfoCNPJ := ConsultarCNPJ(DM.TiraPontos(txtDocumento.Text)); // Substitua pelo CNPJ desejado. if InfoCNPJ.Achou = 'Sim' then begin // achou end else // não achou... espero ter ajudado, qualquer duvida ou melhorias é bem vinda... CNPJInfo.pas 1 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Alexandre de Paula Postado 29 Setembro, 2023 Consultores Compartilhar Postado 29 Setembro, 2023 1 hora atrás, Luiz Eduardo Bodo disse: API free oficial Só uma observação... www.receitaws.com.br não é oficial no sentido de ser uma fonte governamental. é um serviço particular que oferece uma opção gratuita com limitação de quantidade de consultas e não é na base do governo, podendo existir divergencias das informações. 1 Alexandre de Paula Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 9 minutos atrás, Alexandre de Paula disse: Só uma observação... www.receitaws.com.br não é oficial no sentido de ser uma fonte governamental. é um serviço particular que oferece uma opção gratuita com limitação de quantidade de consultas e não é na base do governo, podendo existir divergencias das informações. Obrigado por esclarecer, realmente não tinha me atentado a este fato, de fato na base de dados da receitaws tem um atraso de pelo 1 mes em alguns cnpj que consultei aqui, mas nao sei se a data de atualizacao da base deles é realmente sincronizada com a receita federal. mas é funcional até certo ponto. Link para o comentário Compartilhar em outros sites More sharing options...
Sandro Felipe Adad Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 1 hora atrás, Luiz Eduardo Bodo disse: Sim utilizando a API free oficial, esta funcionando perfeitamente, de ontem pra hoje dei uma melhorada nela, encapsulando. segue a unit. Fiz uma função para chamar. function TfrmPessoas.ConsultarCNPJ(const CNPJ: string): TCNPJInfo; begin Result := TCNPJInfo.Create; try Result.Consultar(CNPJ); except on E: Exception do begin // Trate as exceções, se necessário. ShowMessage('Erro ao consultar CNPJ: ' + E.Message); Result.Free; // Libere a instância em caso de erro. Result := nil; // Defina o resultado como nulo em caso de erro. end; end; end; // MODO DE USAR... InfoCNPJ := ConsultarCNPJ(DM.TiraPontos(txtDocumento.Text)); // Substitua pelo CNPJ desejado. if InfoCNPJ.Achou = 'Sim' then begin // achou end else // não achou... espero ter ajudado, qualquer duvida ou melhorias é bem vinda... CNPJInfo.pas 6.89 kB · 10 downloads Mas no teu exemplo voce não utiliza a API oficial (https://www.receitaws.com.br/v1/cnpj) e como ficaria a questão do captcha que é o assunto deste tópico? Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 Agora, Sandro Felipe Adad disse: Mas no teu exemplo voce não utiliza a API oficial (https://www.receitaws.com.br/v1/cnpj) e como ficaria a questão do captcha que é o assunto deste tópico? esta api como o amigo Alexandre comentou realmente não é oficial, nao requer captcha apenas o endereço https://www.receitaws.com.br/v1/cnpj+CNPJAQUI lembrando que esta api limita 3 consultas por minuto. Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro DouglasDll Postado 29 Setembro, 2023 Membros Pro Compartilhar Postado 29 Setembro, 2023 @Sandro Felipe Adad Aqui funcionou, parabéns pela solução e obrigado por compartilhar. Só notei um detalhe, que somente em alguns computadores não abre (erro: Invalid variant operation.). Suponho que seja alguma coisa relativa ao navegador, mas não consegui achar um padrão. Algum de vocês que usaram notaram esse problema e conseguiram achar o motivo? @joemil @Adriano Luiz de Souza @jaques.rocha @Antonio Gomes @barrys Link para o comentário Compartilhar em outros sites More sharing options...
Dempsey Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 1 hora atrás, Sandro Felipe Adad disse: Mas no teu exemplo voce não utiliza a API oficial (https://www.receitaws.com.br/v1/cnpj) e como ficaria a questão do captcha que é o assunto deste tópico? boa tarde, sabe me dizer se sua solução funciona no Delphi 2010? 1 hora atrás, Sandro Felipe Adad disse: Mas no teu exemplo voce não utiliza a API oficial (https://www.receitaws.com.br/v1/cnpj) e como ficaria a questão do captcha que é o assunto deste tópico? Acontece esse erro ao compilar no Delphi 2010. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Victor H. Gonzales - Panda Postado 29 Setembro, 2023 Consultores Compartilhar Postado 29 Setembro, 2023 Para quem não quer misturar o ACBrConsultaCNPJ para que se houver mudanças no código quebrar a implementação ou vocês trabalhar com fork. Tem a classe do ReceitaWS direta para trabalhar, só passar o JSON. MeuCNPJ := TJson.JsonToObject<TCNPJConsultaClass>(RESTResponse.Content); isso não vai funcionar em versões antigas do RAD. ReceitaWS.pas 1 Victor H Gonzales - Pandaaa Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord 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 !! "Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci "Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo" Link para o comentário Compartilhar em outros sites More sharing options...
Sandro Felipe Adad Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 45 minutos atrás, Dempsey disse: boa tarde, sabe me dizer se sua solução funciona no Delphi 2010? Acontece esse erro ao compilar no Delphi 2010. experimente comentar a linha que acusa o erro, o código neste evento é so para diminuir a tela do navegador(zoom) Link para o comentário Compartilhar em outros sites More sharing options...
Orlando Dantas Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 2 horas atrás, Luiz Eduardo Bodo disse: Obrigado por esclarecer, realmente não tinha me atentado a este fato, de fato na base de dados da receitaws tem um atraso de pelo 1 mes em alguns cnpj que consultei aqui, mas nao sei se a data de atualizacao da base deles é realmente sincronizada com a receita federal. mas é funcional até certo ponto. Eu havia testado essa API e algumas outras em um CNPJ que havia tido alterações recentes, e todas estavam me trazendo os dados antigos, a única que me trouxe os dados corretamente foi a CNPJÁ, que tem a opção de consulta Cache onde você obtêm os dados da base deles, e tem a opção ONLINE que é feita a busca dos dados na hora na receita federal, com a opção de já trazer a I.E. também, observando que a opção ONLINE é paga, mas eles têm planos bem em conta. Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 18 minutos atrás, Orlando Dantas disse: Eu havia testado essa API e algumas outras em um CNPJ que havia tido alterações recentes, e todas estavam me trazendo os dados antigos, a única que me trouxe os dados corretamente foi a CNPJÁ, que tem a opção de consulta Cache onde você obtêm os dados da base deles, e tem a opção ONLINE que é feita a busca dos dados na hora na receita federal, com a opção de já trazer a I.E. também, observando que a opção ONLINE é paga, mas eles têm planos bem em conta. obrigado pela dica Orlando, vou dar uma olhada. 1 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Victor H. Gonzales - Panda Postado 29 Setembro, 2023 Consultores Compartilhar Postado 29 Setembro, 2023 receitaws da para pesquisar tambem é só passar dias = 0 que ele consulta na serpro 1 Victor H Gonzales - Pandaaa Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord 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 !! "Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci "Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo" Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 3 minutos atrás, Victor H. Gonzales - Panda disse: receitaws da para pesquisar tambem é só passar dias = 0 que ele consulta na serpro como passar esse parametro? Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Victor H. Gonzales - Panda Postado 29 Setembro, 2023 Consultores Compartilhar Postado 29 Setembro, 2023 26 minutos atrás, Luiz Eduardo Bodo disse: como passar esse parametro? https://receitaws.com.br/v1/cnpj/{cnpj}/days/{days} Victor H Gonzales - Pandaaa Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord 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 !! "Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci "Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo" Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 29 Setembro, 2023 Compartilhar Postado 29 Setembro, 2023 2 horas atrás, Victor H. Gonzales - Panda disse: https://receitaws.com.br/v1/cnpj/{cnpj}/days/{days} Muito obrigado Link para o comentário Compartilhar em outros sites More sharing options...
Dfox Postado 1 Outubro, 2023 Compartilhar Postado 1 Outubro, 2023 exemplo com consulta cnpj basta baixar e instalar o dcef3 https://github.com/hgourvest/dcef3 https://www.mediafire.com/file/2e1xm9i8kiecerg/consulta-cnpj.rar/file Link para o comentário Compartilhar em outros sites More sharing options...
Dfox Postado 4 Outubro, 2023 Compartilhar Postado 4 Outubro, 2023 exemplo com consulta cnpj basta baixar e instalar o WebView4Delphi https://github.com/salvadordf/WebView4Delphi https://www.mediafire.com/file/95im4uas0ndm6xc/consulta=cnpj.rar/file 1 Link para o comentário Compartilhar em outros sites More sharing options...
carlessoflu Postado 5 Outubro, 2023 Compartilhar Postado 5 Outubro, 2023 Fiz uma função rápida que funciona em Delphi 7. Quem quiser usar é só alterar para os campos que usam. procedure TFCon_CNPJ.btnConsultarClick(Sender: TObject); var I: Integer; aHTTP : TACBrHTTP; Resposta : TStringList; URL : string; begin aHTTP := TACBrHTTP.Create(nil); try aHTTP.HTTPSend.Clear; aHTTP.TimeOut := 10000; URL := 'https://www.receitaws.com.br/v1/cnpj/'+F0Menu.TiraCaractere(EditCNPJ.Text)+''; try aHTTP.HTTPMethod('GET', URL); Resposta := TStringList.Create; try Resposta.Text := Trim(aHTTP.RespHTTP.Text); if Trim(LerCampo(Resposta,'nome')) = '' then application.messagebox(pchar('CNPJ não encontrado.'),'Atenção',mb_iconinformation) else begin EditTipo.text := LerCampo(Resposta,'tipo'); EditAbertura.text := LerCampo(Resposta,'abertura'); EditRazaoSocial.Text := LerCampo(Resposta,'nome'); EditPorte.Text := LerCampo(Resposta,'porte'); EditFantasia.text := LerCampo(Resposta,'fantasia'); EditEndereco.text := LerCampo(Resposta,'logradouro'); EditNumero.text := LerCampo(Resposta,'numero'); EditComplemento.text := LerCampo(Resposta,'complemento'); EditBairro.text := LerCampo(Resposta,'bairro'); EditCidade.text := LerCampo(Resposta,'municipio'); EditUF.text := LerCampo(Resposta,'uf'); EditCEP.text := StringReplace(LerCampo(Resposta,'cep'),'.','',[rfReplaceAll]);; EditSituacao.text := LerCampo(Resposta,'situacao'); EditEmail.text := LerCampo(Resposta,'email'); EditTelefone.text := LerCampo(Resposta,'telefone'); end; finally Resposta.Free; end; except on e: EACBrHTTPError do begin if pos('429',e.Message) > 0 then begin application.messagebox(pchar('Você excedeu o máximo de 3 consultas por minuto. Tente novamente mais tarde.'),'Atenção',mb_iconerror); end else application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror); end; on e: exception do begin application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror); end; end; finally aHTTP.Free; end; A função para ler os campos: function TFCon_CNPJ.LerCampo(Texto: TStringList; NomeCampo: String): String; var i : integer; linha, coluna1, coluna2: String; begin Result := ''; for i := 0 to Texto.Count-1 do begin linha := uppercase(Trim(Texto[i])); NomeCampo := uppercase(NomeCampo); coluna1 := copy(linha,1,pos(':',linha)-1); //pegar o texto antes do : coluna1 := StringReplace(Trim(coluna1),'"','',[rfReplaceAll]); //remover as aspas duplas " if coluna1 = NomeCampo then begin coluna2 := Trim(copy(linha,pos(':',linha)+1,length(linha))); //pegar o texto depois dos : coluna2 := StringReplace(Trim(coluna2),'"','',[rfReplaceAll]); //remover as aspas duplas " coluna2 := StringReplace(Trim(coluna2),',','',[rfReplaceAll]); //remover a virgula , Result := coluna2; break; end; end end; Link para o comentário Compartilhar em outros sites More sharing options...
Luiz Eduardo Bodo Postado 5 Outubro, 2023 Compartilhar Postado 5 Outubro, 2023 58 minutos atrás, carlessoflu disse: Fiz uma função rápida que funciona em Delphi 7. Quem quiser usar é só alterar para os campos que usam. procedure TFCon_CNPJ.btnConsultarClick(Sender: TObject); var I: Integer; aHTTP : TACBrHTTP; Resposta : TStringList; URL : string; begin aHTTP := TACBrHTTP.Create(nil); try aHTTP.HTTPSend.Clear; aHTTP.TimeOut := 10000; URL := 'https://www.receitaws.com.br/v1/cnpj/'+F0Menu.TiraCaractere(EditCNPJ.Text)+''; try aHTTP.HTTPMethod('GET', URL); Resposta := TStringList.Create; try Resposta.Text := Trim(aHTTP.RespHTTP.Text); if Trim(LerCampo(Resposta,'nome')) = '' then application.messagebox(pchar('CNPJ não encontrado.'),'Atenção',mb_iconinformation) else begin EditTipo.text := LerCampo(Resposta,'tipo'); EditAbertura.text := LerCampo(Resposta,'abertura'); EditRazaoSocial.Text := LerCampo(Resposta,'nome'); EditPorte.Text := LerCampo(Resposta,'porte'); EditFantasia.text := LerCampo(Resposta,'fantasia'); EditEndereco.text := LerCampo(Resposta,'logradouro'); EditNumero.text := LerCampo(Resposta,'numero'); EditComplemento.text := LerCampo(Resposta,'complemento'); EditBairro.text := LerCampo(Resposta,'bairro'); EditCidade.text := LerCampo(Resposta,'municipio'); EditUF.text := LerCampo(Resposta,'uf'); EditCEP.text := StringReplace(LerCampo(Resposta,'cep'),'.','',[rfReplaceAll]);; EditSituacao.text := LerCampo(Resposta,'situacao'); EditEmail.text := LerCampo(Resposta,'email'); EditTelefone.text := LerCampo(Resposta,'telefone'); end; finally Resposta.Free; end; except on e: EACBrHTTPError do begin if pos('429',e.Message) > 0 then begin application.messagebox(pchar('Você excedeu o máximo de 3 consultas por minuto. Tente novamente mais tarde.'),'Atenção',mb_iconerror); end else application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror); end; on e: exception do begin application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror); end; end; finally aHTTP.Free; end; A função para ler os campos: function TFCon_CNPJ.LerCampo(Texto: TStringList; NomeCampo: String): String; var i : integer; linha, coluna1, coluna2: String; begin Result := ''; for i := 0 to Texto.Count-1 do begin linha := uppercase(Trim(Texto[i])); NomeCampo := uppercase(NomeCampo); coluna1 := copy(linha,1,pos(':',linha)-1); //pegar o texto antes do : coluna1 := StringReplace(Trim(coluna1),'"','',[rfReplaceAll]); //remover as aspas duplas " if coluna1 = NomeCampo then begin coluna2 := Trim(copy(linha,pos(':',linha)+1,length(linha))); //pegar o texto depois dos : coluna2 := StringReplace(Trim(coluna2),'"','',[rfReplaceAll]); //remover as aspas duplas " coluna2 := StringReplace(Trim(coluna2),',','',[rfReplaceAll]); //remover a virgula , Result := coluna2; break; end; end end; Obrigado por compartilhar lembrando que a receitaws não e uma fonte oficial, podendo conter divergências nos dados Link para o comentário Compartilhar em outros sites More sharing options...
Andergoncalves Postado 6 Outubro, 2023 Compartilhar Postado 6 Outubro, 2023 (editado) Em 27/09/2023 at 12:57, Dfox disse: Boa tarde aqui esta o exemplo so baixar e compilar ACBrConsultaCNPJ.zip 15.97 kB · 84 downloads Boa Tarde. Primeiramente agradecer ao empenho de todos os envolvidos. Implementamos a rotina de consulta de CNPJ e está funcionando perfeitamente. Obrigado Anderson Editado 6 Outubro, 2023 por Andergoncalves 1 Link para o comentário Compartilhar em outros sites More sharing options...
Membros Pro DouglasDll Postado 9 Outubro, 2023 Membros Pro Compartilhar Postado 9 Outubro, 2023 Em 19/09/2023 at 14:39, Sandro Felipe Adad disse: ConsultaCNPJIE.dproj 50.01 kB · 135 downloads ACBrConsultaCNPJNavegar.dfm 1.21 kB · 127 downloads ConsultaCNPJIE.dprojConsultaCNPJIE.dproj 50.01 kB · 135 downloads ACBrConsultaCNPJNavegar.pas 5.51 kB · 125 downloads uConsultaCNPJ.dfm 10.71 kB · 119 downloads ACBrConsultaCNPJ.pas 17.2 kB · 117 downloads ConsultaCNPJIE.dpr 344 B · 121 downloads uConsultaCNPJ.pas 3.67 kB · 125 downloads ACBrConsultaCNPJNavegar.dfm 1.21 kB · 127 downloads ConsultaCNPJIE.dproj 50.01 kB · 135 downloads Ahh, tem de recompilar o componente substituindo essa unit na pasta nos fontes do ACBR: ..trunk2\Fontes\ACBrTCP Antonio Gomes criou um evento no componente para tratar a solicitação do captcha. if Assigned(FOnSolicitarCaptcha) then begin FOnSolicitarCaptcha(Html); RespHTTP.Text:= Html; ModoAntigo := False; end; ACBrConsultaCNPJ.pas 17.2 kB · 117 downloads Começou a dar erro Alguém de voces conseguiu resolver esse problema? Link para o comentário Compartilhar em outros sites More sharing options...
Dfox Postado 9 Outubro, 2023 Compartilhar Postado 9 Outubro, 2023 35 minutos atrás, DouglasDll disse: Começou a dar erro Alguém de voces conseguiu resolver esse problema? sim marca a opção Silent = true Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts