Jump to content

Utilizar Webservices da AT


Recommended Posts

Bruno Barbosa
Em 12/08/2020 às 12:32, JacsonPaz disse:

Bom dia

Eu testei com o novo certificado do ambiente de TESTES no webservices de TRANSPORTE e o erro continua (um pouco diferente do mencionado pelo colega). 

Response-Code: 500
<faultcode>33</faultcode>
<faultstring>Falha comunicacao com Servidor de Autenticacao (500)</faultstring>


Response-Code: 500
Encoding: ISO-8859-1
Content-Type: text/xml
Headers: {connection=[close], content-type=[text/xml], Set-Cookie=[cpd83x3AvETSAw1U4VzyhVmift8nwq9oX+r7j6K4-FzI=v1U1yRg+mBFAf; Expires=Wed, 12-Aug-2020 13:22:05 GMT; Path=/], X-Backside-Transport=[FAIL FAIL]}
Payload: <?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://autenticacao.portaldasfinancas.gov.pt/services/ValidateCredencialService/2012/11" xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>33</faultcode>
<faultstring>Falha comunicacao com Servidor de Autenticacao (500)</faultstring>
<detail/></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

boa tarde

verifica se está a passar a chave na comunicação, os erros 500 que tive eram situações em que falhava esse conteudo na mensagem

 

55 minutos atrás, samuquinha disse:

Não me recorda se reiniciei o servidor, mas em caso de dúvida...

obrigado

foi-se resolvendo

Link to post
Share on other sites
  • Replies 9k
  • Created
  • Last Reply

Top Posters In This Topic

  • nunopicado

    943

  • marcolopes

    408

  • brunotoira

    405

  • americob

    165

Top Posters In This Topic

Popular Posts

Eles estão-se nas tintas para nós e para o que nós achamos lamentável... Quero que eles se f... Cosam! Amanhã vou de férias, coisa que não faço há anos... São só 4 dias, mas acho que o escravo mere

Uma LUZINHA? Queres dizer... NÓS... os beta-testers e escravos do sistema! Foram muitas dezenas de emails de recomendações enviados, problemas reportados, sugestões... Não era dificil de prever que a

Sim, digamos que um tipo de API mas apenas para alimentar o próprio website via AJAX (Javascript). Um exemplo prático: Depois de se autenticarem no portal e-fatura (como consumidor), acedam ao segu

José Jorge Matos

Boa tarde,

Uma dúvida para os colegas que programam em C#.

Sempre que se instancia a classe X509Certificate2 é criado um ficheiro na pasta C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys.

Por exemplo:

X509Certificate2 cert = new X509Certificate2(certificado, password);

Existe alguma forma de evitar que isso aconteça?

Estou com problemas com o antivírus, que bloqueia a escrita na pasta que referi acima.

Obrigado.

JJM

Edited by José Jorge Matos
-
Link to post
Share on other sites
4 minutos atrás, MAbrantes disse:

Alguém com problemas no envio? Não estou a conseguir comunicar há mais de meia hora.

Por aqui não houve qualquer erro na última hora, nem com faturas nem com docs de trasnporte.

Link to post
Share on other sites
Isabel Carvalho
1 hora atrás, MAbrantes disse:

Alguém com problemas no envio? Não estou a conseguir comunicar há mais de meia hora.

Boa tarde,

 

também estamos com problemas com comunicação, mas não em todos os clientes e temos até clientes que só têm problemas com alguns postos de trabalho. Com que software trabalham? 

Link to post
Share on other sites

Boa tarde a todos.

Após dois dias a navegar pelas primeiras páginas deste tópico a tentar implementar a comunicação de faturas à AT, sem sucesso, queria perguntar se alguém aqui tem um exemplo em C# ou .NET que esteja funcional?

Já tentei pelo wsdl e já tentei contruir o pedido Raw pelo xml. Pelo wsdl não passo de "internal error", pelo xml não passo de um Erro 99.

Alguém me consegue ajudar? Muito obrigado a todos.

Link to post
Share on other sites
Isabel Carvalho
6 horas atrás, jorang disse:

Por aqui não houve qualquer erro na última hora, nem com faturas nem com docs de trasnporte.

 

6 horas atrás, jorang disse:

Por aqui não houve qualquer erro na última hora, nem com faturas nem com docs de trasnporte.

Boa tarde,

