Ir para conteúdo
  • Cadastre-se

dev botao

Erro 401 ao enviar NFSe - Provedor Giap


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1084 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

12 minutos atrás, Italo Jurisato Junior disse:

Carlos,

Veja se desta forma funciona:

Unit ACBrNFSeWebServices


procedure TNFSeWebService.InicializarServico;
begin
  { Sobrescrever apenas se necessário }
  FProvedor := FPConfiguracoesNFSe.Geral.Provedor;

  inherited InicializarServico;

  if FPConfiguracoesNFSe.Geral.ConfigGeral.VersaoSoap = '' then
    FPMimeType := 'application/xml'
  else if FPConfiguracoesNFSe.Geral.ConfigGeral.VersaoSoap = '1.2' then
    FPMimeType := 'application/soap+xml'
  else
    FPMimeType := 'text/xml';

  FPDFeOwner.SSL.UseCertificateHTTP := FPConfiguracoesNFSe.Geral.ConfigGeral.UseCertificateHTTP;

  FPDFeOwner.SSL.HTTPMethod('authorization', 'xxxx-xxxxxxxxxxxxxxxxxxRYX'); // <=== inclui esta linha

  TACBrNFSe(FPDFeOwner).SetStatus(FPStatus);
end;

Se funcionar, esse código de autorização podemos colocar ele em uma propriedade de configuração por exemplo WebChaveAcesso.

Deu erro:

 

image.png.d32ccd8466459ea1b69a30f7002ddc2f.png

Link para o comentário
Compartilhar em outros sites

Italo, 

Este provedor é muito estranho,

Ele promete o seguinte retorno:

        <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
                <nfeResposta>
                    <notaFiscal>
                        <numeroNota>0</numeroNota>
                        <numeroRps>1029</numeroRps>
                        <codigoVerificacao>45963RGOP0X</codigoVerificacao>
                        <statusEmissao>200</statusEmissao>
                        <messages code="200" message="NFSE emitida com sucesso"/>
                    </notaFiscal>
                    <notaFiscal>
                        <numeroNota>0</numeroNota>
                        <numeroRps>1030</numeroRps>
                        <codigoVerificacao>45873XDFP0</codigoVerificacao>
                        <statusEmissao>200</statusEmissao>
                        <messages code="200" message="NFSE emitida com sucesso"/>
                    </notaFiscal>
                </nfeResposta>

 

Porém, o retorno foi este, sem o codigoVerificacao, 

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><nfeResposta><notaFiscal><numeroNota>0</numeroNota><numeroRps>1</numeroRps><statusEmissao>200</statusEmissao><link>http://NFE.com.br</link><messages code="200" message="NFSE emitida com sucesso"/></notaFiscal></nfeResposta>

 

Desta forma, não consigo consultar:

      <consulta>
                <inscricaoMunicipal>999991</inscricaoMunicipal>
                <codigoVerificacao>2978937BMA</codigoVerificacao>
        </consulta>

 

Alias, não sei qual método devo utilizar para consulta deste provedor, pois não encontrei qual método tem o codigoVerificacao como parêmetro.

Aguardo,

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Carlos,

Já que deu falha na requisição, tente dessa outra forma:

    FPDFeOwner.SSL.SSLHttpClass.HeaderReq.AddHeader('authorization', 'xxxxxx');
 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

12 minutos atrás, Italo Jurisato Junior disse:

Carlos,

Já que deu falha na requisição, tente dessa outra forma:

    FPDFeOwner.SSL.SSLHttpClass.HeaderReq.AddHeader('authorization', 'xxxxxx');
 

Italo, deu erro 401 novamente.

 

Na ACBrDFeSSL linha 1042 tem este código

  HeaderReq.Clear; // Para informar Haders na requisição, use HTTPMethod();

Acredito que este é o problema está limpando os headers, qd informo o header após esta linha dá certo.

 

Aguardo.

 

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Italo Jurisato Junior disse:

Carlos,

Vou passar para os mestres esses problema.

Tudo bem Italo, desde já obrigado ai pelo tempo, 

