Rafael Faria Posted October 12, 2022 at 11:42 AM Report Share #627530 Posted October 12, 2022 at 11:42 AM (edited) Vocês sabem se o certificado para testes disponibilizado em https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Faturacao/Paginas/default.aspx, pode ser utilizado para os serviços da declaração mensal de remunerações ou é preciso solicitar outro à at? Edited October 12, 2022 at 11:43 AM by Rafael Faria Link to comment Share on other sites More sharing options...
americob Posted October 12, 2022 at 03:44 PM Report Share #627534 Posted October 12, 2022 at 03:44 PM 4 horas atrás, Rafael Faria disse: Vocês sabem se o certificado para testes disponibilizado em https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Faturacao/Paginas/default.aspx, pode ser utilizado para os serviços da declaração mensal de remunerações ou é preciso solicitar outro à at? Sim, o certificado de testes é único para todos os Webservices 1 Report Link to comment Share on other sites More sharing options...
p3druh77 Posted October 13, 2022 at 01:24 PM Report Share #627545 Posted October 13, 2022 at 01:24 PM Em 11/10/2022 às 16:37, Rafael Faria disse: Boas, fiz isto: byte[] ksBytes = ks.Key; byte[] time = Encoding.UTF8.GetBytes(timestamp); byte[] pwd = Encoding.UTF8.GetBytes("pass"); byte[] combined = new byte[ksBytes.Length + time.Length + pwd.Length]; Array.Copy(ksBytes, combined, ksBytes.Length); Array.Copy(time, 0, combined, ksBytes.Length, time.Length); Array.Copy(pwd, 0, combined, ksBytes.Length + time.Length, pwd.Length); E funcionou? Supostamente não consegues fazer depois o SHA1 de um array. Link to comment Share on other sites More sharing options...
Rafael Faria Posted October 13, 2022 at 03:25 PM Report Share #627546 Posted October 13, 2022 at 03:25 PM (edited) 2 horas atrás, p3druh77 disse: E funcionou? Supostamente não consegues fazer depois o SHA1 de um array. Sim funcionou, eu vou colocar aqui o código para perceberes melhor: private HeaderInfo getHeaderInfo(string username, string password, string timestamp) { HeaderInfo headerInfo; RijndaelManaged ks, rm; Critografia criptografia; string encryptedBase64Password, encryptedDigestedBase64, nonce; byte[] utf8EncodedPassword, utf8EncodedTimestamp, utf8EncodedKs, encryptedUtf8EncodedPassword, combinedPassTimeAndKs, sha1CombinedPassTimeAndKs; ks = new RijndaelManaged { KeySize = 128, BlockSize = 128 }; criptografia = new Critografia(); rm = criptografia.GetRijndaelManaged(ks.Key); utf8EncodedPassword = Encoding.UTF8.GetBytes(password); encryptedUtf8EncodedPassword = criptografia.Encrypt(utf8EncodedPassword, rm); encryptedBase64Password = Convert.ToBase64String(encryptedUtf8EncodedPassword); utf8EncodedPassword = Encoding.UTF8.GetBytes(password); utf8EncodedTimestamp = Encoding.UTF8.GetBytes(timestamp); utf8EncodedKs = ks.Key; combinedPassTimeAndKs = new byte[utf8EncodedKs.Length + utf8EncodedTimestamp.Length + utf8EncodedPassword.Length]; Array.Copy(utf8EncodedKs, combinedPassTimeAndKs, utf8EncodedKs.Length); Array.Copy(utf8EncodedTimestamp, 0, combinedPassTimeAndKs, utf8EncodedKs.Length, utf8EncodedTimestamp.Length); Array.Copy(utf8EncodedPassword, 0, combinedPassTimeAndKs, utf8EncodedKs.Length + utf8EncodedTimestamp.Length, utf8EncodedPassword.Length); using (SHA1Managed sha1 = new SHA1Managed()) { sha1CombinedPassTimeAndKs = sha1.ComputeHash(combinedPassTimeAndKs); } encryptedDigestedBase64 = Convert.ToBase64String(criptografia.Encrypt(sha1CombinedPassTimeAndKs, rm)); nonce = criptografia.RSA(ks.Key); headerInfo = new HeaderInfo() { Username = username, Password = encryptedBase64Password, Nonce = nonce, Digest = encryptedDigestedBase64, Timestamp = timestamp }; return headerInfo; } private string getTimestamp() { return String.Format("{0:yyyy-MM-ddTHH:mm:ssZ}", DateTime.UtcNow); } public class HeaderInfo { public string Username { get; set; } public string Password { get; set; } public string Nonce { get; set; } public string Timestamp { get; set; } public string Digest { get; set; } } public class Critografia { public string RSA(byte[] key) { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); X509Certificate2 certificate = new X509Certificate2(@"Files\Certificates\TestesAT\ChaveCifraPublicaAT2023.cer"); RSA = (RSACryptoServiceProvider)certificate.PublicKey.Key; return Convert.ToBase64String(RSA.Encrypt(key, false)); } public RijndaelManaged GetRijndaelManaged(byte[] secretKeyBytes) { var keyBytes = new byte[16]; Array.Copy(secretKeyBytes, keyBytes, Math.Min(keyBytes.Length, secretKeyBytes.Length)); return new RijndaelManaged { Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7, KeySize = 128, BlockSize = 128, Key = keyBytes, IV = keyBytes }; } public byte[] Encrypt(byte[] plainBytes, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateEncryptor() .TransformFinalBlock(plainBytes, 0, plainBytes.Length); } public byte[] Decrypt(byte[] encryptedData, RijndaelManaged rijndaelManaged) { return rijndaelManaged.CreateDecryptor() .TransformFinalBlock(encryptedData, 0, encryptedData.Length); } } Edited October 13, 2022 at 03:28 PM by Rafael Faria Link to comment Share on other sites More sharing options...
Rafael Faria Posted October 13, 2022 at 05:13 PM Report Share #627548 Posted October 13, 2022 at 05:13 PM Em 12/10/2022 às 16:44, americob disse: Sim, o certificado de testes é único para todos os Webservices Boas, podes-me ajudar? Eu criei um sub-utilizador na at para usar no ambiente de testes e tenho os meus webservices a funcionar, só que quando consumo um serviço qualquer relacionado com a dmr recebo a mensagem de que o utilizador não tem permissão para realizar aquela operação ("O autor SPA autenticado no security header não tem permissões para aceder a uma determinada operação"). Já entrei no portal das finanças com o super utilizador e dei as permissões todas ao sub utilizador, mas mesmo assim ainda recebo a tal mensagem. Será que existe alguma opção escondida no Portal das Finanças que eu não tenha conhecimento? Link to comment Share on other sites More sharing options...
americob Posted October 14, 2022 at 08:07 AM Report Share #627550 Posted October 14, 2022 at 08:07 AM 14 horas atrás, Rafael Faria disse: Boas, podes-me ajudar? Eu criei um sub-utilizador na at para usar no ambiente de testes e tenho os meus webservices a funcionar, só que quando consumo um serviço qualquer relacionado com a dmr recebo a mensagem de que o utilizador não tem permissão para realizar aquela operação ("O autor SPA autenticado no security header não tem permissões para aceder a uma determinada operação"). Já entrei no portal das finanças com o super utilizador e dei as permissões todas ao sub utilizador, mas mesmo assim ainda recebo a tal mensagem. Será que existe alguma opção escondida no Portal das Finanças que eu não tenha conhecimento? Eu ainda não tenho as DMR 100% testadas. 100% testadas e a distribuir só as DPIVA e Documentos de Transporte. As DMR ainda são muito recentes. Olhando para a lista das operações autorizadas, parece-me que ainda não está lá uma operação do género DMR por Webservice ou Declarações de Obrugações Acessórias por Webservice, portanto, por enquanto, só deves conseguir usar com o utilizador principal. 1 Report Link to comment Share on other sites More sharing options...
s0me0ne Posted November 28, 2022 at 05:42 PM Report Share #628411 Posted November 28, 2022 at 05:42 PM Boas a todos, Estou a tentar ler Consultar as declaração DMR enviadas para a AT, mas estou a obter o erro "O servidor remoto devolveu um erro: (500) Erro interno de servidor." não consigo fazer qualquer debug, porque dá erro la ligação ao servidor. Este é o XML gerado no pedido: <?xml version="1.0" encoding="utf-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header> <wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:at="http://at.pt/wsp/auth" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" S:Actor="http://at.pt/actor/SPA" at:Version="2"> <wss:UsernameToken> <wss:Username>599999993/0037</wss:Username> <wss:Password Digest="2ayZlZTnnVQLbSFIHp1wc/YrYSc=">tNW90jDgfstkEYQ9nYsh+A===</wss:Password> <wss:Nonce> UOxGfy0LfWaoLB/5Bi6maMrcJozScEvdpPWxWizL3MXDbxo7+I/DfYcD36UEgrlCqtqMGqOnFhwV4O5b1CEitEBxNoDg80Z9OOppIDyCkbexRz1neY91QHzCxwZifADx6/4+jIZom2X9ouQ6qV806lc+H4D64rINxYN7HDBQmUkjCpBNzg/1cd8LFMAudvtqKyC5hFtGipKqxlysZRRJax6O/u7aDsQHk5F7neqmoTTlcv9i8wHnFqmJsDab8fH1V6YGaZnzf92KabKmE5Fp+wolJkUfgJ0nCnBUo7TC9TUqFQilW+H2HCMIgHLc9RzxcDTDp1UNaf1sIHrKGDqC2w== </wss:Nonce> <wss:Created>2022-11-28T17:36:10.31Z</wss:Created> </wss:UsernameToken> </wss:Security> </env:Header> <S:Body> <ns1:consultarDeclaracoesRequest xmlns:ns1="https://servicos.portaldasfinancas.gov.pt/oaatws/GestaoDeclarativaOAWebService/2021" xmlns:ns0="https://servicos.portaldasfinancas.gov.pt/GestaoDeclarativaWebService/2021/beans"> <modelo>DMR</modelo> </ns1:consultarDeclaracoesRequest> </S:Body> </S:Envelope> Alguém consegue ajudar? Link to comment Share on other sites More sharing options...
americob Posted December 6, 2022 at 03:52 PM Report Share #628601 Posted December 6, 2022 at 03:52 PM Parece-me que ainda não funciona a DMR-AT. Depois de várias tentativas em testes e em produção, tentei usar o teste direto no Portal e este responde: "O ator SPA autenticado no Security Header não tem permissões para aceder a uma determinada operação." mesmo usando a senha principal da empresa que, em princípio, deverá ter permissão para tudo. Alguem tem mais informação? Link to comment Share on other sites More sharing options...
s0me0ne Posted December 7, 2022 at 03:22 PM Report Share #628638 Posted December 7, 2022 at 03:22 PM Em 06/12/2022 às 15:52, americob disse: Parece-me que ainda não funciona a DMR-AT. Depois de várias tentativas em testes e em produção, tentei usar o teste direto no Portal e este responde: "O ator SPA autenticado no Security Header não tem permissões para aceder a uma determinada operação." mesmo usando a senha principal da empresa que, em princípio, deverá ter permissão para tudo. Alguem tem mais informação? Tenta no ambiente de produção. Obtive o mesmo erro no Servidor de teste e quando alterei para o de produção funcionou. Link to comment Share on other sites More sharing options...
americob Posted December 7, 2022 at 04:41 PM Report Share #628641 Posted December 7, 2022 at 04:41 PM Em 07/12/2022 às 15:22, s0me0ne disse: Tenta no ambiente de produção. Obtive o mesmo erro no Servidor de teste e quando alterei para o de produção funcionou. Obrigado. De facto já fiz tantas tentativas que me baralhei. Em produção funciona. Quer dizer que vou ter de fazer os testes em ambiente de produção com dados reais. Tenho até segunda-feira dia 12, ultimo dia do prazo, em que posso fazer todas as substituições que quiser e mais alguma sem penalizações. Se não conseguir, lá terá de ficar para o próximo mês. Outro assunto, Entretanto, já deste uma olhada na Tabela de Retenção na Fonte de IRS para o 2º semestre de 2023? Aquelas formulas são tipicas da matemática que aprendi na faculdade, não faço a mínima ideia onde foram inventar aqueles valores e coeficientes. Se um empregado "normal" quiser conferir se a sua retenção foi bem feita vai ter de usar calculadora científica. Link to comment Share on other sites More sharing options...
Cerzedelo Posted December 7, 2022 at 05:26 PM Report Share #628644 Posted December 7, 2022 at 05:26 PM Em 07/12/2022 às 16:41, americob disse: Outro assunto, Entretanto, já deste uma olhada na Tabela de Retenção na Fonte de IRS para o 2º semestre de 2023? Aquelas formulas são tipicas da matemática que aprendi na faculdade, não faço a mínima ideia onde foram inventar aqueles valores e coeficientes. Se um empregado "normal" quiser conferir se a sua retenção foi bem feita vai ter de usar calculadora científica. Isto faz-me lembrar os jogadores de sueca, baralhar para ficar tudo na mesma. Ou seja, é semear agora para ir colher mais tarde, ou pior, o cinismo de colocar uma formula mais complexa para que os contribuintes desistam de solicitar a nova formula de cálculo, e no entretanto fez o "papelaço" de estar preocupado com as dificuldades do contribuinte. Link to comment Share on other sites More sharing options...
Cu5co Posted February 2, 2023 at 03:16 PM Report Share #629994 Posted February 2, 2023 at 03:16 PM Alguém sabe o link do wsdl do serviço, tipo como o do eFatura: https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Faturacao/Fatcorews/Documents/Fatcorews.wsdl Carlos Matos 💪 Link to comment Share on other sites More sharing options...
americob Posted February 2, 2023 at 09:52 PM Report Share #630006 Posted February 2, 2023 at 09:52 PM Em 02/02/2023 às 15:16, Cu5co disse: Alguém sabe o link do wsdl do serviço, tipo como o do eFatura: https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Faturacao/Fatcorews/Documents/Fatcorews.wsdl Isso é considerado uma Obrigação Acessória, o mesmo serviço serve para várias declarações, entre elas a DMR: https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Obrigacoes_Acessorias_Webservice/Paginas/default.aspx Link to comment Share on other sites More sharing options...
Cu5co Posted February 3, 2023 at 10:31 AM Report Share #630011 Posted February 3, 2023 at 10:31 AM (edited) Em 02/02/2023 às 21:52, americob disse: Isso é considerado uma Obrigação Acessória, o mesmo serviço serve para várias declarações, entre elas a DMR: https://info.portaldasfinancas.gov.pt/pt/apoio_contribuinte/Obrigacoes_Acessorias_Webservice/Paginas/default.aspx Sim eu sei, mas qual o link do wsdl para esse serviço ? O Link disponível no site da AT aponta para um ZIP e queria saber se existe algum link que aponte diretamente para o WSDL. Edited February 3, 2023 at 10:32 AM by Cu5co Carlos Matos 💪 Link to comment Share on other sites More sharing options...
americob Posted February 3, 2023 at 10:34 AM Report Share #630012 Posted February 3, 2023 at 10:34 AM Em 03/02/2023 às 10:31, Cu5co disse: Sim eu sei, mas qual o link do wsdl para esse serviço ? Está na página do link que coloquei! Link to comment Share on other sites More sharing options...
Cu5co Posted February 3, 2023 at 11:31 AM Report Share #630013 Posted February 3, 2023 at 11:31 AM Em 03/02/2023 às 10:34, americob disse: Está na página do link que coloquei! Bom, penso que não estás a perceber. O link que aí está é um link que aponta para um ficheiro ZIP e não para um ficheiro WSDL. Carlos Matos 💪 Link to comment Share on other sites More sharing options...
americob Posted February 3, 2023 at 11:53 AM Report Share #630014 Posted February 3, 2023 at 11:53 AM Em 03/02/2023 às 11:31, Cu5co disse: Bom, penso que não estás a perceber. O link que aí está é um link que aponta para um ficheiro ZIP e não para um ficheiro WSDL. Ok, percebi. Queres colocar o link para o WSDL no teu projeto para teres o ficheiro sempre atualizado. Não me parece que exista esse link. Link to comment Share on other sites More sharing options...
Cu5co Posted February 3, 2023 at 12:02 PM Report Share #630015 Posted February 3, 2023 at 12:02 PM Em 03/02/2023 às 11:53, americob disse: Ok, percebi. Queres colocar o link para o WSDL no teu projeto para teres o ficheiro sempre atualizado. Não me parece que exista esse link. Ok, muito obrigado 😉 Carlos Matos 💪 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