Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

cjulio

Utilizar Webservices da AT

Mensagens Recomendadas

Carlos Pais

Boas

Alguem já tem alguma aplicação ( código) para validar as facturas no e-facturas, no seu Âmbito da Actividade

Tenho alguns link's que deviam funcionar , mas não estou a conseguir

https://faturas.portaldasfinancas.gov.pt/resolverPendenciaAdquirente.action?idDocumento=xxxxxxxxx&ambitoActividadeProfPend=0

https://faturas.portaldasfinancas.gov.pt/detalheDocumentoAdquirente.action?idDocumento=xxxxxxx&dataEmissaoDocumento=01-01-2018&ambitoActividadeProfPend=1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
grbabus

Boa tarde alguém  sabe se através do FACTEMICLI-<xxx>-cmdClient , pode se enviar Guias de transporte, se sim podem me deixar aqui um exemplo, Obrigado.

 

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
americob
4 horas atrás, grbabus disse:

Boa tarde alguém  sabe se através do FACTEMICLI-<xxx>-cmdClient , pode se enviar Guias de transporte, se sim podem me deixar aqui um exemplo, Obrigado.

 

 

Acho que a primeira e a ultima versão que esteve disponível desse FACTEMICLI... foi quando o SAFT ainda estava na versão 1.02_01. Agora já vai na versão 1.04_01, pelo que o que existiu já não deve funcionar.

Na altura, a AT foi questionada (procura lá para trás nesta pagina) e a resposta foi que não se justificava manter essa opção. A desculpa baseou-se em que a generalidade dos programas permitiam a comunicação dos DT's por Webservice, e que, em 99% dos casos, os DT's são feitos para serem utilizados na hora e por isso fazia pouco sentido o envio de conjuntos de DT's por ficheiro que só depois de processado devolvia os códigos AT.

Na minha opinião, só não há mais programas a comunicar Faturas por Webservice porque ainda não está claro na Lei que todos os programas certificados o possam fazer. Uma leitura estrita da Lei dá a entender que só as Faturas Eletrónicas (cumprindo todos os requisitos de assinatura, integridade, etc.) podem ser comunicadas por esta via. As restantes Faturas continuam a ter de ser comunicadas por SAFT. Embora haja muitos programas no mercado a comunicar Faturas por Webservice sem que estas sejam Faturas Eletrónicas, programas a assinar as Faturas eletrónicas com assinaturas que nem sequer são da empresa emissora, etc..

A lei das Faturas Eletrónicas precisa de clarificação urgentemente. Aliás, pelo que tem saído nos jornais, estas mudanças devem estar para breve, com o QR code e a desmaterialização dos documentos.

 

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
grbabus
31 minutos atrás, americob disse:

Acho que a primeira e a ultima versão que esteve disponível desse FACTEMICLI... foi quando o SAFT ainda estava na versão 1.02_01. Agora já vai na versão 1.04_01, pelo que o que existiu já não deve funcionar.

Na altura, a AT foi questionada (procura lá para trás nesta pagina) e a resposta foi que não se justificava manter essa opção. A desculpa baseou-se em que a generalidade dos programas permitiam a comunicação dos DT's por Webservice, e que, em 99% dos casos, os DT's são feitos para serem utilizados na hora e por isso fazia pouco sentido o envio de conjuntos de DT's por ficheiro que só depois de processado devolvia os códigos AT.

Na minha opinião, só não há mais programas a comunicar Faturas por Webservice porque ainda não está claro na Lei que todos os programas certificados o possam fazer. Uma leitura estrita da Lei dá a entender que só as Faturas Eletrónicas (cumprindo todos os requisitos de assinatura, integridade, etc.) podem ser comunicadas por esta via. As restantes Faturas continuam a ter de ser comunicadas por SAFT. Embora haja muitos programas no mercado a comunicar Faturas por Webservice sem que estas sejam Faturas Eletrónicas, programas a assinar as Faturas eletrónicas com assinaturas que nem sequer são da empresa emissora, etc..