Eu estou com este prazo apertado, mas de qualquer forma, eu agradeço mesmo..

Acredito que depois do envio correto, teremos ai o problema da consulta, mas vamos por parte...

O duro é que o servidor não responde e-mail, e parece q está com problema no retorno, que deveria vir com o código de Verificação e não está vindo..

Mais uma vez, obrigado, vou ficar atento a este post caso vc tenha um retorno dos Mestres...rs..

Valeu!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Calos,

Na unit ACBrNFSeWebServices faça a seguinte alteração e realize novos testes.

(...)
  FPDFeOwner.SSL.UseCertificateHTTP := ConfigGeral.UseCertificateHTTP;

  if Provedor = proGiap then
  begin
    FPDFeOwner.SSL.SSLHttpClass.HeaderReq.AddHeader('authorization',
                             FPConfiguracoesNFSe.Geral.Emitente.WSChaveAcesso);

    if FPConfiguracoesNFSe.WebServices.Ambiente = taProducao then
      FPDFeOwner.SSL.HTTPMethod('POST', ConfigWebServices.NomeURL_P)
    else
      FPDFeOwner.SSL.HTTPMethod('POST', ConfigWebServices.NomeURL_H);
  end;

  TACBrNFSe2(FPDFeOwner).SetStatus(FPStatus);
(...)

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

19 minutos atrás, Italo Jurisato Junior disse:

Bom dia Calos,

Na unit ACBrNFSeWebServices faça a seguinte alteração e realize novos testes.


(...)
  FPDFeOwner.SSL.UseCertificateHTTP := ConfigGeral.UseCertificateHTTP;

  if Provedor = proGiap then
  begin
    FPDFeOwner.SSL.SSLHttpClass.HeaderReq.AddHeader('authorization',
                             FPConfiguracoesNFSe.Geral.Emitente.WSChaveAcesso);

    if FPConfiguracoesNFSe.WebServices.Ambiente = taProducao then
      FPDFeOwner.SSL.HTTPMethod('POST', ConfigWebServices.NomeURL_P)
    else
      FPDFeOwner.SSL.HTTPMethod('POST', ConfigWebServices.NomeURL_H);
  end;

  TACBrNFSe2(FPDFeOwner).SetStatus(FPStatus);
(...)

 

Italo, ainda sim, deu erro..

Diz que o token não foi informado,

Lembra que eu te disse que na Unit ACBrDFeSSL linha 1042 está limpando o header?

 HeaderReq.Clear;

Na ACBrNFSeWebServices , linha 896, achei o seguinte código comentado, ao descomentar dá erro no FAuthorization. Acho que foi uma tentativa de implementação deste recurso..

  {Configura Authorization para GIAP}
//  if Provedor = proGiap then
//    FAuthorization := FPConfiguracoesNFSe.Geral.Emitente.WebChaveAcesso;

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Carlos,

Vai ser necessário debugar para descobrir o melhor local para incluir o bloco de linhas que postei acima, pelo jeito o local que eu sugeri não é o correto.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

24 minutos atrás, Italo Jurisato Junior disse:

Carlos,

Vai ser necessário debugar para descobrir o melhor local para incluir o bloco de linhas que postei acima, pelo jeito o local que eu sugeri não é o correto.

Italo, não poderia passar o authorization via parâmetro para o método enviar da unit ACBrDFeSSL?

Link para o comentário
Compartilhar em outros sites

Bom dia pessoal.
Estamos em contato com uma pessoa da GIAP, ele demora um pouco mas responde nossas questões, nosso último questionamento foi justamente sobre como enviar o authorization, algo que vi agora que vocês já identificaram como fazer.

De qualquer forma, segue a resposta dele que chegou hoje:

 

Vou detalhar pra você a configuração, da maneira como está o sistema Postman que utilizo para realizar testes de exportação do arquivo xml:
 
