Jump to content

Utilizar Webservices da AT


Recommended Posts

marcolopes

Pelo menos no envio por WebService há tolerância de 5min. Ou seja, podes comunicar até às 10h05 um documento com início de transporte no próprio dia às 10h00.

Ou, antes, pelo menos havia tolerância!... com todas as alterações que já fizeram ao serviço já não estou capaz de poder afirmar.

Exacto. Eu andei a adicionar "tempo" ás datas para evitar "bater" nas verificações do webservice. Como neste momento não tenho forma de testar, alguém confirma que a regra dos 5 minutos se mantém? Assim sendo, posso simplesmente colocar MovementStartTime = data actual.

estamos a 15min da entrada oficial e... nada

Agora que o dizes... nem tinha reparado que daqui a 10 minutos já é dia 1... :-)

Edited by marcolopes

The simplest explanation is usually the correct one

JAVA Utilities: https://github.com/marcolopes/dma

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

nunopicado

Bem, dia 1...

Foi um prazer conhecer-vos!

Quem fez, fez! Quem não fez, terá de fazer "à patrão", que é como quem diz, em produção!

Boa sorte a todos, e que os bytes estejam convosco!

;)

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to post
Share on other sites

Bem, dia 1...

Foi um prazer conhecer-vos!

Quem fez, fez! Quem não fez, terá de fazer "à patrão", que é como quem diz, em produção!

Boa sorte a todos, e que os bytes estejam convosco!

;)

LOL......
Link to post
Share on other sites
João Felix Moreira

Boas,

Yay! arrancou... ou melhor, não... quer dizer, coize... uhm... não funciona, hoje desde as 3 da tarde não consegui mandar 1 unico documentozinho 1 unico que fosse...

O que é mesmo mesmo mesmo triste é que nós fizemos a nossa parte, uns melhor, outros pior, com mais ou menos dificuldade, a trabalhar em overtime, à base de café e donuts... e por causa do amadorismo e percipitação dos Srs. da AT amanhã vamos ter um dia de cão.

Boa sorte a todos, que os bytes estejam convosco, mas acima de tudo, que uma luzinha ilumine os iluminados da AT.

Concordo.

Acho que vou ver mais um pouco do HULK, e vou tentar mais lá para a 1 da manhã. Por descargo de consciência.

Link to post
Share on other sites

Sorte tem agente de não ser envio do documento de transporte por carta registada.... tinhamos de comunicar ai com uns dias de antecedencia 1 semanita.... vá lá não se lembraram deste meio de comunicação :)

Link to post
Share on other sites
João Felix Moreira

Sorte tem agente de não ser envio do documento de transporte por carta registada.... tinhamos de comunicar ai com uns dias de antecedencia 1 semanita.... vá lá não se lembraram deste meio de comunicação :)

Já agora se entrarem no site da e-fatura, também não está com o melhor aspeto.

Link to post
Share on other sites

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 as coisas não iriam correr da melhor forma. Também foi fácil de prever que as coimas teriam de ficar suspensas até nova ordem.. Sistemas desta "envergadura" necessitam de uma grande análise prévia, e de feedback, tanto das empresas como das software houses.

Deveria ter sido criada uma plataforma colaborativa para contacto directo entre a AT e os produtores de software, bem como com as empresas, onde as dúvidas, problemas, sugestões, pudessem ser abertas e comentadas, até serem resolvidas ou abandonadas.

Aliás, tal como DITO AQUI (e passo a citar): http://info.portaldasfinancas.gov.pt/NR/rdonlyres/07A23F83-95A0-43F3-8988-F88A74484C6C/0/Comunicado.pdf

Gostava de saber QUAIS foram as empresas (e software houses???) que foram as PRIVELIGIADAS nesse PROCESSO de COLABORAÇÃO! Onde está a transparência do sistema?? :-\

Tamos contigo ... voto em ti Marco....

Só que somos provavelmente dois pequeninos... pelo menos eu sou tenho meia duzia de clientes... e estou a ter um trabalha de tal envergadura que só visto... Indaa por cima trabalho por ocnta de terceiros... logo não tenho o tempo todo para isto... resumindo estou completamente estafado com isto tive de pedir ferias ao patrao para acabar isto... o interese é que o pequeno acabe porque não..... prontos nãos os conhecemos pessoalmente.... e quando for esse o caso é para nos prender...

Link to post
Share on other sites

boa noite pessoal,

estou a ter um problema com a codifição do nonce penso eu...