A lei das Faturas Eletrónicas precisa de clarificação urgentemente. Aliás, pelo que tem saído nos jornais, estas mudanças devem estar para breve, com o QR code e a desmaterialização dos documentos.

 

Muito obrigado pela reposta @americob , realmente isso está uma confusão (esparguete puro), a ultima vez que mexi nisso foi em 2012/2013 quando as coisas estão a ser implementadas e eis que me surge esse desafio de novo , bom vou fazer aqui ó código do zero(vai ser uma noite com muitos cafés), obrigado novamente, até já

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PauloDuarte

Bom dia Pessoal,

Alguem por aqui que perceba de weblogic que esteja disponivel para me esclarecer algumas duvidas?

Estou a desesperar.

Muito Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
hferreira

Boa tarde,

Compreendo que a maioria (para não dizer) de todas as necessidades seja a de submissão de faturas.

No entanto tenho a necessidade de obter os dados das faturas submetidas.

Existe WebService para isto ?

Algum exemplo ou documento (eu não encontrei) ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PauloDuarte

Boa Tarde Pessoal,

Estou a implementar a comunicação de guias AT num novo cliente e estou a usar o pfx que foi gerado para a minha empresa  , e que utilzo noutos clientes.

A questão é que a pessoa que tratava da emissão dos certificados foi se embora, e ainda tou a tentar que alguem responsavel me peça novos certificados.

Tive a rever uns emails e vi que em 2015 , quando pediram os certificados havia um ficheiro chamado PubliChainCA2.p7b . Alguem me sabe dizer para que serve este certificado?

Eu não tenho grande experiencia em comunicações SSL , mas foi me dito que o me deve faltar é o certificado da entidade emissora (um root certificate , ou algo do genero).

Eu para comunicar com a AT preciso de adicionar na demotrust.jks um certificado da entidade emissora? Pode ser este PubliChainCA2.p7b ?

Este certificado é igual para todos ? ou é unico por produtor de Software ? Tou farto de procurar este ficheiro nos servidores da empresa mas nao o consigo encontrar.

Se alguém me conseguisse dar uma ideia ficava eternamente agradecido.

 

Obrigado

PD

 

 

Editado por PauloDuarte

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Vitor Pereira
3 minutos atrás, PauloDuarte disse:

Boa Tarde Pessoal,

Estou a implementar a comunicação de guias AT num novo cliente e estou a usar o pfx que foi gerado para a minha empresa  , e que utilzo noutos clientes.

A questão é que a pessoa que tratava da emissão dos certificados foi se embora, e ainda tou a tentar que alguem responsavel me peça novos certificados.

Tive a rever uns emails e vi que em 2015 , quando pediram os certificados havia um ficheiro chamado PubliChainCA2.p7b . Alguem me sabe dizer para que serve este certificado?

Eu não tenho grande experiencia em comunicações SSL , mas foi me dito que o me deve faltar é o certificado da entidade emissora (um root certificate , ou algo do genero).

Eu para comunicar com a AT preciso de adicionar na demotrust.jks um certificado da entidade emissora? Pode ser este PubliChainCA2.p7b ?

Se alguém me conseguisse dar uma ideia ficava eternamente agradecido.

 

Obrigado

PD

 

 

 

É necessário pedir a cada 2 anos um novo Certificado a AT.

Abaixo seguem as instruções para se pedir, e o que fazer depois de receber:

 

 

 

Gerar o Certificado SSL:
  openssl req -new -subj "/C=PT/ST=Porto/L=Rua, Cidade/O=Nome/OU=Informatica/CN=999999990/emailAddress=mail@gmail.com" -newkey rsa:2048 -nodes -out 999999990.csr -keyout 999999990.key

Sao gerados os ficheiros 999999990.csr  e  999999990.key

Enviar o certificado (.csr) para a AT para ser assinado
https://faturas.portaldasfinancas.gov.pt//testarLigacaoWebService.action e ir a produtores de software

 


