Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Pessoal a partir do conhecimento adquirido no AcbrConsultaCNPJ estou codificando um componente para Consulta do Sintegra, se tiverem interesse compartilho com vocês. o código esta padronizado no formato do Consulta CNPJ.

abaixo alguns prints do "feito"

Sintegra - ES - Não possui captcha
es.jpg


Sintegra - BA - Não possui captcha

ba.jpg

Sintegra - SP - Possui Captcha do proprio site

sp.jpg

Sintegra de MG - Possui Recaptcha - Google

mg.jpg

Sintegra de RJ - Possui Recaptcha - Google 

rj.jpg

 

ACBrConsultaSintegra.pas

Editado por Jefferson Lupinacci
Adicionado Rio de Janeiro
  • Curtir 3

Jefferson Lupinacci
Analista Desenvolvedor Java Sr. em Zara.com - Inditex - Departamento de Logística e Transporte Global - A Coruña / Espanha

[email protected] / [email protected]
Linkedin; https://www.linkedin.com/in/jeffersonlupinacci/

 

Postado
Agora, Daniel Simoes disse:

A ideia é ter opção para consulta do Sintegra de todos os estados ?

Você está implementando usando Herança de classes ?

não necessito de herança de classes veja que a consulta é muito simples o fonte atual esta anexado

 

 

Jefferson Lupinacci
Analista Desenvolvedor Java Sr. em Zara.com - Inditex - Departamento de Logística e Transporte Global - A Coruña / Espanha

[email protected] / [email protected]
Linkedin; https://www.linkedin.com/in/jeffersonlupinacci/

 

  • Fundadores
Postado

Acho que separar em classes e usar herança, seria uma boa ideia.. afinal são mais de 20 estados... e notei que já existem implementações específicas, como no caso o método "GetCaptchaURL"... será complicado mantê-lo para muitos estados...

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
Em 29/04/2016 at 12:59, Daniel Simoes disse:

Acho que separar em classes e usar herança, seria uma boa ideia.. afinal são mais de 20 estados... e notei que já existem implementações específicas, como no caso o método "GetCaptchaURL"... será complicado mantê-lo para muitos estados...

Fiquei ausente o fim de semana por isso não dei continuidade no post

O Fonte agora se encontra disponível para a comunidade se alguém se dispor a alterá-lo e gerar as interfaces ficarei muito grato, vendo que tenho que terminar este cadastro em 15 dias e os 5 estados que me foram pedidos estão prontos.

Agora se alguém precisar de alguma ajuda para decifrar os captchas do google estarei a disposição para o auxilio da tarefa.

Jefferson Lupinacci
Analista Desenvolvedor Java Sr. em Zara.com - Inditex - Departamento de Logística e Transporte Global - A Coruña / Espanha

[email protected] / [email protected]
Linkedin; https://www.linkedin.com/in/jeffersonlupinacci/

 

  • 2 semanas depois ...
Postado
Em 14/05/2016 at 14:30, sidnei_alves1 disse:

Oi, Comecei hoje a dar uma olhada, mais nao consegui fazer funciona, poderia me dar uma ajuda?

 

Claro Sidnei_alves1 me passe a sua dúvida que lhe ajudo a resolver

Jefferson Lupinacci
Analista Desenvolvedor Java Sr. em Zara.com - Inditex - Departamento de Logística e Transporte Global - A Coruña / Espanha

[email protected] / [email protected]
Linkedin; https://www.linkedin.com/in/jeffersonlupinacci/

 

  • 3 semanas depois ...
Postado
4 horas atrás, Fernando Rodrigo disse:

bom dia pessoal, alguem deu continuidade ao componente ?


 

Citar

 

bom dia jefferson, peguei a sua unit para consulta do sintegra e estou tentando fazer para o estado de goias, so que não estou entendendo bem como ele faz.

poderia me dar uma ajuda

o site para consulta em goias é

http://appasp.sefaz.go.gov.br/Sintegra/Consulta/default.asp

vc poderá utilizar o cnpj 37.304.771/0001-82 

 

 