Desde terça feira estamos novamente a ter problemas de comunicação com a AT. Mais alguém está a ter problemas?

O erro que obtemos é o seguinte:

"Web exception: The remote certificate is invalid according to the validation procedure. : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. "

Estamos a tentar perceber se se trata de um problema do lado da AT ou não. A verdade é que não acontece em todos os clientes, pelo menos para já.

Cumprimentos,

 

Isabel Carvalho

Link to post
Share on other sites
Em 22/03/2013 às 17:36, araujor disse:

Boa tarde a todos, recentemente iniciei o desenvolvimento desta funcionalidade, já li e reli todos os posts deste tópico e com a a vossa ajuda já consegui fazer alguma coisa. Possuo o certificado de teste (TestesWebServices.pfx + a chave pública da AT) que solicitei junto da AT.

Aqui está o meu código...

Gerar o conteúdo....


private string GenerateXmlString()
 {
	 StringBuilder sb = new StringBuilder();
	 sb.Append("<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">");
	 sb.Append("<S:Header>");
	 sb.Append("<wss:Security xmlns:wss=\"http://schemas.xmlsoap.org/ws/2002/12/secext/\">");
	 sb.Append("<wss:UsernameToken>");
	 sb.Append("<wss:Username>" + NifConta + "</wss:Username>");
	 sb.Append("<wss:Password>" + PassFinancasEncriptada + "</wss:Password>");
	 sb.Append("<wss:Nonce>" + ChaveSimetricaEncriptada + "</wss:Nonce>");
	 sb.Append("<wss:Created>" + DataCriacaoEncriptada + "</wss:Created>");
	 sb.Append("</wss:UsernameToken>");
	 sb.Append("</wss:Security>");
	 sb.Append("</S:Header>");
	 sb.Append("<S:Body>");
	 sb.Append("<ns2:RegisterInvoiceElem xmlns:ns2=\"http://servicos.portaldasfinancas.gov.pt/faturas/\">");
	 sb.Append("<TaxRegistrationNumber>" + "XXXXXXXXX" + "</TaxRegistrationNumber>");
	 sb.Append("<ns2:InvoiceNo>FT 1/1</ns2:InvoiceNo>");
	 sb.Append("<ns2:InvoiceDate>2012-05-05</ns2:InvoiceDate>");
	 sb.Append("<ns2:InvoiceType>FT</ns2:InvoiceType>");
	 sb.Append("<ns2:InvoiceStatus>N</ns2:InvoiceStatus>");
	 sb.Append("<CustomerTaxID>299999998</CustomerTaxID>");
	 sb.Append("<Line>");
	 sb.Append("<ns2:DebitAmount>100</ns2:DebitAmount>");
	 sb.Append("<ns2:Tax>");
	 sb.Append("<ns2:TaxType>IVA</ns2:TaxType>");
	 sb.Append("<ns2:TaxCountryRegion>PT</ns2:TaxCountryRegion>");
	 sb.Append("<ns2:TaxPercentage>23</ns2:TaxPercentage>");
	 sb.Append("</ns2:Tax>");
	 sb.Append("</Line>");
	 sb.Append("<DocumentTotals>");
	 sb.Append("<ns2:TaxPayable>23</ns2:TaxPayable>");
	 sb.Append("<ns2:NetTotal>100</ns2:NetTotal>");
	 sb.Append("<ns2:GrossTotal>123</ns2:GrossTotal>");
	 sb.Append("</DocumentTotals>");
	 sb.Append("</ns2:RegisterInvoiceElem>");
	 sb.Append("</S:Body>");
	 sb.Append("</S:Envelope>");

	 XmlDocument xc = new XmlDocument();
	 TextReader textReader = new StringReader(sb.ToString());
	 XDocument xmlDocument = Xdocument.Load(textReader);
	 xmldocument.Save(Application.StartupPath + "\\tosend.xml");
	 return sb.ToString();

 }
 
método de cifragem de dados...

void buildCredentials()
 {
	 X509Certificate2 certCP = new X509Certificate2();
	 //certCP.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet);
	 certCP.Import(CaminhoChavePublica);
	 String publicKey = certCP.PublicKey.Key.ToXmlString(false);

	 String DataCriacao = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.ff") + "Z";

	 RijndaelManaged rijndaelCipher = new RijndaelManaged();
	 rijndaelCipher.GenerateKey();
	 rijndaelCipher.Mode = CipherMode.ECB;
	 rijndaelCipher.Padding = PaddingMode.PKCS7;
	 string simetrickey = rijndaelCipher.Key.ToString();
	 Byte[] chaveSimetrica = rijndaelCipher.Key;
	 SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();
	 rijn.Key = rijndaelCipher.IV;
	 rijn.IV = rijndaelCipher.IV;
	 rijn.Mode = CipherMode.ECB;
	 MemoryStream msPassFinancas = new MemoryStream();
	 CryptoStream csPassFinancas = new CryptoStream(msPassFinancas, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write);
	 using (StreamWriter swPassFinancas = new StreamWriter(csPassFinancas))
	 {
		 swPassFinancas.Write(PassFinancas);
	 }
	 MemoryStream msDataCriacao = new MemoryStream();
	 CryptoStream csDataCriacao = new CryptoStream(msDataCriacao, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write);
	 using (StreamWriter swDataCriacao = new StreamWriter(csDataCriacao))
	 {
		 swDataCriacao.Write(DataCriacao);
	 }
	 PassFinancasEncriptada = Convert.ToBase64String(msPassFinancas.ToArray());
	 DataCriacaoEncriptada = Convert.ToBase64String(msDataCriacao.ToArray());
	 RSACryptoServiceProvider AlgRSA = new RSACryptoServiceProvider();
	 AlgRSA.FromXmlString(publicKey);
	 Byte[] Chave = AlgRSA.Encrypt(rijn.Key, false);
	 ChaveSimetricaEncriptada = Convert.ToBase64String(Chave);

 }
 
método de envio...

public string send()
 {	


	 buildCredentials();
	 try
	 {
		 Uri EnderecoWebService = new Uri("https://servicos.portaldasfinancas.gov.pt:700/fews/faturas");
		 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(EnderecoWebService);
		 request.Headers.Add("SOAPAction", "http://servicos.portaldasfinancas.gov.pt/faturas/RegisterInvoice");

		 X509Certificate2 cert = new X509Certificate2();
		 // cert.Import(CaminhoChavePublica); //<-----
		 cert.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet);

		 request.ClientCertificates.Add(cert);

		 request.Method = "POST";
		 request.ContentType = "text/xml; charset=utf-8";
		 request.Accept = "text/xml";
		 string oRequest = GenerateXmlString();
		 string postData = oRequest;
		 byte[] byteArray = Encoding.UTF8.GetBytes(postData);
		 request.ContentLength = byteArray.Length;

		 Stream dataStream = request.GetRequestStream();
		 dataStream.Write(byteArray, 0, byteArray.Length);
		 dataStream.Close();

		 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

		 dataStream = response.GetResponseStream();
		 StreamReader reader = new StreamReader(dataStream);
		 string responseFromServer = reader.ReadToEnd();

		 reader.Close();
		 dataStream.Close();
		 response.Close();

		 return responseFromServer;
	 }
	 catch (WebException ex)
	 {
		 if (ex.Status == WebExceptionStatus.ProtocolError)
		 {
			 WebResponse resp = ex.Response;
			 StreamReader sr = new StreamReader(resp.GetResponseStream());
			 return sr.ReadToEnd();
		 }
		 else
		 {
			 return ex.Message;
		 }
	 }
 }
 