Recebido (da AT) assinado 999999990.cer (anexo e zipado)

Integrar certificado SSL com a chave privada:
   openssl pkcs12 -export -in 999999990.cer -inkey 999999990.key -out 999999990.pfx

Gerado o 999999990.pfx  (  password: 999999990   )


(*** Nota : para executar o "openssl" coloquei sempre os ficheiros na pasta onde o executavel openssl.exe esta instalado, ou seja "C:\OpenSSL-Win32\bin"  ****)

Trocar o 999999990 pelo NIF da Software-House ou Programador

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PauloDuarte

Victor , 

Obrigado pela resposta .

O meu .pfx ainda está válido e como tal antes de pedir um novo , queria perceber se o problema com o meu novo cliente pode ser a falta do do certificado PubliChainCA2.p7b.

Este publichainca2.p7b tambem e alterado a cada 2 anos? Ou mantem se inalterado ao longo do tempo? O meu problema é que nao estou a conseguir encontrar este publicchanca2.p7b em lado nenhum.

Tive a falar com um cliente que usa o nosso software a ja bastantes anos e disse-me que normalmente, quando o certificado expira , o que a minha empresa lhe envia é apenas o pfx , nao tendo que instalar mais nenhum certificado.

Não sei se este certificado é publicchain é instalado apenas na primeira vez que se faz a instalação dos servidores ou se tem que ser trocado , cada vez que criamos um novo pfx.

Editado por PauloDuarte
erro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
geral

Viva,

Estamos a implementar uma solução que utiliza um webservice da AT e estamos com algumas dificuldades.

Neste momento o cliente que crio não me deixa adicionar o certificado.

X509Certificate2 certificado = new X509Certificate2(certificate_path, "TESTEwebservice", X509KeyStorageFlags.DefaultKeySet);

client.ClientCredentials.ClientCertificate.Certificate = certificado;

 

Apresenta sempre uma exception indicando que o client é read-only.

Alguma sugestão?

 

Desde já, obrigado.

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Xendro
Em 09/01/2019 às 21:16, Xendro disse:

Boas.

Obtive o ultimo certificado mas estou com o erro (em testes):

"error: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake"

Para tentar desfazer algumas duvidas fiz download do codigo da applet disponibilizada pela AT (FACTEMIPFCLI-1.7.4-0036-src)  e executei no meu ambiente java, substituindo apenas os certificados e ....

"o erro e o mesmo," no entanto a applet da At no site funciona.

Os novos certificados de teste estão a funcionar con toda a gente?

Alguem ve uma explicação para o codigo "FACTEMIPFCLI" nao funcionar no meu ambiente (será diferente do que a AT esta a executar) ?

Obrigado

A quem desconheca:

Estou a utilizar saPubKey.jks o qual contem 2 aliases, "sapubkey.prod" e "sapubkey.testes".

Como seria obvio achei que em teste  deveria usar o "sapubkey.testes" ( dai o meu problema ).

Resolvi trocar para "sapubkey.prod", e funciona, utilizando o endereço de testes.

.... "coisas da AT" !!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Deckard

Viva Malta,

Estou com um projecto em .net core que requer a implementação do webserive dos pedidos de recuperação do IVA.

Estou com dificuldades em gerar o Digest certo na plataforma.

No passado, numa aplicação windows form utilizei uma dll do java:

 GenerateDigest DigestGt = new GenerateDigest();
 byte[] digestInput1 = GenerateDigest.cypherCredentialBuffer(rijn.Key, DigestGt.buildPasswordDigest(rijn.Key, DataCriacao, PassFinancas));
 var Digest = Convert.ToBase64String(digestInput1);

Contudo, esta ddl não é compatível com o .net core.

Após pesquisar encontrei várias soluções chegando a isto:

//NONCE
byte[] bytesNonce = rijn.Key;
byte[] bytesDataCriacao = Encoding.UTF8.GetBytes(DataCriacao);
byte[] bytesPassFinancas = Encoding.UTF8.GetBytes(PassFinancas);

