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á 1328 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado
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

Postado

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,

 

Postado
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.

 

Postado
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
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado
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
Postado
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?

Postado

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

Postado

Italo,

Não consegui encontrar um local adequado para colocar o código que vc sugeriu, pois o header é sempre limpo na unit ACBrDFeSSL linha 1042.

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

 

 

Postado

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

  • 4 meses depois ...
Postado (editado)
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
Postado
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..

  • 1 mês depois ...
Postado

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

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

  • Este tópico foi criado há 1328 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.