uso o vb.net e este é o meu código:

Function AtEnviaDocumento()

    '--------------------------------------------------------------------------
 ' Variavais
 '--------------------------------------------------------------------------

  Dim ComandoEnvio, OperacaoEnvio, OpPortFact, OpPortGuia, Envelope, WebServiceAT, WebSOAPAction, CaminhoCert, PasswordCert, UsernameDoc, PasswordDoc

	 OperacaoEnvio = "factura"
  'ComandoEnvio = "MostraEnvelope"
  ComandoEnvio = "EnviarDocumento"

  CaminhoCert = "D:\Inetpub\_testes\cert\TestesWebServices.pfx"
  PasswordCert = "TESTEwebservice"
  UsernameDoc = "599999993/0037"
  PasswordDoc = "testes1234"
  OpPortFact = "700"
  OpPortGuia = "701"

  IF OperacaoEnvio = "factura" THEN
   WebServiceAT = "https://servicos.portaldasfinancas.gov.pt:" & OpPortFact & "/fews/faturas"
   WebSOAPAction = "http://servicos.portaldasfinancas.gov.pt/faturas/RegisterInvoice"
  ELSE
   WebServiceAT = "https://servicos.portaldasfinancas.gov.pt:" & OpPortGuia & "/sgdtws/documentosTransporte"
   WebSOAPAction = "https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/"
	 END IF

 '--------------------------------------------------------------------------
 ' Variaveis a encriptar
 '--------------------------------------------------------------------------

  Dim PassFinancas As String = PasswordDoc
  Dim DataCriacao As String = Date.Now.ToString("yyyy-MM-ddTHH:mm:ss.ff") & "Z"

 '--------------------------------------------------------------------------
 ' Carregar chave publica
 '--------------------------------------------------------------------------

  Dim CaminhoChavePublica As String = CaminhoCert
  Dim certCP As New X509Certificate2

  certCP.Import(CaminhoChavePublica, PasswordCert, X509KeyStorageFlags.DefaultKeySet)
  Dim ChavePublica As String = certCP.PublicKey.Key.ToXmlString(False)

  Dim ChaveSimetrica(15) As Byte
  Dim aleatorios As New Random()  
  aleatorios.NextBytes(ChaveSimetrica)

 '--------------------------------------------------------------------------
 ' Inserir Chave Simetrica nos parametros de encriptação
 '--------------------------------------------------------------------------

  Dim rijn As SymmetricAlgorithm = SymmetricAlgorithm.Create()
  rijn.Key = ChaveSimetrica
  rijn.IV = ChaveSimetrica
  rijn.Mode = CipherMode.ECB
  rijn.Padding = PaddingMode.PKCS7

 '--------------------------------------------------------------------------
 ' Encriptar password das financas
 '--------------------------------------------------------------------------
  Dim msPassFinancas As New MemoryStream
  Dim csPassFinancas As New CryptoStream(msPassFinancas, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write)

  Using swPassFinancas As New StreamWriter(csPassFinancas)
   swPassFinancas.Write(PassFinancas)
  End Using

 '--------------------------------------------------------------------------
 ' Encriptar data
 '--------------------------------------------------------------------------

  Dim msDataCriacao As New MemoryStream
  Dim csDataCriacao As New CryptoStream(msDataCriacao, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write)

  Using swDataCriacao As New StreamWriter(csDataCriacao)
   swDataCriacao.Write(DataCriacao, 0, DataCriacao)
   csDataCriacao.FlushFinalBlock()
  End Using

 '--------------------------------------------------------------------------
 ' Converter de bytes para string
 '--------------------------------------------------------------------------

  Dim encryptPass, encryptDate, mNonce

  Dim PassFinancasEncriptada As String = System.Convert.ToBase64String(msPassFinancas.ToArray())
  encryptPass = PassFinancasEncriptada

  Dim DataCriacaoEncriptada As String = System.Convert.ToBase64String(msDataCriacao.ToArray())
  encryptDate = DataCriacaoEncriptada

 '--------------------------------------------------------------------------
 ' Encriptar a chave simetrica com o algoritmo RSA e com a chave pública
 '--------------------------------------------------------------------------

  Dim AlgRSA As New RSACryptoServiceProvider
  AlgRSA.FromXmlString(ChavePublica)

  Dim Chave() As Byte = AlgRSA.Encrypt(ChaveSimetrica, False)
  Dim ChaveSimetricaEncriptada As String = System.Convert.ToBase64String(Chave)

  mNonce = ChaveSimetricaEncriptada

 '--------------------------------------------------------------------------
 ' Cria o envelope
 '--------------------------------------------------------------------------

   IF OperacaoEnvio = "factura" THEN
 Envelope = "<?xml version='1.0' encoding='utf-8' standalone='no'?><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>" & UsernameDoc & "
