Jump to content

E-Fatura: Login e Obter detalhes dos documentos do adquirente


Recommended Posts

Boa tarde,

Solicito a ajuda dos mais experientes nesta matéria, por forma a fornecerem alguma orientação de como executar a função descrita no titulo, ou a indicação de alguns tutoriais, após longas pesquisas nada encontrei, nem no site da Administração Tributária, penso que o caminho a seguir não será por Webservices, pois a ideia é obter os documentos e não registar novos documentos, a linguagem de programação que utilizo é PHP.

Agradeço toda a ajuda que me possam dar, na certeza porem de que estarei pronto para partilhar com outros, o meu pouco conhecimento em matéria de programação. 

Link to comment
Share on other sites

Se procurares, vais ver que este assunto já foi aqui discutido.

Dizes "obter detalhes". Já consegues obter os totais?

Se sim, o conceito é o mesmo, mas o resultado obtido não é um json apenas, mas uma página inteira, onde terás que descobrir e ler o array json.

webservice que é bom, népia não há.

Link to comment
Share on other sites

Boa tarde a todos

após a resposta do menbro derrerter e uma pesquisa mais aprofundada no forum lá encontrei alguns topicos que me abriram o caminho para a função que pretendo implementar, no entanto e como devem calcular ainda surge imensas dúvidas, as quais penso disipar com as vossa ajuda, assim implementei o seguinte código que transcrevo de seguida:
 

<?php
$url="https://faturas.portaldasfinancas.gov.pt/json/obterDocumentosAdquirente.action?dataInicioFilter=2014-11-01&dataFimFilter=2015-01-12&ambitoAquisicaoFilter=TODOS";
$login_url="https://www.acesso.gov.pt/jsp/loginRedirectForm.jsp?path=painelAdquirente.action";
// Inicia o cURL
$ch = curl_init();
// Define a URL original do formulário de login
curl_setopt($ch, CURLOPT_URL, $login_url);
// Habilita o protocolo POST
curl_setopt ($ch, CURLOPT_POST, 1);
// Define os parâmetros que serão enviados usuário e senha
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'partiD=EFPF&username=xxxxxxxxx&password=xxxxxxxxx');
// Imita o comportamento patrão dos navegadores: manipular cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
// Define o tipo de transferência
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// Executa a requisição
$acesso = curl_exec ($ch);
echo $acesso."<br>";
// Define uma nova URL para ser chamada (após o login)
curl_setopt($ch, CURLOPT_URL, $url);
// Executa a segunda requisição
$faturas = curl_exec ($ch);
// Encerra o cURL
curl_close ($ch);
// descodifica json
$jsonDecode = (json_decode($faturas, true));
var_dump ($jsonDecode);
?>

como é obvio o utilizador e password sao ficticios, no entanto recebo a seguinte mensagem de erro, que penso estar relacionada com o login

Error 500--Internal Server Error

From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:

10.5.1 500 Internal Server Error

The server encountered an unexpected condition which prevented it from fulfilling the request.

porque dará este erro ?

qual será o caminho a seguir ?

os tópicos que me orientaram foram os seguintes e desde já o meu obrigado a todos eles:

 

https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=574774

https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=598219

https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=591157

Link to comment
Share on other sites

  • 1 year later...
  • 7 months later...
  • 5 weeks later...
Em 20/07/2018 às 18:18, carlos sousa 2015 disse:

Viva,

Já conseguiste ultrapassar? ou seja autenticas-te e obtens os documentos?

 

Abr

Olá Bom dia.

Desculpe a ousadia. Tem conhecimento de alguma aplicação que importe as facturas do efactura com as matérias colectáveis e os IVA's respectivos sem ser o ficheiro csv disponibilizado pela AT?

Hélder Viegas

Link to comment
Share on other sites

  • 1 month later...
3 horas atrás, Thiago disse:

Boas.

Tenho um código funcional em C# que faz o download das faturas. Se houver interesse me avisem.

Basicamente precisa fazer um GET e dois POSTS para conseguir logar e fazer o parse do HTML depois.

Meu e-mail thiagov@me.com

Viva,

consegue fazer o download, sem o limite de 300, qualquer que seja o filtro/sem filtros?

cps.

Link to comment
Share on other sites

1 hora atrás, Thiago disse:

até onde percebi, trata-se de uma limitação do próprio código das finanças.

sendo assim, tenho contornado isto combinando os filtros (tipo de fatura, nif, número da fatura, etc.).

obrigado.
também tinha essa ideia como também tentado "forçar" outros parâmetros e há sempre um limite nos 300.
tenho um caso/cliente que tem +300 documentos dia, e no mesmo dia o filtro por tipo de documento pouco ou nada ajuda (são 99% do mesmo tipo).
o filtro por NIF não sei como pode ajudar-me a passar os 300, se não sei que NIFs poderão estar para além dos 300?, nem consigo fazer filtros por um "range" (desde/até) de NIFs?

Link to comment
Share on other sites

  • 2 months later...

Boas malta.

O código está facultado no github (opensource): https://github.com/biancataschner/efatura

Peço apenas o favor da dar um follow, star, e se for o caso fork ou pull requests para contribuir com o desenvolvimento, melhorias, etc.

Bom estudo a todos.

Em 09/05/2019 às 12:04, antseq disse:

obrigado.
também tinha essa ideia como também tentado "forçar" outros parâmetros e há sempre um limite nos 300.
tenho um caso/cliente que tem +300 documentos dia, e no mesmo dia o filtro por tipo de documento pouco ou nada ajuda (são 99% do mesmo tipo).
o filtro por NIF não sei como pode ajudar-me a passar os 300, se não sei que NIFs poderão estar para além dos 300?, nem consigo fazer filtros por um "range" (desde/até) de NIFs?

Exatamente, eu abri um ticket junto às finanças sobre o assunto, tão logo tenha um retorno aviso a todos.

Link to comment
Share on other sites

  • 2 months later...

Será que é possivel fazer o post Json depois do user fazer o login na página. Na verdade a minha ideia é:

 

Deixar o User fazer o login na pagina e só depois correr a aplicação para retirar os dados (ou seja só neste passo chamar o post para fazer o download das faturas) não pretendo fazer o login pela via código.

 

Já alguem fez algo do género? estou a tentar chamar o HttpClient mas ele nao consegue fazer o handler à pagina onde o user já se logou.

 

obrigado

Link to comment
Share on other sites

  • 3 years later...
On 7/9/2019 at 1:13 PM, Thiago said:

Boas malta.

O código está facultado no github (opensource): https://github.com/biancataschner/efatura

Peço apenas o favor da dar um follow, star, e se for o caso fork ou pull requests para contribuir com o desenvolvimento, melhorias, etc.

Bom estudo a todos.

Exatamente, eu abri um ticket junto às finanças sobre o assunto, tão logo tenha um retorno aviso a todos.

Boa tarde Thiago,  

Obtiveste alguma resposta em relação aos 300?

 

Obrigado

Link to comment
Share on other sites

Em 29/11/2022 às 15:56, AlfaPaulo disse:

Nas facturas de compras?

Devia estar a sonhar, fui confirmar agora e realmente só faço 1 pedido para o período em causa. Devo ter pensado em implementar recursivamente mas por algum motivo não o fiz.

Onde estou agora não tenho acesso ao portal das finanças para confirmar se existe mais algum filtro que se possa usar para essa situação.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.