• Revista PROGRAMAR: Já está disponível a edição #54 da revista programar. Faz já o download aqui!

cjulio

Utilizar Webservices da AT

7095 mensagens neste tópico

Contabilisticamente, o conceito de ISENTO e de NÃO SUJEITO estão bem definidos e uma coisa é ser Isento, outra é ser Não Sujeito.

No entanto, não é essa interpretação que eles dão em termos de SAF-T.

Para eles ou é IVA (e por isso sujeito) ou se não sujeito é IS (usados pelos Bancos e Seguradoras).

Por isso é que entre os motivos de ISENÇÃO aparece o "Não sujeito".

Para mim, se é IVA é sempre sujeito e depois entre os motivos de isenção é que aparece o "Não sujeito".

Não tem lógica mas é assim.

 

 

1

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Basicamente, a diferença entre Isenção e Não sujeição (também chamadas isenções completas) tem a ver com a possibilidade de deduzir o IVA quando se adquire os materiais.
Por exemplo, um médico, quando fatura é isento pelo artigo 9º, mas em contrapartida não tem direito a deduzir o IVA que paga aos seus fornecedores quando compra os materiais necessários ao desenvolvimento da sua atividade.
Já quando é uma operação não sujeita, como no caso do trespasse de um estabelecimento, não tem IVA, mas o vendedor entretanto terá deduzido o IVA das coisas que está a trespassar (por isso se chamar uma isenção completa).
 

2

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá malta o ano passado coloquei o pfx que me enviaram no servidor ubuntu e tive o ano todo sem problemas agora já o converti CER CRT e tudo mais nao consigo adicionar às chaves logo o webservice dá me retorno . e -1 não me deixa comunicar. alguém sabe como instalar o certificado enviado por mail no ubuntu para ver se estou a fazer alguma coisa mal? 

 

Muito obrigado

 

 

[edit]

 

Tenho outro certificado expirado, ha por aí explicação de como comunicar em php / Curl (soap) para comparar com o que já tenho cá?

Editado por Grifen
novidades
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho um cliente a comunicar guias nos açores e tenho sempre o erro 

-100 - A data início de transporte é inferior à data atual, pelo que esta informação será considerada uma mera comunicação de dados à AT;

ISto deve ter a ver com a diferença horária.

 

Estive a ver  e existe a tag <InACores>, mas apenas existe na Comunicação Prévia de Guia Global de Aquisição de Produtos de Produtores Agrícolas.

 

Como contornaram isto, ou acrescentam 1 hora à hora da carga?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
2 minutos atrás, joaquimpais disse:

Tenho um cliente a comunicar guias nos açores e tenho sempre o erro 

-100 - A data início de transporte é inferior à data atual, pelo que esta informação será considerada uma mera comunicação de dados à AT;

ISto deve ter a ver com a diferença horária.

 

Estive a ver  e existe a tag <InACores>, mas apenas existe na Comunicação Prévia de Guia Global de Aquisição de Produtos de Produtores Agrícolas.

 

Como contornaram isto, ou acrescentam 1 hora à hora da carga?

Na especificação do webservice de transporte, a data/hora têm de ser convertidas para UTC.

Possivelmente isso resolve a situação, pois mete todos em pé de igualdade, mas não deves estar a fazer.
Confere isso. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
45 minutos atrás, nunopicado disse:

Na especificação do webservice de transporte, a data/hora têm de ser convertidas para UTC.

Possivelmente isso resolve a situação, pois mete todos em pé de igualdade, mas não deves estar a fazer.
Confere isso. ;)

Resolvido, muito obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom dia,

 

Alguém que me possa tirar umas duvidas a cerca dos web services em .net?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

essa duvida é mto generica ...

mas qual é o problema em concreto ?

 

 

1

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Em 07/02/2017 às 16:03, cealex disse:

essa duvida é mto generica ...

mas qual é o problema em concreto ?

 

 

Olá cealex,

Antes de mais agradeço a tua disponibilidade.

O que se passa é o seguinte: eu consigo comunicar com o web service de documentos de transporte em C#, mas os outros webservice disponibilizados pela AT que contenham a password Digest, já não consigo fazer com que comunique. (famoso erro 500 - Erro interno de servidor) Já tentei gerar o digest de várias maneiras sem sucesso.