//concatenação dos bits dos 3 campos 
byte[] digestInput = new byte[bytesNonce.Length + bytesDataCriacao.Length + bytesPassFinancas.Length];
Array.Copy(bytesNonce, 0, digestInput, 0, bytesNonce.Length);
Array.Copy(bytesDataCriacao, 0, digestInput, bytesNonce.Length, bytesDataCriacao.Length);
Array.Copy(bytesPassFinancas, 0, digestInput, bytesNonce.Length + bytesDataCriacao.Length, bytesPassFinancas.Length);


byte[] SHA1Bytes = HashAlgorithm.Create("SHA1").ComputeHash(digestInput);

sbyte[] Digest = Array.ConvertAll(SHA1Bytes, b => unchecked((sbyte)b));
byte[] unsignedByteArray = (byte[])(Array)Digest;

MemoryStream msDigest = new MemoryStream();
CryptoStream csDigest = new CryptoStream(msDigest, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write);
using (StreamWriter swDigest = new StreamWriter(csDigest))
{
swDigest.Write(unsignedByteArray);
}

String DigestPass = Convert.ToBase64String(msDigest.ToArray());

O problema surge na criação do Digest que não é igual à versão desktop. em comparação o digest criado pela biblioteca em java é de 32bytes e esta solução do .net core é de 20bytes.

Sendo que a resposta da AT é:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header /> 
- <SOAP-ENV:Body>
- <SOAP-ENV:Fault>
  <faultcode /> 
  <faultstring>Rejected: | Codigo: | Erro: | Tentativas Restantes:</faultstring> 
  <detail>credincws.iiivaqua</detail> 
  </SOAP-ENV:Fault>
  </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>

Têm alguma sugestão para resolver o problema?

 

Confesso que já não sei onde procurar ou fazer.

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ipereira

Boa tarde a todos,

A nossa empresa está em Espanha e estamos a desenvolver o envio webservice à AT. No principio pensavamos que para certificar o software teriamos que fazer o modelo 24, no entanto, o modelo 24 corresponde ao envio do ficheiro SAF-T(PT) que se trata de outro desenvolvimento diferente.

A minha pergunta é, há que fazer também a exportação do ficheiro SAF-T(PT) e por tanto fazer o modelo 24 ou para pedir o certificado para enviar as faturas por webservice apenas há que realizar o pedido de adesão na página do portal das finanças? 

Fiz esta pergunta há mais de um mês no e-balcão mas ainda não me responderam.

Obrigada.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Vitor Pereira
Em ‎05‎/‎03‎/‎2019 às 09:40, Ipereira disse:

Boa tarde a todos,

A nossa empresa está em Espanha e estamos a desenvolver o envio webservice à AT. No principio pensavamos que para certificar o software teriamos que fazer o modelo 24, no entanto, o modelo 24 corresponde ao envio do ficheiro SAF-T(PT) que se trata de outro desenvolvimento diferente.

A minha pergunta é, há que fazer também a exportação do ficheiro SAF-T(PT) e por tanto fazer o modelo 24 ou para pedir o certificado para enviar as faturas por webservice apenas há que realizar o pedido de adesão na página do portal das finanças? 

Fiz esta pergunta há mais de um mês no e-balcão mas ainda não me responderam.

Obrigada.

 

Em ‎05‎/‎03‎/‎2019 às 09:40, Ipereira disse:

Boa tarde a todos,

A nossa empresa está em Espanha e estamos a desenvolver o envio webservice à AT. No principio pensavamos que para certificar o software teriamos que fazer o modelo 24, no entanto, o modelo 24 corresponde ao envio do ficheiro SAF-T(PT) que se trata de outro desenvolvimento diferente.

A minha pergunta é, há que fazer também a exportação do ficheiro SAF-T(PT) e por tanto fazer o modelo 24 ou para pedir o certificado para enviar as faturas por webservice apenas há que realizar o pedido de adesão na página do portal das finanças? 

Fiz esta pergunta há mais de um mês no e-balcão mas ainda não me responderam.

