Jump to content
PauloASantos

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

Recommended Posts

PauloASantos

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. 

Share this post


Link to post
Share on other sites
Guest

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á.

Share this post


Link to post
Share on other sites
PauloASantos

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:


http://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?page=236#comment-574774

http://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?page=276#comment-598219

http://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?page=255#comment-591157

 

Share this post


Link to post
Share on other sites
carlos sousa 2015
Em 01/02/2017 às 18:12, PauloASantos disse:

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:


http://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?page=236#comment-574774

http://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?page=276#comment-598219

http://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?page=255#comment-591157

 

Viva,

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

 

Abr

Share this post


Link to post
Share on other sites
ccue2003

Boa noite

Sempre conseguiste fazer a ligação?

Uma das coisas que acrescentei no teu código foi:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

Cumprimentos

Share this post


Link to post
Share on other sites
Hélder Viegas
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


Hélder Viegas

Share this post


Link to post
Share on other sites
Guest

Passe a publicidade ..

Primavera, Sage, Eticadata, Microdigital, Filosoft ... a lista é interminável.

Quase todas as aplicações de contabilidade fazem isso, mas não há milagre, fazem-no por imitação humana, não há outro meio.

Cumprimentos.

 

Share this post


Link to post
Share on other sites
Hélder Viegas
1 hora atrás, derrerter disse:

Passe a publicidade ..

Caro derrerter

Tenho aplicação própria. Estou a tentar adquirir aplicação ou código para integrar.

Obrigado


Hélder Viegas

Share this post


Link to post
Share on other sites
pc.cesar

já alguem consegui efectuar via PHP ou Foxpro a ligação com a AT para obeter as faturas de compra

 

podem disponibilizar?

Share this post


Link to post
Share on other sites
Thiago

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

Share this post


Link to post
Share on other sites
antseq
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.

Share this post


Link to post
Share on other sites
Thiago
18 horas atrás, antseq disse:

Viva,

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

cps.

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.).

Share this post


Link to post
Share on other sites
antseq
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?

Share this post


Link to post
Share on other sites
Thiago

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.