</wss:Username><wss:Password>" & encryptPass & "</wss:Password><wss:Nonce>" & mNonce & "</wss:Nonce><wss:Created>" & encryptDate & "</wss:Created></wss:UsernameToken></wss:Security></S:Header><S:Body><ns2:RegisterInvoiceElem xmlns:ns2='http://servicos.portaldasfinancas.gov.pt/faturas/'><TaxRegistrationNumber>599999993</TaxRegistrationNumber><ns2:InvoiceNo>- /1</ns2:InvoiceNo><ns2:InvoiceDate>2012-05-05</ns2:InvoiceDate><ns2:InvoiceType>FT</ns2:InvoiceType><ns2:InvoiceStatus>N</ns2:InvoiceStatus><CustomerTaxID>299999998</CustomerTaxID><Line><ns2:CreditAmount>100</ns2:CreditAmount><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>"
  ELSE
   Envelope = "<?xml version='1.0' encoding='utf-8' standalone='no'?><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>" & UsernameDoc & "</wss:Username><wss:Password>" & encryptPass & "</wss:Password><wss:Nonce>" & mNonce & "</wss:Nonce><wss:Created>" & encryptDate & "</wss:Created></wss:UsernameToken></wss:Security></S:Header><S:Body><ns2:envioDocumentoTransporteRequestElem xmlns:ns2='https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/'><TaxRegistrationNumber>599999993</TaxRegistrationNumber><CompanyName>Bla</CompanyName><CompanyAddress><Addressdetail>Morada Empresa</Addressdetail><City>Cidade Empresa</City><PostalCode>1000-100</PostalCode><Country>PT</Country></CompanyAddress><DocumentNumber>11</DocumentNumber><MovementStatus>N</MovementStatus><MovementDate>2013-06-17Z</MovementDate><MovementType>GR</MovementType><CustomerTaxID>599999993</CustomerTaxID><CustomerAddress><Addressdetail>Morada Cliente</Addressdetail><City>Cidade Cliente</City><PostalCode>1000-100</PostalCode><Country>PT</Country></CustomerAddress><AddressTo><Addressdetail>Morada Descarga</Addressdetail><City>Cidade Descarga</City><PostalCode>1000-100</PostalCode><Country>PT</Country></AddressTo><AddressFrom><Addressdetail>Morada Carga</Addressdetail><City>Cidade Carga</City><PostalCode>1000-100</PostalCode><Country>PT</Country></AddressFrom><MovementEndTime>2013-07-17T05:42:26.452+01:00</MovementEndTime><MovementStartTime>2013-07-17T04:42:26.452+01:00</MovementStartTime><VehicleID>10-10-AA</VehicleID><Line><ProductDescription>Produto1</ProductDescription><Quantity>1</Quantity><UnitOfMeasure>KG</UnitOfMeasure><UnitPrice>1.1</UnitPrice></Line></ns2:envioDocumentoTransporteRequestElem></S:Body></S:Envelope>"
  END IF

 '--------------------------------------------------------------------------
 ' Mostra o envelope
 '--------------------------------------------------------------------------

   IF ComandoEnvio = "MostraEnvelope" THEN
 Response.Write(Envelope)
   END IF

 '--------------------------------------------------------------------------
 ' Envia o documento
 '--------------------------------------------------------------------------

  IF ComandoEnvio = "EnviarDocumento" THEN

   Try

 Dim request As HttpWebRequest = CType(HttpWebRequest.Create(WebServiceAT), HttpWebRequest)

 request.Headers.Add("SOAPAction", WebSOAPAction)

 Dim cert As New X509Certificate2
 cert.Import(CaminhoCert, PasswordCert, X509KeyStorageFlags.DefaultKeySet)
 request.ClientCertificates.Add(cert)
 request.Method = "POST"
 request.ContentType = "text/xml; charset=utf-8"
 request.Accept = "text/xml"

 Dim postData As String = Envelope
 Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
 request.ContentLength = byteArray.Length
 Dim dataStream As Stream = request.GetRequestStream()
 dataStream.Write(byteArray, 0, byteArray.Length)
 dataStream.Close()

 Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
 dataStream = response.GetResponseStream()
 Dim reader As New StreamReader(dataStream)
 Dim responseFromServer As String = reader.ReadToEnd()
 reader.Close()
 dataStream.Close()
 response.Close()

   '--------------------------------------------------------------------------
   ' Responde em caso de erro
   '--------------------------------------------------------------------------

 Return responseFromServer

 Catch ex As WebException

 If ex.Status = WebExceptionStatus.ProtocolError Then
  Dim resp As WebResponse = ex.Response
  Dim sr As StreamReader = New StreamReader(resp.GetResponseStream())
  Return sr.ReadToEnd()
 Else
  Return ex.Message
 End If

   End Try

  END IF

 '--------------------------------------------------------------------------
 '--------------------------------------------------------------------------