Primeiras Considerações: teremos que analisar o metodo de comunicação que esta sendo empregado entre o cliente e o servidor, e como isso é feito
utlizando um analizador de trafego http  eu uso o Telerik Fiddler

Acessando o Site da Sefaz de Goias

 

Postando os dados e vendo o seu comportamento

Acessando o Site

site acessado. cookie salvo.jpg


Postando o Formulário e Analisando o comportamento

postado com sucesso e html recebido.jpg


Para onde a solicitação foi encaminhada
pra onde foi postado.jpg

 


O Que queremos para o ACBr

 

o que queremos.jpg


Passo a Passo:

Abra o Fiddler, e o Browser de sua preferencia
no Fiddler Aperte Ctrl+X para limpar todo o log de histórico e acesse o url
PASSO1.jpg

sua tela deverá ser similar a tela acima
PASSO2.jpg

Na Aba TextView estão os parametros que foram passados de um url para o outro, repare que vc deverá alterar o &CNPJ= para o cnpj que vc quer postar
e o &Doc= Tambem

PASSO3.jpg

Cada Post.WriteString() equivale a um parametro que gostariamos de postar ao servidor

PASSO4.jpg

  • Curtir 1

Jefferson Lupinacci
Analista Desenvolvedor Java Sr. em Zara.com - Inditex - Departamento de Logística e Transporte Global - A Coruña / Espanha

[email protected] / [email protected]
Linkedin; https://www.linkedin.com/in/jeffersonlupinacci/

 

Postado

nao sei o que estou fazendo de errado, mas não retorna nada, ja olhei os anexos e não consigo achar o problema. 

ja mudei os parametros, voltei o que era antes, olhei no retorno, coloquei os parametros novamente e retorna zerado.

 

 

    Post.WriteString('CNPJ='+OnlyNumber(ACNPJ)+'&');
    Post.WriteString('TipoDoc=2');
    Post.WriteString('Doc='+OnlyNumber(ACNPJ)+'&');
    Post.WriteString('CCE='+OnlyNumber(AInscricaoEstadual)+'&');
//    Post.WriteString('btCGC=consultarSintegra()');
    Post.WriteString('btCGC=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://appasp.sefaz.go.gov.br/Sintegra/Consulta/default.asp');

Postado (editado)

abri o programa que vc me passou e segui os passos so que não esta funcionando

 

    Post.WriteString('tCNPJ='+OnlyNumber(ACNPJ)+'&');
    Post.WriteString('rTipoDoc=2');
    Post.WriteString('tDoc='+OnlyNumber(ACNPJ)+'&');
    Post.WriteString('tCCE='+OnlyNumber(AInscricaoEstadual)+'&');
    Post.WriteString('tCPF='+OnlyNumber(AInscricaoEstadual)+'&');
    Post.WriteString('btCGC=consultarSintegra');
    Post.Position:= 0;

    HttpSend.Clear;
    HttpSend.Document.Position:= 0;
    HttpSend.Document.CopyFrom(Post, Post.Size);
    HTTPSend.MimeType := 'application/x-www-form-urlencoded';
    HTTPPost('http://appasp.sefaz.go.gov.br/Sintegra/Consulta/default.asp');

 

precido que me ajude somente nesse primeiro para saber os passos de onde posso pegar as informações
 

Editado por Fernando Rodrigo
Postado (editado)

Desculpe a Demora pra Responder mas esta aqui o Seu Retorno. "Vou tirar ferias no fim do mês - AUMENTO DE CARGA DE TRABALHO"

Primeiramente vc precisa acessar a página principal do site utilizando o protocolo HTTP 1.1 pois o site usa Cookies e precisamos dele para ser passado para o url seguinte.
quando um site usa o captcha pegamos o cookie no captcha neste caso vou pegar diretamente na solicitação de 'GO'

Ficando Assim o Procedimento

