Rotina Verificacao CPF/CNPJ site Receita Federal

Delphi

30/08/2007

Estou precisando de uma rotina para verificacao no site da Receita Federal se o CPF/CNPJ esta ativo ou nao. Agradeço desde já.


Eremita

Eremita

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

30/08/2007

acho que isso não será possível, visto que deve ser digitado o valor da imagem de controle gerada em tempo real.
a receita fez isso justamente para [b:996e00c063]evitar[/b:996e00c063] que ´robôs´ acessem o site.

entre no [url=http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/cpf/ConsultaPublica.asp]site da receita[/url] e veja.


GOSTEI 0
Eremita

Eremita

30/08/2007

acho que isso não será possível, visto que deve ser digitado o valor da imagem de controle gerada em tempo real. a receita fez isso justamente para [b:977e6e5f4e]evitar[/b:977e6e5f4e] que ´robôs´ acessem o site. entre no [url=http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/cpf/ConsultaPublica.asp]site da receita[/url] e veja.


Alguma diga de como fazer o Delphi abrir a pagina da Receita e passar o CPF/CNPJ como parametro. Deixando com que o usuario informe o valor da imagem.


GOSTEI 0
Adriano_servitec

Adriano_servitec

30/08/2007

[quote:d8c5bf33fb=´emerson.en´]acho que isso não será possível, visto que deve ser digitado o valor da imagem de controle gerada em tempo real. a receita fez isso justamente para [b:d8c5bf33fb]evitar[/b:d8c5bf33fb] que ´robôs´ acessem o site. entre no [url=http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/cpf/ConsultaPublica.asp]site da receita[/url] e veja.


Alguma diga de como fazer o Delphi abrir a pagina da Receita e passar o CPF/CNPJ como parametro. Deixando com que o usuario informe o valor da imagem.[/quote:d8c5bf33fb]

Vou ti passar uma unit que eu fiz aqui para pesquisar certidão negativa na Receita Federal

Vc deve usar os componentes Webbrowser, dois SpeedButtons, um maskedit com o nome EdtCNPJ

Eis a unit para isso amigo
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, Buttons, ExtCtrls, ComCtrls,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  IdAntiFreezeBase, IdAntiFreeze, MSHTML, IdThreadMgrPool, IdThreadMgr,
  IdThreadMgrDefault, XPMan, Menus, Mask;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    WebBrowser1: TWebBrowser;
    StatusBar1: TStatusBar;
    Panel2: TPanel;
    Label1: TLabel;
    Image1: TImage;
    Label5: TLabel;
    Panel3: TPanel;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SBPSidHttp: TSpeedButton;
    SBFechar: TSpeedButton;
    SBPtoWB: TSpeedButton;
    IdHTTP1: TIdHTTP;
    IdAntiFreeze1: TIdAntiFreeze;
    IdThreadMgrDefault1: TIdThreadMgrDefault;
    IdThreadMgrPool1: TIdThreadMgrPool;
    XPManifest1: TXPManifest;
    MainMenu1: TMainMenu;
    Arquivos1: TMenuItem;
    Empresas1: TMenuItem;
    Memo1: TMemo;
    EdtCNPJ: TMaskEdit;
    procedure SBFecharClick(Sender: TObject);
    procedure SBPtoWBClick(Sender: TObject);
    procedure WebBrowser1ProgressChange(Sender: TObject; Progress,
      ProgressMax: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean;
var
win: IHTMLWindow2;
Olelanguage: Olevariant;
begin
if doc <> nil then
begin
try
win := doc.parentWindow;
if win <> nil then
begin
try
Olelanguage := language;
win.ExecScript(script, Olelanguage);
finally
win := nil;
end;
end;
finally
doc := nil;
end;
end;
end;


procedure FillInGMXForms(WB: ShDocVW.IWebbrowser2; IDoc1: IHTMLDocument2;
Document: Variant; P_CNPJ : string);
const
IEFields: array[1..2] of string = (´INPUT´, ´text´);
var
IEFieldsCounter: Integer;
i: Integer;
m: Integer;
ovElements: OleVariant;
begin
if Pos(´Emissão de Certidão Negativa´, Document.Title) <> 0 then
while WB.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
// contar os elementos e interagir por suas formas
IEFieldsCounter := 0;
for m := 0 to Document.forms.Length - 1 do
begin
ovElements := Document.forms.Item(m).elements;
// interagir por elemento
try
// preencher os campos
if (ovElements.item(0).tagName = IEFields[1]) and
(ovElements.item(0).type = IEFields[2]) then
begin
ovElements.item(0).Value := P_CNPJ;
Inc(IEFieldsCounter);
end;
except
// falha...
end;
end;
// se o campo estiver preenchido.
if IEFieldsCounter = 3 then ExecuteScript(iDoc1,´´,´JavaScript´);
end;

procedure TForm1.SBFecharClick(Sender: TObject);
begin
     Close; //esta speedbutton é pra fechar o form
end;


procedure TForm1.SBPtoWBClick(Sender: TObject);
var
  //esta speedbutton chama o webbrowser e preenche o campo com o numero do cnpj que vc indicou
  IDoc1: IHTMLDocument2;
  Web: ShDocVW.IWebBrowser2;
  VEdtCNPJ : String;
  I: Integer;
begin
     // Navegação - Site
     Webbrowser1.Navigate(´http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CndConjuntaInter/InformaNICertidao.asp?Tipo=1´);
     // Verica o estado de navegação se não estiver completo, tempo para cpu
     while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
        Application.ProcessMessages;
     // Pergunta pela interface TGUI do objeto
     Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1);
     // Pega a interface de controle do WebBrowser, mais ou menos isso
     Web := WebBrowser1.ControlInterface;
     vEdtCNPJ      := EdtCNPJ.Text;
     FillInGMXForms(Web, iDoc1, Webbrowser1.Document, vEdtCNPJ);//transporta o nr do edit CNPJ para o site da RF
end;

procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,
  ProgressMax: Integer);
begin
if ProgressMax = 0 then
  begin
    Label5.Caption := ´´;
    Exit;
  end;
  try
  if (Progress <> -1) and (Progress <ProgressMax> 0 then
  begin
    StatusBar1.simpletext:= formatfloat(´0.00´,progress / 1000)+´ Kbytes de ´+
    formatfloat(´0.00´,progressmax / 1000)+´ Kbytes já carregados ...´;
  End;
  If progressmax <= progress then StatusBar1.simpletext:= ´Concluído !!!´;
end;

end.



GOSTEI 0
Ferreia2

Ferreia2

30/08/2007

Pessoal bom dia,
Estou precisando fazer uma consulta em um site da Febraban porém preciso passar a U.F como parametro para febraban e clicar em um OK tem como fazer isso em Delphi?


GOSTEI 0
Fabio Cardoso

Fabio Cardoso

30/08/2007

Existe um site que disponibiliza uma api ( biblioteca, .dll) que pode ser usada em varias linguagens para consultar os dados da receita federal, sintegra e outros sites:

http://knu.com.br

Contratei aqui pra minha empresa e funciona muito bem. Usamos para confirmar dados cadastrais de clientes a partir de um CPF ou CNPJ (nome completo, razão social, situação cadastral, endereço, etc). É bom também para confirmar se a empresa existe e não apenas validar se o CNPJ ou CPF são válidos. Recomendo.
GOSTEI 0
POSTAR