End Function

estou a receber este erro:

<?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>8 </faultcode>
<faultstring>Rejected:   |  Codigo: 8  |  Erro: Nonce: Não foi possível decifrar o campo  |  Tentativas Restantes: -1</faultstring>
<detail>fews.gdcontfsimpostos</detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

alguém me pode ajudar?

Link to post
Share on other sites
João Felix Moreira

Tamos contigo ... voto em ti Marco....

Só que somos provavelmente dois pequeninos... pelo menos eu sou tenho meia duzia de clientes... e estou a ter um trabalha de tal envergadura que só visto... Indaa por cima trabalho por ocnta de terceiros... logo não tenho o tempo todo para isto... resumindo estou completamente estafado com isto tive de pedir ferias ao patrao para acabar isto... o interese é que o pequeno acabe porque não..... prontos nãos os conhecemos pessoalmente.... e quando for esse o caso é para nos prender...

Neste momento (tal como vóz tenho acompanhado o arraque), e já obtenho uma resposta. Não consegue descodificar o Nonce. Não sei se vos está a acontecer o mesmo ?

boa noite pessoal,

estou a ter um problema com a codifição do nonce penso eu...

uso o vb.net e este é o meu código:

Function AtEnviaDocumento()

 '--------------------------------------------------------------------------
' Variavais
'--------------------------------------------------------------------------

Dim ComandoEnvio, OperacaoEnvio, OpPortFact, OpPortGuia, Envelope, WebServiceAT, WebSOAPAction, CaminhoCert, PasswordCert, UsernameDoc, PasswordDoc

	 OperacaoEnvio = "factura"
'ComandoEnvio = "MostraEnvelope"
ComandoEnvio = "EnviarDocumento"

CaminhoCert = "D:\Inetpub\_testes\cert\TestesWebServices.pfx"
PasswordCert = "TESTEwebservice"
UsernameDoc = "599999993/0037"
PasswordDoc = "testes1234"
OpPortFact = "700"
OpPortGuia = "701"

IF OperacaoEnvio = "factura" THEN
WebServiceAT = "https://servicos.portaldasfinancas.gov.pt:" & OpPortFact & "/fews/faturas"
WebSOAPAction = "http://servicos.portaldasfinancas.gov.pt/faturas/RegisterInvoice"
ELSE
WebServiceAT = "https://servicos.portaldasfinancas.gov.pt:" & OpPortGuia & "/sgdtws/documentosTransporte"
WebSOAPAction = "https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/"
	 END IF

'--------------------------------------------------------------------------
' Variaveis a encriptar
'--------------------------------------------------------------------------

Dim PassFinancas As String = PasswordDoc
Dim DataCriacao As String = Date.Now.ToString("yyyy-MM-ddTHH:mm:ss.ff") & "Z"

'--------------------------------------------------------------------------
' Carregar chave publica
'--------------------------------------------------------------------------

Dim CaminhoChavePublica As String = CaminhoCert
Dim certCP As New X509Certificate2

certCP.Import(CaminhoChavePublica, PasswordCert, X509KeyStorageFlags.DefaultKeySet)
Dim ChavePublica As String = certCP.PublicKey.Key.ToXmlString(False)

Dim ChaveSimetrica(15) As Byte
Dim aleatorios As New Random()
aleatorios.NextBytes(ChaveSimetrica)

'--------------------------------------------------------------------------
' Inserir Chave Simetrica nos parametros de encriptação
'--------------------------------------------------------------------------

Dim rijn As SymmetricAlgorithm = SymmetricAlgorithm.Create()
rijn.Key = ChaveSimetrica
rijn.IV = ChaveSimetrica
rijn.Mode = CipherMode.ECB
rijn.Padding = PaddingMode.PKCS7