Obrigada.

 

Existem 2 opções de enviar os Documentos de Faturação para a AT:

- Via SAFT

- Via Webservice ( não precisam de enviar via SAFT )

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Vitor Pereira
Em 06/03/2019 às 15:11, Jesus disse:

Boa Tarde Pessoal,

 

Alguém tem um exemplo de um SOAP:Body para a Comunicação dos Documentos de Transporte à AT, no manual só traz o exemplo do header

http://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Documents/Comunicacao_Dados_Documentos_Transporte.pdf

 

Muito obrigado!

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:doc="https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/">
  <soapenv:Header>
    <wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
      <wss:UsernameToken>
        <wss:Username>50550505/1</wss:Username>
        <wss:Password>r1j/IhEl93AxRTbF1ab5ag==</wss:Password>
        <wss:Nonce>emu0R/woZ7dEPJOhj4cx+lBfSn3VKCv9K4rjKp3MMi6Hh3gKFwMnBlrDL3vA5Vm5IV5B1uqLUF2QuzN23YK/OrqGzLibdNDIrVtAwG5lJX0NQIhQ2qRbzpoSqSsrjiF5C67+3f3CTCNoXCzpRIwyIULMFv8nvfJfIld3oB+IcIDxrCmmKKUNkd+KQNNYQ/SOBb77TVNTrbk/q4neleuxQw9raD816pgabnMYtJn9ICcMrJFQEO+TvSS/K4GTPQHZ4yia5nJsu4jK5FtlP73fGcgyYRlSAqlSdr4rMxp38+euIWLMvE+Y6APSHsngEKbsNtdr3e8KOzeY+ygQ0ghP9A==</wss:Nonce>
        <wss:Created>HH8z7QsX9sgDRiGx9itx5U3f8pYKY14IYZJ++b8pmMQ=</wss:Created>
      </wss:UsernameToken>
    </wss:Security>
  </soapenv:Header>
  <soapenv:Body>
    <doc:envioDocumentoTransporteRequestElem>
      <TaxRegistrationNumber>505505505</TaxRegistrationNumber>
      <CompanyName>Nome Empresa</CompanyName>
      <CompanyAddress>
        <Addressdetail>Rua Ribeiro de Castro</Addressdetail>
        <City>PORTO</City>
        <PostalCode>4000-045</PostalCode>
        <Country>PT</Country>
      </CompanyAddress>
      <DocumentNumber>005 C/353</DocumentNumber>
      <MovementStatus>N</MovementStatus>
      <MovementDate>2019-03-06</MovementDate>
      <MovementType>GT</MovementType>
      <CustomerTaxID>506506506</CustomerTaxID>
      <CustomerAddress>
        <Addressdetail>Rua Bernardino Jordao</Addressdetail>
        <City>PORTO</City>
        <PostalCode>4010-480</PostalCode>
        <Country>PT</Country>
      </CustomerAddress>
      <CustomerName>Nome Cliente.</CustomerName>  
      <AddressTo>
        <Addressdetail>Rua Bernardino Jordao</Addressdetail>
        <City>PORTO</City>
        <PostalCode>4010-480</PostalCode>
        <Country>PT</Country>
      </AddressTo>
      <AddressFrom>
        <Addressdetail>Rua Ribeiro de Castro</Addressdetail>
        <City>PORTO</City>
        <PostalCode>4000-045</PostalCode>
        <Country>PT</Country>
      </AddressFrom>
      <MovementStartTime>2019-03-06T14:45:00</MovementStartTime>
      <VehicleID>67-JP-81</VehicleID>
      <Line>
        <ProductDescription>COMPUTADOR</ProductDescription>  
        <Quantity>1.000</Quantity>
        <UnitOfMeasure>UN</UnitOfMeasure>
        <UnitPrice>0.0000</UnitPrice>
      </Line>  
    </doc:envioDocumentoTransporteRequestElem>
  </soapenv:Body>
</soapenv:Envelope>

 

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.