Jump to content
cjulio

Utilizar Webservices da AT

Recommended Posts

RValverde
44 minutos atrás, Nuno Rompante disse:

Mesmo problema aqui.

Problema do certificado da aplicação que expirou hoje, tem que atualizar o módulo das transações eletrónicas para a ver atual.

Share this post


Link to post
Share on other sites
Kurt Kobin
Em 08/05/2019 às 18:42, tiago.f disse:

Viva,

este excel foi criado há ja uns anos e a AT entretanto mudou muita coisa do lado deles.

Como já não uso este excel, nao o tenho actualizado :(

Olá Tiago,

Tem o ficheiro atualizado? Pode disponibilizar?

Obrigado

Share this post


Link to post
Share on other sites
pessantiago

boa tarde

 

estou (tentar) a usar o webservice da at em delphi ja importei o wdsl das faturas..

tou problemas na data no invoice date esta a devolver este erro

 

sei que o tipo que ele esta a espera é umTXSDate

 [DCC Error] ATfinanças.pas(63): E2010 Incompatible types: 'InvoiceDate' and 'TDateTime'

 

 


var
dadosfatura:RegisterInvoiceElem;
lfaturas :faturas;

line_doc: factemiws.Line;
lines_doc: factemiws.Array_Of_Line;

taxline_doc: factemiws.Tax;

data:factemiws.SAFdateType;

begin

lfaturas := Getfaturas(False, '', HTTPRIO1);
dadosfatura:=RegisterInvoiceElem.Create;

dadosfatura.TaxRegistrationNumber:= 0;
//Ver manual at ( numero do documento)
dadosfatura.InvoiceNo:='';

// data emissao do documento

data := factemiws.InvoiceDate.Create;

dadosfatura.InvoiceDate:= date;


dadosfatura.InvoiceType:=InvoiceType2.FT;
//A-anulada;
//N-Normal;
dadosfatura.InvoiceStatus:= InvoiceStatus2.N;

//se vazio fica com 999999990;
dadosfatura.CustomerTaxID:=999999990;

// cria o array das faturas
SetLength(lines_doc, 1);
line_doc := Line.Create;
line_doc.CreditAmount:= CreditAmount.Create;
line_doc.CreditAmount.DecimalString:='0';

//cria a tax
taxline_doc := factemiws.Tax.Create;

taxline_doc.TaxType:='IVA';
taxline_doc.TaxCountryRegion:='PT';
taxline_doc.TaxPercentage:= TaxPercentage.Create;
taxline_doc.TaxPercentage.DecimalString:='23';
line_doc.Tax:= taxline_doc;
lines_doc[0]:=line_doc;
dadosfatura.Line:=lines_doc;
lfaturas.RegisterInvoice(dadosfatura);

 

Edited by pessantiago

Share this post


Link to post
Share on other sites
MarceloMB

Olá,

 

Estou a receber o erro abaixo em qualidade

<faultcode>33</faultcode><faultstring>Servidor de Autenticacao Indisponivel</faultstring><detail>sgdtws.gdgtqua</detail>

 

Sabem o que pode ser?

Share this post


Link to post
Share on other sites
Vitor Pereira
56 minutos atrás, MarceloMB disse:

Olá,

 

Estou a receber o erro abaixo em qualidade

<faultcode>33</faultcode><faultstring>Servidor de Autenticacao Indisponivel</faultstring><detail>sgdtws.gdgtqua</detail>

 

Sabem o que pode ser?

 

O erro >33< refere-se a um pedido SOAP inválido, com toda a certeza com os dados que estão a ser enviados no corpo do SOAP

 

Share this post


Link to post
Share on other sites
MarceloMB

Obrigado Vitor.

 

Por acaso agora da "mismatched tag, expected hr at offset 244 of" Vou ver se encontro o que pode ser

Share this post


Link to post
Share on other sites
SERGIO REBELO

bom dia

qual a versao do delphi que estao a implementar isso?

Share this post


Link to post
Share on other sites
MarceloMB
49 minutos atrás, SERGIO REBELO disse:

bom dia

qual a versao do delphi que estao a implementar isso?

Não é Delphi, é no SAP e o erro é apenas para qualidade(701)

Share this post


Link to post
Share on other sites
chesser

Penso que o ambiente de testes não está a funcionar há algum tempo. Se for possível, tenta experimentar em ambiente de produção que é o que o pessoal tem feito quando quer testar/validar alguma coisa. Não devia ser assim, mas é o que temos.

Share this post


Link to post
Share on other sites
MarceloMB
3 minutos atrás, chesser disse:

Penso que o ambiente de testes não está a funcionar há algum tempo. Se for possível, tenta experimentar em ambiente de produção que é o que o pessoal tem feito quando quer testar/validar alguma coisa. Não devia ser assim, mas é o que temos.

Entendi, vou informar aqui a malta. 

tks

Share this post


Link to post
Share on other sites
pessantiago

alguem me pode ajudar no processo de autenticação com o web service em delphi

Share this post


Link to post
Share on other sites
brunotoira
Em 02/10/2019 às 12:54, pessantiago disse:

alguem me pode ajudar no processo de autenticação com o web service em delphi

o que precisas?

envia email se quiseres.

Edited by brunotoira

Source code para enviar Guias de Transporte

https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=503212

Source code para enviar UBL - Faturação Eletrónica (XML de faturas e validador) - bmartins.p45@gmail.com

 

 

Share this post


Link to post
Share on other sites
xambas

boas pessoal,

estou a ter uma mensagem de erro ao comunicar documentos de transporte para o endpoint de testes.

Erro 52, Não foi possível verificar se o utilizador tem permissões para aceder a esta operação.

Li por aí que o endpoint de testes está com problemas, desde há uns meses?? (eu teria vergonha no lugar deles, mas enfim)

Assim sendo, gostaria de saber como fazem para testar com o endpoint de produção.

Afinal vou estar a criar documentos no nome da empresa cliente...

 

Obrigado!

Share this post


Link to post
Share on other sites
pessantiago

eu também ando farto de testar o web service no site deles e da sempre erro....

Share this post


Link to post
Share on other sites
Nelson
1 hora atrás, xambas disse:

boas pessoal,

estou a ter uma mensagem de erro ao comunicar documentos de transporte para o endpoint de testes.

Erro 52, Não foi possível verificar se o utilizador tem permissões para aceder a esta operação.

Li por aí que o endpoint de testes está com problemas, desde há uns meses?? (eu teria vergonha no lugar deles, mas enfim)

Assim sendo, gostaria de saber como fazem para testar com o endpoint de produção.

Afinal vou estar a criar documentos no nome da empresa cliente...

 

Obrigado!

Boa tarde @xambas

Este é o usuário de provas: 

- User: 599999993/37
- Password: testes1234

 

Recorda que o NIF da empresa que comunica o documento deve ser 599999993

Share this post


Link to post
Share on other sites
xambas
6 hours ago, Nelson said:

Boa tarde @xambas

Este é o usuário de provas: 

- User: 599999993/37
- Password: testes1234

 

Recorda que o NIF da empresa que comunica o documento deve ser 599999993

Viva Nelson,

obrigado pela resposta!

Mas isso é o que já estou a fazer. E obtenho sempre o Erro 52.

Li por aí, que o pessoal está a utilizar o endpoint de produção para testar. Queria saber como estão a fazer isso, já que estamos a criar docs pela empresa cliente.

Obrigado

Share this post


Link to post
Share on other sites
americob
Em 08/10/2019 às 23:59, xambas disse:

Viva Nelson,

obrigado pela resposta!

Mas isso é o que já estou a fazer. E obtenho sempre o Erro 52.

Li por aí, que o pessoal está a utilizar o endpoint de produção para testar. Queria saber como estão a fazer isso, já que estamos a criar docs pela empresa cliente.

Obrigado

Quando tenho de testar, porque alguém se queixa que não está a conseguir comunicar, envio uma "Guia de movimentação de ativos próprios", de mim, para mim, com a minha morada em carga e descarga, com a quantidade 1, a descrição "teste de webservice" e data de carga para 1 mês após a data do doc.

Logo que o sistema estiver a funcionar, anulo com o motivo "teste de webservice bem sucedido".

Se um dia a AT perguntar alguma coisa, justifico!

 

  • Vote 1

Share this post


Link to post
Share on other sites
PauloDuarte

Boa noite pessoal!

Estou a implementar as guias de transporte num cliente e vamos entrar agora em fase de testes.

Visto que pelo que percebi o ambiente de testes esta em baixo á meses , alguem me consegue explicar como e que posso fazer testes em produção?

Pelo que percebi devemos utilizar o user:

 User: 599999993/37
- Password: testes1234

E a nivel de certificados? Visto que ainda nao estamos em produção , tenho que utilizar o certificado assinado pela AT quando submeti o CSR?

 

Muito Obrigado!

 

Share this post


Link to post
Share on other sites
rukako
14 horas atrás, PauloDuarte disse:

Boa noite pessoal!

Estou a implementar as guias de transporte num cliente e vamos entrar agora em fase de testes.

Visto que pelo que percebi o ambiente de testes esta em baixo á meses , alguem me consegue explicar como e que posso fazer testes em produção?

Pelo que percebi devemos utilizar o user:

 User: 599999993/37
- Password: testes1234

E a nivel de certificados? Visto que ainda nao estamos em produção , tenho que utilizar o certificado assinado pela AT quando submeti o CSR?

 

Muito Obrigado!

 

Se alguem souber eu gostava de saber como fazer testes.

Share this post


Link to post
Share on other sites
brunotoira
Em 21/10/2019 às 19:43, Sergio. disse:

que precisas sergio?

Em 25/10/2019 às 16:43, rukako disse:

Se alguem souber eu gostava de saber como fazer testes.

pelo que sei, o servidor de testes está off (se não está agora, aproveita).

vão desliga-lo em breve.


Source code para enviar Guias de Transporte

https://www.portugal-a-programar.pt/forums/topic/57734-utilizar-webservices-da-at/?do=findComment&comment=503212

Source code para enviar UBL - Faturação Eletrónica (XML de faturas e validador) - bmartins.p45@gmail.com

 

 

Share this post


Link to post
Share on other sites
João Carvalho

Boa tarde pessoal,

Estou a tentar construir o envio da facturas à AT em C#. Sei que o ficheiro xml está correcto porque já o testei várias vezes na sendbox da AT e deu sempre "Sucesso".

Mas quando tento enviar no programa dá-me o erro:

"A ligação subjacente foi fechada: Erro inesperado ao enviar."

E fazendo debug, consegui ver mais este erro:

"WebExceptionSatus.ProtocolError"

O método que estou a utilizar é este:

        private void GetATCode(string pSoapFile, string pWebService, string pServiceAction, string pCertifPath, string pCertifPassword)
        {
            string EnderecoWebService = pWebService;
            string CaminhoCertificado = pCertifPath;
            string SenhaCertificado = pCertifPassword;
            try {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(EnderecoWebService);
                request.Headers.Add("SOAPAction", pServiceAction);
                X509Certificate2 cert = new X509Certificate2();
                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 postData = pSoapFile;
                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();
                TextBox2.Text = responseFromServer;
            } catch (WebException ex) 
            {
                if (ex.Status == WebExceptionStatus.ProtocolError) 
                {
                    WebResponse resp = ex.Response;
                    StreamReader sr = new StreamReader(resp.GetResponseStream());
                    TextBox2.Text = sr.ReadToEnd();
                } 
                else 
                {
                    TextBox2.Text = ex.Message;
                }
            }

Há por aí alguém que me possa ajudar?

 

 

 

Share this post


Link to post
Share on other sites
kalin
Em 30/10/2019 às 14:59, João Carvalho disse:

Boa tarde pessoal,

Estou a tentar construir o envio da facturas à AT em C#. Sei que o ficheiro xml está correcto porque já o testei várias vezes na sendbox da AT e deu sempre "Sucesso".

Mas quando tento enviar no programa dá-me o erro:

"A ligação subjacente foi fechada: Erro inesperado ao enviar."

E fazendo debug, consegui ver mais este erro:

"WebExceptionSatus.ProtocolError"

O método que estou a utilizar é este:

        private void GetATCode(string pSoapFile, string pWebService, string pServiceAction, string pCertifPath, string pCertifPassword)
        {
            string EnderecoWebService = pWebService;
            string CaminhoCertificado = pCertifPath;
            string SenhaCertificado = pCertifPassword;
            try {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(EnderecoWebService);
                request.Headers.Add("SOAPAction", pServiceAction);
                X509Certificate2 cert = new X509Certificate2();
                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 postData = pSoapFile;
                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();
                TextBox2.Text = responseFromServer;
            } catch (WebException ex) 
            {
                if (ex.Status == WebExceptionStatus.ProtocolError) 
                {
                    WebResponse resp = ex.Response;
                    StreamReader sr = new StreamReader(resp.GetResponseStream());
                    TextBox2.Text = sr.ReadToEnd();
                } 
                else 
                {
                    TextBox2.Text = ex.Message;
                }
            }

Há por aí alguém que me possa ajudar?

 

 

 

Estás a usar o certificado publico da AT?

Share this post


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.