Peço a alguém que me ajude, com este código, neste momento está me a retornar um erro 99 a dizer que o utilizador não ta registado no portal,

o engraçado é que as credenciais que tou a usar permitem me entrar no portal efaturas mas ao efectuar o teste através do portal retorna-me exactamente

o erro que apanho no protótipo (utilizador não registado)...

Desde já obrigado por perderem tempo a olhar pra isto...

Este é o código que estou a utilizar e não me parece dar qualquer erro com a comunicação.

E em baixo o XML que que estou a enviar. 

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
	<S:Header>
		<wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
			<wss:UsernameToken>
				<wss:Username>NIF/USER</wss:Username>
				<wss:Password>s5NJQQ....</wss:Password>
				<wss:Nonce>ZxXOJgzEHDnNX58Z84y6w0z+NuXXiJp....</wss:Nonce>
				<wss:Created>aJ/iTo7IjH.....</wss:Created>
			</wss:UsernameToken>
		</wss:Security>
	</S:Header>
	<S:Body>
		<ns2:RegisterInvoiceElem xmlns:ns2="http://servicos.portaldasfinancas.gov.pt/faturas/">
			<TaxRegistrationNumber>NIF</TaxRegistrationNumber>
			<ns2:InvoiceNo>FR 2020SA1/1</ns2:InvoiceNo>
			<ns2:InvoiceDate>2020-09-02</ns2:InvoiceDate>
			<ns2:InvoiceType>FR</ns2:InvoiceType>
			<ns2:InvoiceStatus>N</ns2:InvoiceStatus>
			<CustomerTaxID>999999990</CustomerTaxID>
			<Line>
				<ns2:DebitAmount>100</ns2:DebitAmount>
				<ns2:Tax>
					<ns2:TaxType>IVA</ns2:TaxType>
					<ns2:TaxCountryRegion>PT</ns2:TaxCountryRegion>
					<ns2:TaxPercentage>23</ns2:TaxPercentage>
				</ns2:Tax>
			</Line>
			<DocumentTotals>
				<ns2:TaxPayable>23</ns2:TaxPayable>
				<ns2:NetTotal>100</ns2:NetTotal>
				<ns2:GrossTotal>123</ns2:GrossTotal>
			</DocumentTotals>
		</ns2:RegisterInvoiceElem>
	</S:Body>
