Ir para conteúdo
  • Cadastre-se

dev botao

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

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...