1 - Verifique se a AIDF está Ativa e devidamente autorizada.
2 -  Utilize a URL de envio disponibilizada no  manual da Webservice e popule o seu sistema com ela.
3 - No HEADER, no parâmetro Authorization, a informação terá que ser composta da INSCRIÇÃO MUNICIPAL-TOKEN, ou seja, o Token não é informado na estrutura do arquivo xml.
4 - No BODY, utilize o modelo do arquivo xml que enviei no e-mail anterior e popule com as informações que irão compor a NFS-e.
5 - Feita a exportação, verifique se foi feita com sucesso
6 - Acesse o site da NFS-e, faça o login, confirme se o xml exportado foi transformado em NFS-e. (verifique todas as informações no layout da NFS-e)
 
Saliento que, cada sistema tem a sua particularidade e seus campos em locais diferentes, pode ser que o seu sistema seja diferente do Postman que eu utilizo, mas as informações que precisam ser informadas são as mesmas.
 
 
Não tem segredo, é muito simples!
 
Muitos contribuintes utilizam a webservice e fazem a configuração sem nenhuma dificuldade.
 
Espero ter ajudado.
 
Segue anexo contendo os prints das telas do sistema Postman e os campos importantes e que precisam ser populados evidenciados.
 
O nome dele é Wilson Cursio e o e-mail é [email protected], caso queiram questionar algo.

Configuracao Postman_exportacao xml_NFSe Braganca.pdf

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Carlos,

Vou ver com o pessoal que cuida das units do ACBrDFe, acredito que vai ser necessário fazer uma alteração na unit ACBrDFeSSL.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Italo,

Para o cancelamento tive que incluir o provedor proGiap no case da linha 6040 na unit ACBrNFSeWebServices 

 

 case Configuracoes.Geral.Provedor of
          proInfisc,
          proInfiscv11,
          proSafeWeb,
          proTiplanv2,
          proWebISSv2,
          proGiap, //minha inclusão
          proTcheInfov2 : Result := True

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Carlos,

Muito obrigado pela colaboração, já inclui na minha lista de tarefas.

SHDW, não entendi a sua postagem.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Carlos,

Já enviei para o repositório a sua contribuição.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
Em 24/09/2020 at 16:55, Italo Giurizzato Junior disse:

Carlos,

Já enviei para o repositório a sua contribuição.

Italo,

Atualizando os fontes, vi que incluiram o AAuthorizationHeader na chamada do método enviar... Pode me confirmar se a propriedade do componente q eu preencho para passar este valor é a Configuracoes.Geral.Emitente.WebChaveAcesso?

function TDFeSSL.Enviar(var ConteudoXML: String; const AURL: String;
  const ASoapAction: String; AMimeType: String;
  const AAuthorizationHeader: String): String;

 

Aguardo,

 

Carlos,

 

Editado por Carlos Júnior
Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Carlos Júnior disse:

Italo,

Atualizando os fontes, vi que incluiram o AAuthorizationHeader na chamada do método enviar... Pode me confirmar se a propriedade do componente q eu preencho para passar este valor é a Configuracoes.Geral.Emitente.WebChaveAcesso?

function TDFeSSL.Enviar(var ConteudoXML: String; const AURL: String;
  const ASoapAction: String; AMimeType: String;
  const AAuthorizationHeader: String): String;

 

Aguardo,

 

Carlos,

 

Italo, já verifiquei que sim, basta preencher a WebChaveAcesso...Obrigado..

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Carlos,

Faça novos testes e nos de um retorno.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa tarde a todos, acompanhei o tópico atualizei os fontes e aparentemente o processo de emissão até o momento esta tudo ok, só fiquei com algumas duvidas, notei que após a emissão o xml da nota fiscal "-nfse.xml" não é baixado e pelo que eu vi não tem nenhuma configuração especifica para isso.

O que não estou conseguindo fazer é o cancelamento, ele gera o arquivo de cancelamento incompleto, tem algo processo diferente para este provedor? (arquivo gerado em anexo)

Desde já agradeço atenção!

-can.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Bruno,

Esse XML que você anexou me parece ser o de retorno.

Faça os testes usando o programa exemplo.

Configura ele para salvar os arquivos Soap.

Faça um novo teste de cancelamento e anexo os arquivos gerados para que possamos analisar.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1084 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.