</S:Envelope>

O XML de resposta que recebo é este, mas quando testo o serviço em https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action tudo esta a funcionar bem. O que me parece ser um erro do meu lado. Alguém me consegue ajudar a tentar perceber o que está errado?

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns0:RegisterInvoiceResponseElem xmlns:ns0="http://servicos.portaldasfinancas.gov.pt/faturas/"><ReturnCode>-99</ReturnCode><ReturnMessage>Erro de sistema. Por favor volte a tentar mais tarde.</ReturnMessage></ns0:RegisterInvoiceResponseElem></env:Body></env:Envelope>

Obrigado desde já!

Link to post
Share on other sites
17 horas atrás, Isabel Carvalho disse:

 

Boa tarde,

Desde terça feira estamos novamente a ter problemas de comunicação com a AT. Mais alguém está a ter problemas?

O erro que obtemos é o seguinte:

"Web exception: The remote certificate is invalid according to the validation procedure. : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. "

Estamos a tentar perceber se se trata de um problema do lado da AT ou não. A verdade é que não acontece em todos os clientes, pelo menos para já.

Cumprimentos,

 

Isabel Carvalho

Bom dia,

Uma pergunta qual o sistema operativo que tem ? se for XP, tem que atualizar manualmente alguns certificados de root. 

No meu caso utilizei estes: https://drive.google.com/file/d/1VrOrEaXFiOkpa-d1hU-_c8qsE_g-Lfas/view?usp=sharing

Espero ter ajudado.

Link to post
Share on other sites
Isabel Carvalho
12 minutos atrás, davdew05 disse:

Bom dia,

Uma pergunta qual o sistema operativo que tem ? se for XP, tem que atualizar manualmente alguns certificados de root. 

No meu caso utilizei estes: https://drive.google.com/file/d/1VrOrEaXFiOkpa-d1hU-_c8qsE_g-Lfas/view?usp=sharing

Espero ter ajudado.

Bom dia,

 

obrigada pela resposta, mas não é esse  problema. Estamos a falar de vários sistemas operativos, em centenas de clientes que comunicavam até ontem, e deixaram quase todos de comunicar. 

Link to post
Share on other sites
18 horas atrás, Isabel Carvalho disse:

 

Boa tarde,

Desde terça feira estamos novamente a ter problemas de comunicação com a AT. Mais alguém está a ter problemas?

O erro que obtemos é o seguinte:

"Web exception: The remote certificate is invalid according to the validation procedure. : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. "

Estamos a tentar perceber se se trata de um problema do lado da AT ou não. A verdade é que não acontece em todos os clientes, pelo menos para já.

Cumprimentos,

 

Isabel Carvalho

Bom dia
Temos o mesmo problema. Algumas máquinas funcionam em outras não. Num servidor 12 funciona, numa  windows 10 funciona e noutra não. ambas são actualizadas com o 1903.

Link to post
Share on other sites
5 horas atrás, Isabel Carvalho disse:

Bom dia,

 

obrigada pela resposta, mas não é esse  problema. Estamos a falar de vários sistemas operativos, em centenas de clientes que comunicavam até ontem, e deixaram quase todos de comunicar. 