A última tentativa foi, (replicado do java applet da AT):

           

            // Geração do DIGEST

            // Concatenação dos array's bytes da Ks + Created + SenhaPF

            byte[] bytesNonce = Chave;

            byte[] bytesCreated = Encoding.UTF8.GetBytes(Created);

            byte[] bytesPassword =  Encoding.UTF8.GetBytes(SenhaPF);



            byte[] digestInput = new byte[bytesNonce.length + bytesCreated.length + bytesPassword.length];

            Array.Copy(bytesNonce, 0, digestInput, 0, bytesNonce.length);

            Array.Copy(bytesCreated, 0, digestInput, bytesNonce.length, bytesCreated.length);

            Array.Copy(bytesPassword, 0, digestInput, bytesNonce.length + bytesCreated.length, bytesPassword.length);

            // Função de cálculo de Digest usando o algoritmo SHA-1

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



            var buffer = new SHA1CryptoServiceProvider().ComputeHash(digestArray);
            // Fluxo de memória de Digest
            MemoryStream msDigest = new MemoryStream();
           // Função que cifra o Digest utilizando o algoritmo AES, Modelo ECB, PKCS5Padding e a chave simétrica do pedido Ks
             CryptoStream csDigest = new CryptoStream(msDigest, rijndaelCipher.CreateEncryptor(Ks, rijndaelCipher.IV), CryptoStreamMode.Write);                 using (StreamWriter swDigest = new StreamWriter(csDigest))
             {
                  swDigest.Write(SHA1Bytes);
              } /
             // Digest Convertido em Base64
             Digest = Convert.ToBase64String(msDigest.ToArray());

 

Editado por nunopicado
Syntax Highlighting
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qual é o webservice em questão ?  

envia a url do webservice.

envia-me links relevantes ... ex: java applet da AT

tens user e password especificas para isto ?

são de dominio publico ? , as pwds e user ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
5 horas atrás, cealex disse:

qual é o webservice em questão ?  

envia a url do webservice.

envia-me links relevantes ... ex: java applet da AT

tens user e password especificas para isto ?

são de dominio publico ? , as pwds e user ?

Olá novamente.

O WebService é o Modelo22.
1 - public string EnderecoWebService = "https://servicos.portaldasfinancas.gov.pt:705/dm22ircws/SubmeterDeclaracaoIRCService";

2 - O código java está em produtores de software na página do e-fatura: https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action
Fazes o download do source code. Mudas o ficheiro FACTEMIPFCLI-1.6.1-0019-sources.jar  para  FACTEMIPFCLI-1.6.1-0019-sources.zip. Depois dentro da pasta vais ao "\FACTEMIPFCLI-1.6.1-0019-sources\pt\at\factemipf\core\webservices\proxy\SOAPMessageLoggerHandler.java" onde tens o seguinte código:

    private byte[] buildPasswordDigest(byte[] simetricKey, String timestamp, String password) throws UnsupportedEncodingException, NoSuchAlgorithmException {
        byte[] bytesNonce = simetricKey;
        byte[] bytesCreated = timestamp.getBytes("UTF-8");
        byte[] bytesPassword = password.getBytes("UTF-8");

        byte[] digestInput = new byte[bytesNonce.length + bytesCreated.length + bytesPassword.length];
        System.arraycopy(bytesNonce, 0, digestInput, 0, bytesNonce.length);
        System.arraycopy(bytesCreated, 0, digestInput, bytesNonce.length, bytesCreated.length);
        System.arraycopy(bytesPassword, 0, digestInput, bytesNonce.length + bytesCreated.length, bytesPassword.length);

        MessageDigest md = MessageDigest.getInstance("SHA-1");
        return md.digest(digestInput);
    }

3- A senha do certificado é  public string SenhaCertificado = "TESTEwebservice";
    O nif é 599999993/0037 e a password é testes1234. É nif de testes público 

4 - Os certificados de testes são os que estão disponiveis também no site: https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action

5 -  De referir que o WebService de Guias de Transporte que não tem a geração do Digest, está a funcionar. Daí estar a desconfiar e a pedir ajuda à cerca da geração do Digest.

Mais uma vez obrigado pela tua disponibilidade.

Cumprimentos

 

 

Editado por nunopicado
Syntax Highlighting
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi!

tentei ir buscar os certificados usando o nif "599999993" e dá nº de tentativas excedido (Número de tentativas de login excedido. Credencial temporariamente suspensa)

envia-me os certificados para o meu email (zipa e mete a password '123456'), cealex@gmail.com ...

 

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
45 minutes ago, cealex said:

Oi!

tentei ir buscar os certificados usando o nif "599999993" e dá nº de tentativas excedido (Número de tentativas de login excedido. Credencial temporariamente suspensa)

envia-me os certificados para o meu email (zipa e mete a password '123456'), cealex@gmail.com ...

 

 

Bom dia,

Já enviei os certificados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

solução ...

private void teste_webservice()
        {
                string remoteAddress = "https://servicos.portaldasfinancas.gov.pt:705/dm22ircws/SubmeterDeclaracaoIRCService";
                string endpointConfigurationName = "SubmeterDeclaracaoIRCPort";

                AtIRCService.SubmeterDeclaracaoIRCClient proxy = new AtIRCService.SubmeterDeclaracaoIRCClient(endpointConfigurationName, remoteAddress);

                X509Certificate2 certificate = new X509Certificate2("D:\\certificados\\TesteWebServices.pfx", "TESTEwebservice");

                proxy.ClientCredentials.ClientCertificate.Certificate = certificate;

                AtIRCService.submeterDeclaracaoIRCRequest req = new AtIRCService.submeterDeclaracaoIRCRequest();
  
                //req.declaracao , todo:  popular a declaracao
                req.versaoDeclaracao = "2217"; 
                
                //colocar os bytes do ficheiro modelo 22 como mandam as regras, else da um erro interno
                //req.declaracao= Encoding.UTF8.GetBytes("blah blah bçagdfklg dfgdf");

                proxy.submeterDeclaracao(req);

        }