procedure Consulta_GO();
  begin

    HttpSend.ProxyHost := 'localhost'; // Interceptando por Dentro do PROXY do Feedler para o Delphi ser identificado como um Browser
    HTTPSend.ProxyPort := '8888';

    { Protocolo do Canal HTTP Versão 1.1 }
    HTTPSend.KeepAlive := true;
    HTTPSend.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1';
    HTTPSend.Headers.Add('Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3');
    HTTPSend.Clear;
    HTTPSend.Protocol  := '1.1';
    HTTPSend.Cookies.Clear;
    HTTPGet('http://appasp.sefaz.go.gov.br/Sintegra/Consulta/default.asp');

    Post.WriteString('rTipoDoc=2&');
    Post.WriteString('tDoc='+ OnlyNumber(ACNPJ)+'&');
    Post.WriteString('tCCE=&');
    Post.WriteString('tCNPJ='+ OnlyNumber(ACNPJ)+'&');
    Post.WriteString('tCPF=&');
    Post.WriteString('btCGC=Consulta=&');
    Post.WriteString('zion.SystemAction=consultaSintegra()&');
    Post.WriteString('zion.OnSubmited&');
    Post.WriteString('zion.FormElementPosted=zionFormID_1&');
    Post.WriteString('zionPostMethod=&');
    Post.WriteString('zionRichValidator=true&');
    Post.Position:= 0;

    HttpSend.Clear;
    HttpSend.Document.Position:= 0;
    HttpSend.Document.CopyFrom(Post, Post.Size);
    HTTPSend.MimeType := 'application/x-www-form-urlencoded';
    HTTPPost('http://appasp.sefaz.go.gov.br/Sintegra/Consulta/consultar.asp');

    Erro := VerificarErros(RespHTTP.Text, AUF);
    if Erro = '' then
    begin
      Result:= True;
      Resposta := TStringList.Create;
      try
        Resposta.Text := StripHTML(RespHTTP.Text);
        RemoveEmptyLines( Resposta );
        Resposta.Text := StringReplace(Resposta.Text, ' ', '', [rfReplaceAll]);
        FCNPJ                := LerCampo(Resposta,'CNPJ:');
        FInscricaoEstadual   := LerCampo(Resposta,'Inscrição Estadual - CCE :');
        FRazaoSocial         := LerCampo(Resposta,'Nome Empresarial:');
        FEndereco            := LerCampo(Resposta,'LOGRADOURO:');
        FNumero              := LerCampo(Resposta,'Número:');
        FComplemento         := LerCampo(Resposta,'Complemento:');
        FBairro              := LerCampo(Resposta,'Bairro:');
        FCidade              := LerCampo(Resposta,'Município:');
        FUF                  := LerCampo(Resposta,'UF:');
        FCEP                 := OnlyNumber( LerCampo(Resposta,'CEP:') ) ;
        if FCEP <> '' then
          FCEP               := copy(FCEP,1,5)+'-'+copy(FCEP,6,3) ;
        FTelefone            := LerCampo(Resposta, 'Telefone:');
        FAtividadeEconomica  := LerCampo(Resposta, 'Atividade Econômica:');
        FDataInicioAtividade := StringToDateTimeDef(LerCampo(Resposta,'Data de Inicio de Atividade:'),0);
        FSituacao            := LerCampo(Resposta, 'Situação Cadastral Vigente:');
        FDataSituacao        := StringToDateTimeDef(LerCampo(Resposta,'Data desta Situação Cadastral:'),0);
        FRegimeApuracao      := LerCampo(Resposta, 'Regime de Apura&ccedil;&atilde;o:');
        FDataEmitenteNFe     := StringToDateTimeDef(LerCampo(Resposta,'Emitente de NFe desde:'),0);
      finally
        Resposta.Free;
      end ;
    end
    else
    begin
      Result:= False;
      raise EACBrConsultaSintegra.Create(Erro);
    end;
  end;



Fiddler.jpg


 

a.html

Editado por Jefferson Lupinacci

Jefferson Lupinacci
Analista Desenvolvedor Java Sr. em Zara.com - Inditex - Departamento de Logística e Transporte Global - A Coruña / Espanha

[email protected] / [email protected]
Linkedin; https://www.linkedin.com/in/jeffersonlupinacci/

 

  • 2 meses depois ...
  • 10 meses depois ...
  • Este tópico foi criado há 1705 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.