'--------------------------------------------------------------------------
' Encriptar password das financas
'--------------------------------------------------------------------------
Dim msPassFinancas As New MemoryStream
Dim csPassFinancas As New CryptoStream(msPassFinancas, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write)

Using swPassFinancas As New StreamWriter(csPassFinancas)
swPassFinancas.Write(PassFinancas)
End Using

'--------------------------------------------------------------------------
' Encriptar data
'--------------------------------------------------------------------------

Dim msDataCriacao As New MemoryStream
Dim csDataCriacao As New CryptoStream(msDataCriacao, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write)

Using swDataCriacao As New StreamWriter(csDataCriacao)
swDataCriacao.Write(DataCriacao, 0, DataCriacao)
csDataCriacao.FlushFinalBlock()
End Using

'--------------------------------------------------------------------------
' Converter de bytes para string
'--------------------------------------------------------------------------

Dim encryptPass, encryptDate, mNonce

Dim PassFinancasEncriptada As String = System.Convert.ToBase64String(msPassFinancas.ToArray())
encryptPass = PassFinancasEncriptada

Dim DataCriacaoEncriptada As String = System.Convert.ToBase64String(msDataCriacao.ToArray())
encryptDate = DataCriacaoEncriptada

'--------------------------------------------------------------------------
' Encriptar a chave simetrica com o algoritmo RSA e com a chave pública
'--------------------------------------------------------------------------

Dim AlgRSA As New RSACryptoServiceProvider
AlgRSA.FromXmlString(ChavePublica)

Dim Chave() As Byte = AlgRSA.Encrypt(ChaveSimetrica, False)
Dim ChaveSimetricaEncriptada As String = System.Convert.ToBase64String(Chave)

mNonce = ChaveSimetricaEncriptada

'--------------------------------------------------------------------------
' Cria o envelope
'--------------------------------------------------------------------------

IF OperacaoEnvio = "factura" THEN
 Envelope = "<?xml version='1.0' encoding='utf-8' standalone='no'?><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>" & UsernameDoc & "
</wss:Username><wss:Password>" & encryptPass & "</wss:Password><wss:Nonce>" & mNonce & "</wss:Nonce><wss:Created>" & encryptDate & "</wss:Created></wss:UsernameToken></wss:Security></S:Header><S:Body><ns2:RegisterInvoiceElem xmlns:ns2='http://servicos.portaldasfinancas.gov.pt/faturas/'><TaxRegistrationNumber>599999993</TaxRegistrationNumber><ns2:InvoiceNo>- /1</ns2:InvoiceNo><ns2:InvoiceDate>2012-05-05</ns2:InvoiceDate><ns2:InvoiceType>FT</ns2:InvoiceType><ns2:InvoiceStatus>N</ns2:InvoiceStatus><CustomerTaxID>299999998</CustomerTaxID><Line><ns2:CreditAmount>100</ns2:CreditAmount><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>"
ELSE
Envelope = "<?xml version='1.0' encoding='utf-8' standalone='no'?><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>" & UsernameDoc & "</wss:Username><wss:Password>" & encryptPass & "</wss:Password><wss:Nonce>" & mNonce & "</wss:Nonce><wss:Created>" & encryptDate & "</wss:Created></wss:UsernameToken></wss:Security></S:Header><S:Body><ns2:envioDocumentoTransporteRequestElem xmlns:ns2='https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/'><TaxRegistrationNumber>599999993</TaxRegistrationNumber><CompanyName>Bla</CompanyName><CompanyAddress><Addressdetail>Morada Empresa</Addressdetail><City>Cidade Empresa</City><PostalCode>1000-100</PostalCode><Country>PT</Country></CompanyAddress><DocumentNumber>11</DocumentNumber><MovementStatus>N</MovementStatus><MovementDate>2013-06-17Z</MovementDate><MovementType>GR</MovementType><CustomerTaxID>599999993</CustomerTaxID><CustomerAddress><Addressdetail>Morada Cliente</Addressdetail><City>Cidade Cliente</City><PostalCode>1000-100</PostalCode><Country>PT</Country></CustomerAddress><AddressTo><Addressdetail>Morada Descarga</Addressdetail><City>Cidade Descarga</City><PostalCode>1000-100</PostalCode><Country>PT</Country></AddressTo><AddressFrom><Addressdetail>Morada Carga</Addressdetail><City>Cidade Carga</City><PostalCode>1000-100</PostalCode><Country>PT</Country></AddressFrom><MovementEndTime>2013-07-17T05:42:26.452+01:00</MovementEndTime><MovementStartTime>2013-07-17T04:42:26.452+01:00</MovementStartTime><VehicleID>10-10-AA</VehicleID><Line><ProductDescription>Produto1</ProductDescription><Quantity>1</Quantity><UnitOfMeasure>KG</UnitOfMeasure><UnitPrice>1.1</UnitPrice></Line></ns2:envioDocumentoTransporteRequestElem></S:Body></S:Envelope>"
END IF

