bioshock Posted January 23, 2023 at 07:45 PM Report Share #629897 Posted January 23, 2023 at 07:45 PM Porque é que há tanta discussão à volta de qual a mensagem retornada pelos serviços AT no que toca às guias? A única coisa que precisa de ser validada é o campo ReturnCode, onde caso o valor seja 0 significa que a guia foi comunicada com sucesso. preg_match('/<ReturnCode>(.*?)<\/ReturnCode>/s', $response, $statusCode); O resto não interessa. Só quando deixar de devolver o valor 0, é que tem de se preocupar. 😅 1 Report Link to comment Share on other sites More sharing options...
marcolopes Posted January 23, 2023 at 08:00 PM Report Share #629898 Posted January 23, 2023 at 08:00 PM On 1/23/2023 at 7:45 PM, bioshock said: Porque é que há tanta discussão à volta de qual a mensagem retornada pelos serviços AT no que toca às guias? A única coisa que precisa de ser validada é o campo ReturnCode, onde caso o valor seja 0 significa que a guia foi comunicada com sucesso. preg_match('/<ReturnCode>(.*?)<\/ReturnCode>/s', $response, $statusCode); O resto não interessa. Só quando deixar de devolver o valor 0, é que tem de se preocupar. 😅 Já disse isso diversas vezes... De qualquer forma, se a AT está a colocar uma mensagem de SUCESSO com informação "relevante", a mesma deverá? ser apresentada ao utilizador... Resta saber se a mensagem actual não irá causar confusão... uma vez que, por exemplo, alerta para um ATCUD inválido, quando o mesmo é correctamente comunicado. The simplest explanation is usually the correct one JAVA Utilities: https://github.com/marcolopes/dma Link to comment Share on other sites More sharing options...
desconfiado Posted January 24, 2023 at 12:06 PM Report Share #629899 Posted January 24, 2023 at 12:06 PM Estou a desenvolver a comunicação de séries de Auto Faturação mas surgiu-me um problema que não sei como resolver. Não consigo comunicar séries em modo de teste. Devolve-me sempre a mensagem "Não foi possível registar a Série. Por favor corrija os erros nos campos assinalados. Não existe acordo prévio de autofaturação ativo associado ao Número de Identificação Fiscal introduzido.". Acontece que o NIF está registado com acordo mas em ambiente "real". Em ambiente de teste, aparentemente não. Como consigo registar um acordo em ambiente de testes para poder testar a comunicação? Link to comment Share on other sites More sharing options...
CarlosCMDG Posted January 24, 2023 at 12:54 PM Report Share #629900 Posted January 24, 2023 at 12:54 PM (edited) Em 23/01/2023 às 19:45, bioshock disse: Porque é que há tanta discussão à volta de qual a mensagem retornada pelos serviços AT no que toca às guias? A única coisa que precisa de ser validada é o campo ReturnCode, onde caso o valor seja 0 significa que a guia foi comunicada com sucesso. preg_match('/<ReturnCode>(.*?)<\/ReturnCode>/s', $response, $statusCode); O resto não interessa. Só quando deixar de devolver o valor 0, é que tem de se preocupar. 😅 Olá, eu comunico sem essa mensagem, quer em Produção, quer em Testes. <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>501854371/2</wss:Username><wss:Password>vKAe6FPfRLVTzfgmpUBr6w==</wss:Password><wss:Nonce>KLQnHomwJ9xbFsiQbq0CvMgnu/MpIQCVGGPxgaVvHg/809YkMSGoCVsF+SBf9T0i4UYjx5erq7i++UM5k+BkgdPw9b3qEkWofIxp/YGn2ytdAxTEH35jDXSEZKqKb0xOzePbAgrF98P6YXru80Q7CM6Ix5hLelbTgacXm/qpN9o/vaTPRrzAw8HhTEf/Wr03wuGJY8yXDf9cMujrcmIVZEw1V3F4AArZPRt41hAe5WRh8qoSxy4uUOZvdVtP3ArJJG3n2FQKknJP/RTLqyW3vmczwscqHOideUH/KIB6cBNDP//eTw8LPAj+j3b3uU+bmSW6jO9sVVlYGJhlzfTdzg==</wss:Nonce><wss:Created>c8KGulA/dYRGXhvrUmUSQShumbsTuNbyvxE8+nAsSsY=</wss:Created></wss:UsernameToken></wss:Security></soapenv:Header><soapenv:Body><doc:envioDocumentoTransporteRequestElem><TaxRegistrationNumber>501854371</TaxRegistrationNumber><CompanyName>F3M SA</CompanyName><CompanyAddress><Addressdetail>Rua de Linhares</Addressdetail><City>Braga</City><PostalCode>4715-435</PostalCode><Country>PT</Country></CompanyAddress><DocumentNumber>GR 2019/8</DocumentNumber><ATCUD>AAJFFZ3X2S-8</ATCUD><MovementStatus>N</MovementStatus><MovementDate>2023-01-24</MovementDate><MovementType>GR</MovementType><CustomerTaxID>212367366</CustomerTaxID><CustomerName>Carlos</CustomerName><AddressTo><Addressdetail>qweq</Addressdetail><City>Matosinhos</City><PostalCode>4455-516</PostalCode><Country>PT</Country></AddressTo><AddressFrom><Addressdetail>aweq</Addressdetail><City>Leiria</City><PostalCode>2410-026</PostalCode><Country>PT</Country></AddressFrom><MovementStartTime>2023-01-24T13:02:00</MovementStartTime><Line><ProductDescription>Etiqueta de Tamanhos</ProductDescription><Quantity>1</Quantity><UnitOfMeasure>Unidade</UnitOfMeasure><UnitPrice>1</UnitPrice></Line></doc:envioDocumentoTransporteRequestElem></soapenv:Body></soapenv:Envelope> xml resposta: <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header><WorkContext xmlns="http://oracle.com/weblogic/soap/workarea/">rO0ABXdQABN3ZWJsb2dpYy5hcHAuc2dkdHdzAAAA1gAAACN3ZWJsb2dpYy53b3JrYXJlYS5TdHJpbmdXb3JrQ29udGV4dAAMMS4yMi4xLTQxMjA0AAA=</WorkContext></S:Header><S:Body><ns0:envioDocumentoTransporteResponseElem xmlns:ns0="https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/"><ResponseStatus><ReturnCode>0</ReturnCode><ReturnMessage>OK</ReturnMessage></ResponseStatus><DocumentNumber>GR 2019/8</DocumentNumber><ATCUD>AAJFFZ3X2S-8</ATCUD><ATDocCodeID>1100612391</ATDocCodeID></ns0:envioDocumentoTransporteResponseElem></S:Body></S:Envelope> Edited January 24, 2023 at 05:55 PM by nunopicado Syntax Highlight Link to comment Share on other sites More sharing options...
nogueiraf Posted January 24, 2023 at 04:17 PM Report Share #629902 Posted January 24, 2023 at 04:17 PM (edited) Desde que renovamos o certificado de comunicação de guias de transporte nunca mais conseguimos comunicar com a AT, mais alguém com o mesmo problema? Como o sistema de comunicação era uma versão de .net antiga, tentei criar um novo sistema em C# baseado em muitos dos posts aqui existentes mas estou sempre a obter erro de protocolo... alguma ideia??!?! (não estou neste momento se quer em pensar na validação do conteúdo ou devia? ) private static string Send(string oRequest, string PassPFX) { // DadosTransporte //Testes //string EnderecoWebService = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte"; //Produção string EnderecoWebService = "https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte/"; string SoapAction = "https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/"; string CaminhoCertificado = @"C:\Saft\Guias\certificado.pfx"; string SenhaCertificado = PassPFX; try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(EnderecoWebService); request.Headers.Add("SOAPAction", SoapAction); //X509Certificate2 cert = new X509Certificate2(CaminhoCertificado, SenhaCertificado); //cert.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet); //X509Certificate2 cert = new X509Certificate2(File.ReadAllBytes(CaminhoCertificado)); X509Certificate2Collection certCollection = new X509Certificate2Collection(); certCollection.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet); request.ClientCertificates = certCollection; //request.ClientCertificates.Add(cert); request.Method = "POST"; request.ContentType = "text/xml; charset=utf-8"; request.Accept = "text/xml"; string postData = oRequest; byte[] byteArray = System.Text.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(); // <= O ERRO É OBTIDO AQUI dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.GetEncoding("windows-1252")); 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; } } } Edited January 24, 2023 at 05:46 PM by nogueiraf Link to comment Share on other sites More sharing options...
iznougudpt Posted January 24, 2023 at 05:55 PM Report Share #629905 Posted January 24, 2023 at 05:55 PM Em 24/01/2023 às 16:17, nogueiraf disse: Desde que renovamos o certificado de comunicação de guias de transporte nunca mais conseguimos comunicar com a AT, mais alguém com o mesmo problema? Como o sistema de comunicação era uma versão de .net antiga, tentei criar um novo sistema em C# baseado em muitos dos posts aqui existentes mas estou sempre a obter erro de protocolo... alguma ideia??!?! (não estou neste momento se quer em pensar na validação do conteúdo ou devia? ) private static string Send(string oRequest, string PassPFX) { // DadosTransporte //Testes //string EnderecoWebService = "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte"; //Produção string EnderecoWebService = "https://servicos.portaldasfinancas.gov.pt:401/sgdtws/documentosTransporte/"; string SoapAction = "https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/"; string CaminhoCertificado = @"C:\Saft\Guias\certificado.pfx"; string SenhaCertificado = PassPFX; try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(EnderecoWebService); request.Headers.Add("SOAPAction", SoapAction); //X509Certificate2 cert = new X509Certificate2(CaminhoCertificado, SenhaCertificado); //cert.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet); //X509Certificate2 cert = new X509Certificate2(File.ReadAllBytes(CaminhoCertificado)); X509Certificate2Collection certCollection = new X509Certificate2Collection(); certCollection.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet); request.ClientCertificates = certCollection; //request.ClientCertificates.Add(cert); request.Method = "POST"; request.ContentType = "text/xml; charset=utf-8"; request.Accept = "text/xml"; string postData = oRequest; byte[] byteArray = System.Text.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(); // <= O ERRO É OBTIDO AQUI dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.GetEncoding("windows-1252")); 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; } } } https://easyupload.io/hhsr19 Tens aí um projeto de testes de comunicação das séries em C#. A comunicação das guias é semelhante, por isso deve dar para perceber onde está o erro. O certificado de testes da AT usa o certCollection mas o que eu gero com o OpenSSL não necessita, o mecanismo de certificado simples (comentado) deveria funcionar. Atenção à versão do OpenSLL usado, não pode ser a 3.0, tem de ser uma 1.1.[qq coisa] Link to comment Share on other sites More sharing options...
desconfiado Posted January 24, 2023 at 07:06 PM Report Share #629908 Posted January 24, 2023 at 07:06 PM Em 24/01/2023 às 12:06, desconfiado disse: Estou a desenvolver a comunicação de séries de Auto Faturação mas surgiu-me um problema que não sei como resolver. Não consigo comunicar séries em modo de teste. Devolve-me sempre a mensagem "Não foi possível registar a Série. Por favor corrija os erros nos campos assinalados. Não existe acordo prévio de autofaturação ativo associado ao Número de Identificação Fiscal introduzido.". Acontece que o NIF está registado com acordo mas em ambiente "real". Em ambiente de teste, aparentemente não. Como consigo registar um acordo em ambiente de testes para poder testar a comunicação? Alguém me consegue ajudar nesta questão? Link to comment Share on other sites More sharing options...
desconfiado Posted January 25, 2023 at 04:55 PM Report Share #629913 Posted January 25, 2023 at 04:55 PM Alguém já tem comunicação de séries de AutoFaturação com acordo (ou sem) a funcionar? Link to comment Share on other sites More sharing options...
xanisca Posted January 25, 2023 at 05:28 PM Report Share #629914 Posted January 25, 2023 at 05:28 PM Alguém me pode explicar o mecanismo da auto-facturação? --- o cliente emite a factura e comunica o documento no seu SAFT. E o que faz o fornecedor? Recebe a factura e comunica-a também no seu SAFT? O fornecedor tem de comunicar o acordo de auto-facturação? Como? É a primeira situção que me surge e tenho agora de a contemplar. Obrigado pela ajuda. Link to comment Share on other sites More sharing options...
pjmvc Posted January 25, 2023 at 06:00 PM Report Share #629916 Posted January 25, 2023 at 06:00 PM (edited) Em 25/01/2023 às 17:28, xanisca disse: Alguém me pode explicar o mecanismo da auto-facturação? --- o cliente emite a factura e comunica o documento no seu SAFT. E o que faz o fornecedor? Recebe a factura e comunica-a também no seu SAFT? O fornecedor tem de comunicar o acordo de auto-facturação? Como? É a primeira situção que me surge e tenho agora de a contemplar. Obrigado pela ajuda. A auto-facturação é mais uma daquelas situações em que ligaram o complicador! O cliente emite a auto-factura mas esse documento não é enviado no proprio SAF. Os documentos de auto-facturação devem exportados num ficheiro SAF separado (um ficheiro por fornecedor) com os dados invertidos, como o se o documento tivesse sido feito pelo fornecedor, ou seja: O cabecalho do SAF leva os dados do fornecedor e a auto-factura leva os dados do cliente. De seguida esse ficheiro deve ser enviado ao respectivo fornecedor que depois o comunica à AT. O acordo pode ser comunicado no portal da AT ou por um WebService disponibilizado à pouco tempo. Atenção: Se for auto-facturação sem acordo basta uma série para todos os documentos. Se for Auto-facturação com acordo tem que ser criada uma série de documentos por cada fornecedor. Edited January 25, 2023 at 06:16 PM by pjmvc Link to comment Share on other sites More sharing options...
nunopicado Posted January 26, 2023 at 09:46 AM Report Share #629920 Posted January 26, 2023 at 09:46 AM Pessoal, alguém com o erro 33 - falha de comunicação com o servidor de autenticação - a comunicar guias nesta bela manhã de inverno? "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 comment Share on other sites More sharing options...
Solskajer Posted January 26, 2023 at 09:47 AM Report Share #629921 Posted January 26, 2023 at 09:47 AM Em 26/01/2023 às 09:46, nunopicado disse: Pessoal, alguém com o erro 33 - falha de comunicação com o servidor de autenticação - a comunicar guias nesta bela manhã de inverno? Sim, Já tive conhecimento de 1 cliente no algarve e outro no porto com esse problema agora após as 09h40. Link to comment Share on other sites More sharing options...
avilacha Posted January 26, 2023 at 09:50 AM Report Share #629922 Posted January 26, 2023 at 09:50 AM On 1/26/2023 at 9:46 AM, nunopicado said: Pessoal, alguém com o erro 33 - falha de comunicação com o servidor de autenticação - a comunicar guias nesta bela manhã de inverno? Erro 33 - Falha comunicação com servidor de autenticação e o https://faturas.portaldasfinancas.gov.pt dá-me "a ligação segura falhou" Link to comment Share on other sites More sharing options...
helderrscorreia Posted January 26, 2023 at 09:53 AM Report Share #629923 Posted January 26, 2023 at 09:53 AM Por aqui também está a acontecer, parece ser geral. Link to comment Share on other sites More sharing options...
Jose Guerreiro Posted January 26, 2023 at 10:00 AM Report Share #629924 Posted January 26, 2023 at 10:00 AM por aqui o mesmo, até o portal das finanças está em baixo Link to comment Share on other sites More sharing options...
Elio_Mota Posted January 26, 2023 at 10:02 AM Report Share #629925 Posted January 26, 2023 at 10:02 AM o portal das finanças esta em baixo??? Link to comment Share on other sites More sharing options...
nunopicado Posted January 26, 2023 at 10:03 AM Report Share #629926 Posted January 26, 2023 at 10:03 AM Em 26/01/2023 às 10:02, Elio_Mota disse: o portal das finanças esta em baixo??? Sim. Portal das Finanças, E-Fatura, Webservice... No meu caso concreto nem por telefone está a dar, diz que o meu código é inválido (ainda que nunca tenha usado, é o que tenho aqui registado, pelo que não sei se mesmo o serviço telefónico não está a passar-se). "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 comment Share on other sites More sharing options...
radikal Posted January 26, 2023 at 10:05 AM Report Share #629927 Posted January 26, 2023 at 10:05 AM Também estou com problemas na comunicação. Link to comment Share on other sites More sharing options...
furiousangelpt Posted January 26, 2023 at 10:13 AM Report Share #629928 Posted January 26, 2023 at 10:13 AM eles ontem estavam a ser atacados, parece que hoje foi em força. Link to comment Share on other sites More sharing options...
Nuno Carreira Posted January 26, 2023 at 10:15 AM Report Share #629929 Posted January 26, 2023 at 10:15 AM (edited) Também estou com problemas. O sistema está down. { "data": null, "meta": { "message": "Client received SOAP Fault from server: Falha comunicacao com Servidor de Autenticacao (500) Please see the server log to find more detail regarding exact cause of the failure.", "code": "K_HTTP_CODE_BAD_REQUEST", "technicalCode": null, "technicalMessage": null } } Edited January 26, 2023 at 10:52 AM by nunopicado Syntax Highlight Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now