web.config

<system.serviceModel>
		<bindings>
      
			<basicHttpBinding>
        <binding name="bidding_digest">
          <security mode="Transport">
            <transport clientCredentialType="Certificate" ></transport>            
          </security>
        </binding>
        
			</basicHttpBinding>
		</bindings>
		
    <client>
			<endpoint address="https://servicos.portaldasfinancas.gov.pt:705/dm22ircws/SubmeterDeclaracaoIRCService" 
                binding="basicHttpBinding" 
                bindingConfiguration="bidding_digest" 
                contract="AtIRCService.SubmeterDeclaracaoIRC" 
                name="SubmeterDeclaracaoIRCPort"/>
		</client>
	</system.serviceModel>
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
3 horas atrás, cealex disse:

solução ...


private void teste_webservice()
        {
                string remoteAddress = "https://servicos.portaldasfinancas.gov.pt:705/dm22ircws/SubmeterDeclaracaoIRCService";
                string endpointConfigurationName = "SubmeterDeclaracaoIRCPort";

                AtIRCService.SubmeterDeclaracaoIRCClient proxy = new AtIRCService.SubmeterDeclaracaoIRCClient(endpointConfigurationName, remoteAddress);

                X509Certificate2 certificate = new X509Certificate2("D:\\certificados\\TesteWebServices.pfx", "TESTEwebservice");

                proxy.ClientCredentials.ClientCertificate.Certificate = certificate;

                AtIRCService.submeterDeclaracaoIRCRequest req = new AtIRCService.submeterDeclaracaoIRCRequest();
  
                //req.declaracao , todo:  popular a declaracao
                req.versaoDeclaracao = "2217"; 
                
                //colocar os bytes do ficheiro modelo 22 como mandam as regras, else da um erro interno
                //req.declaracao= Encoding.UTF8.GetBytes("blah blah bçagdfklg dfgdf");

                proxy.submeterDeclaracao(req);

        }

web.config


<system.serviceModel>
		<bindings>
      
			<basicHttpBinding>
        <binding name="bidding_digest">
          <security mode="Transport">
            <transport clientCredentialType="Certificate" ></transport>            
          </security>
        </binding>
        
			</basicHttpBinding>
		</bindings>
		
    <client>
			<endpoint address="https://servicos.portaldasfinancas.gov.pt:705/dm22ircws/SubmeterDeclaracaoIRCService" 
                binding="basicHttpBinding" 
                bindingConfiguration="bidding_digest" 
                contract="AtIRCService.SubmeterDeclaracaoIRC" 
                name="SubmeterDeclaracaoIRCPort"/>
		</client>
	</system.serviceModel>

Obrigado pelas dicas!! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

openssl pkcs12 -export -in 555555555.crt -inkey 555555555.key -out 555555555.pfx é isto que eles mandam fazer mas enviam me um certificado .cer e uma public chain.p7b supostamente tenho de intrgrar a minha chave privada com a deles que me enviaram mas enviam um .cer e no manual está um p7b estou baralhado e sem saber como por isto a trabalhar... alguem me consegue dar umas luzes sff?

 

 

Resolvido coloquem o cer recebido em vez do csr

Editado por Grifen
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva,

Tenho encontrado bastante informação sobre submeter dados mas pouco para obter dados utilizado o webservice.

Alguém sabe como obter uma lista dos documentos submetidos no e-factura? Há vários softwares que fazem isto mas não consigo encontrar documentação até ao momento...

Obrigado

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas colegas.

Tal como perguntado no post anterior pelo SchattenMann, alguém sabe se existe webservice por parte da AT, para podermos ler as faturas entregues, documentos de transporte, etc etc. Ou seja em vez de ser enviar as Guias de Transporte, ler as guias que foram comunicadas.

E já agora se existe também maneira de ler informação generica da nossa conta da AT, mesmo pessoal, tipo IUC, IMI, etc etc.

 

Obrigado,

Paulo Honorato

Editado por PHonorato
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Webservice, não há, mas o retorno é um json fácil de consumir.

Tens os mesmos 300 documentos de restrição (= ao csv),  podes é fazer vários pedidos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
24 minutos atrás, derrerter disse:

Webservice, não há, mas o retorno é um json fácil de consumir.

Tens os mesmos 300 documentos de restrição (= ao csv),  podes é fazer vários pedidos.

Hmmm e documentação onde se pode arranjar?

Precisava de obter todas as "faturas" inseridas no e-factura, de preferencia com webservice ou json

0

Partilhar esta mensagem


Link 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