'--------------------------------------------------------------------------
' Mostra o envelope
'--------------------------------------------------------------------------

IF ComandoEnvio = "MostraEnvelope" THEN
 Response.Write(Envelope)
END IF

'--------------------------------------------------------------------------
' Envia o documento
'--------------------------------------------------------------------------

IF ComandoEnvio = "EnviarDocumento" THEN

Try

 Dim request As HttpWebRequest = CType(HttpWebRequest.Create(WebServiceAT), HttpWebRequest)

 request.Headers.Add("SOAPAction", WebSOAPAction)

 Dim cert As New X509Certificate2
 cert.Import(CaminhoCert, PasswordCert, X509KeyStorageFlags.DefaultKeySet)
 request.ClientCertificates.Add(cert)
 request.Method = "POST"
 request.ContentType = "text/xml; charset=utf-8"
 request.Accept = "text/xml"

 Dim postData As String = Envelope
 Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
 request.ContentLength = byteArray.Length
 Dim dataStream As Stream = request.GetRequestStream()
 dataStream.Write(byteArray, 0, byteArray.Length)
 dataStream.Close()

 Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
 dataStream = response.GetResponseStream()
 Dim reader As New StreamReader(dataStream)
 Dim responseFromServer As String = reader.ReadToEnd()
 reader.Close()
 dataStream.Close()
 response.Close()

'--------------------------------------------------------------------------
' Responde em caso de erro
'--------------------------------------------------------------------------

 Return responseFromServer

 Catch ex As WebException

 If ex.Status = WebExceptionStatus.ProtocolError Then
 Dim resp As WebResponse = ex.Response
 Dim sr As StreamReader = New StreamReader(resp.GetResponseStream())
 Return sr.ReadToEnd()
 Else
 Return ex.Message
 End If

End Try

END IF

'--------------------------------------------------------------------------
'--------------------------------------------------------------------------

End Function

estou a receber este erro:

<?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>8 </faultcode>
<faultstring>Rejected: | Codigo: 8 | Erro: Nonce: Não foi possível decifrar o campo | Tentativas Restantes: -1</faultstring>
<detail>fews.gdcontfsimpostos</detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

alguém me pode ajudar?

São meras suposições mas tenho quase a certeza que as chaves privadas/publicas ainda estão a ser carregadas.

Link to post
Share on other sites
João Felix Moreira

João Felix Moreira como assim?

Até a data de hoje, temos usado a chave privada (pfx) e a chave publica (cer) dadas pela AT. Certificados que acabaram ontem. No entanto acabei de inserir um GT em testes, portanto não percebo.

Mas para esclarecer, se te ligas com a chave privada, usas a publica para encriptação, e consequente descriptação do lado da AT. Questão do lado deles não está resolvida.

Pois se ligas o Webservice, porque raio não descodificam o nonce ?

Link to post
Share on other sites
mjjferreira

Boas pessoal madrugador (e farto de sofrer... :P )

A minha entrada em Produção foi "engraçada"... as duas primeiras guias da Era "1 Julho de 2013" foram 5 estrelas... autenticadas que nem ginjas!

Eu logo vi que estava a correr bem demais, já se emitiram mais 43 guias desde essa altura e nenhuma delas com sucesso... obtenho sempre o erro:

Rejected by policy

Também estão com este retorno?

Cumpts

Link to post
Share on other sites
karthick

oi,

Desde ontem eu estava recebendo o erro abaixo.

Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:701

Closing connection 0

Curl: (35) Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:701

É problema com a AT webservice?

Karthick

Link to post
Share on other sites
mjjferreira

oi,

Desde ontem eu estava recebendo o erro abaixo.

Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:701

Closing connection 0

Curl: (35) Unknown SSL protocol error in connection to servicos.portaldasfinancas.gov.pt:701

É problema com a AT webservice?

Karthick

Parace-me que são permissões do teu lado.

Estás por detrás de algum proxy?

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.