Neste vários sistemas operativos tem a certeza que têm os certificados actualizados? E o certificados da aplicação não terá caducado? Sei que são perguntas estúpidas, mas as vezes pode acontecer :)

Link to post
Share on other sites

Em Julho tive o mesmo problema num Windows 2008 e foi necessário actualizar o seguinte certificado do Windows:

Global Chambersign Root 2008

Foi exportado de outro Windows e importado para o 2008 e tem a data de expiração de 31/07/2038.
Pode ser que seja um problema semelhante...

Link to post
Share on other sites
4 horas atrás, pjmvc disse:

Em Julho tive o mesmo problema num Windows 2008 e foi necessário actualizar o seguinte certificado do Windows:

Global Chambersign Root 2008

Foi exportado de outro Windows e importado para o 2008 e tem a data de expiração de 31/07/2038.
Pode ser que seja um problema semelhante...

até agora resolvi-o como aqui indicado
https://genopro.com/ssl/

  • Vote 2
Link to post
Share on other sites
Em 04/09/2020 às 08:18, pedrokins disse:

Este é o código que estou a utilizar e não me parece dar qualquer erro com a comunicação.

E em baixo o XML que que estou a enviar. 


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
	<S:Header>
		<wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
			<wss:UsernameToken>
				<wss:Username>NIF/USER</wss:Username>
				<wss:Password>s5NJQQ....</wss:Password>
				<wss:Nonce>ZxXOJgzEHDnNX58Z84y6w0z+NuXXiJp....</wss:Nonce>
				<wss:Created>aJ/iTo7IjH.....</wss:Created>
			</wss:UsernameToken>
		</wss:Security>
	</S:Header>
	<S:Body>
		<ns2:RegisterInvoiceElem xmlns:ns2="http://servicos.portaldasfinancas.gov.pt/faturas/">
			<TaxRegistrationNumber>NIF</TaxRegistrationNumber>
			<ns2:InvoiceNo>FR 2020SA1/1</ns2:InvoiceNo>
			<ns2:InvoiceDate>2020-09-02</ns2:InvoiceDate>
			<ns2:InvoiceType>FR</ns2:InvoiceType>
			<ns2:InvoiceStatus>N</ns2:InvoiceStatus>
			<CustomerTaxID>999999990</CustomerTaxID>
			<Line>
				<ns2:DebitAmount>100</ns2:DebitAmount>
				<ns2:Tax>
					<ns2:TaxType>IVA</ns2:TaxType>
					<ns2:TaxCountryRegion>PT</ns2:TaxCountryRegion>
					<ns2:TaxPercentage>23</ns2:TaxPercentage>
				</ns2:Tax>
			</Line>
			<DocumentTotals>
				<ns2:TaxPayable>23</ns2:TaxPayable>
				<ns2:NetTotal>100</ns2:NetTotal>
				<ns2:GrossTotal>123</ns2:GrossTotal>
			</DocumentTotals>
		</ns2:RegisterInvoiceElem>
	</S:Body>
</S:Envelope>

 

O XML de resposta que recebo é este, mas quando testo o serviço em https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action tudo esta a funcionar bem. O que me parece ser um erro do meu lado. Alguém me consegue ajudar a tentar perceber o que está errado?


<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns0:RegisterInvoiceResponseElem xmlns:ns0="http://servicos.portaldasfinancas.gov.pt/faturas/"><ReturnCode>-99</ReturnCode><ReturnMessage>Erro de sistema. Por favor volte a tentar mais tarde.</ReturnMessage></ns0:RegisterInvoiceResponseElem></env:Body></env:Envelope>

Obrigado desde já!

Bom dia mais uma vez! Desculpem voltar ao mesmo...mas faça continuo a nao conseguir comunicar e a nao perceber o que está a acontecer....olhando para este código alguém consegue detetar o que me poderá estar a falhar?

Comunicação de faturas À AT....

Link to post
Share on other sites
3 horas atrás, pedrokins disse:

Bom dia mais uma vez! Desculpem voltar ao mesmo...mas faça continuo a nao conseguir comunicar e a nao perceber o que está a acontecer....olhando para este código alguém consegue detetar o que me poderá estar a falhar?

Comunicação de faturas À AT....

Não sei se estará relacionado com o erro ou não, mas as faturas são documentos a crédito e, por isso, deve ser usado o ns2:CreditAmount e não o ns2:DebitAmount.

Edited by jorang
Link to post
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.