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

Bom dia.

 

Estou tentando emitir uma NFSe pela cidade de Bragança Paulista mas estou com um problema.

No arquivo "cidades.ini" disponibilizado, diz que para essa cidade, o provedor é o GovDigital, mas pelo site da prefeitura, verifiquei que o servidor correto é o Giap, os endereços do WS são sempre: http://webservice.giap.com.br/WSNfsesCotia/nfseresources/ws

Dessa forma, alterei o arquivo que ficou dessa forma:

 

[3507605]

Nome=Braganca Paulista

UF=SP

Provedor=Giap

NomeURL_H=Cotia

NomeURL_P=Cotia

 

Esse provedor, utiliza um token de acesso e pelo que vi no manual, precisa enviar um parâmetro “Authorization” composto por esse token no HEADER.

Acredito que a propriedade “ACBrNFSe.Configuracoes.Geral.Emitente.WebChaveAcesso” seja onde eu informe esse token.

 

Porémn ao tentar enviar, está ocorrendo erro 401, que pelo que consultei, é erro de autorização.

 

Na unit ACBrNFSeWebServices achei o seguinte código:

 

{Configura Authorization para GIAP}

// if Provedor = proGiap then

// FAuthorization := FPConfiguracoesNFSe.Geral.Emitente.WebChaveAcesso;

 

Não achei mais nada referente a essa autorização.

 

Gostaria da ajuda de vocês ou pelo menos um direcionamento sobre como posso informar essa autorização e ver se consigo enviar essa nota.

 

Obrigado.

Erro 401.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Você tem certeza que a URL esta correta?

Pois acessei o site da prefeitura e achei outra:

http://webservice.giap.com.br/WSNfsesPmbp/nfseresources/ws

Que comparando com a que você postou:

http://webservice.giap.com.br/WSNfsesCotia/nfseresources/ws

Noto um diferença.

Pmbp não significa Prefeitura Municipal de Bragança Paulista?

Se sim, a sua alteração no arquivo Cidades.ini esta errada.

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

  • 3 semanas depois ...
  • Consultores

Boa tarde,

Em um rápida pesquisa na internet achei essa informação sobre o erro 401, segue o link:

https://www.redehost.com.br/duvidas/erro-401-no-autorizado-como-resolver--1615

Tem provedor que requer que seja feito um cadastro para que seja possível emitir as notas via webservice.

Uma coisa é ter usuário e senha para emitir via site, outra coisa e ter permissão para emitir via webservice.

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

Em 10/06/2020 at 15:13, Italo Jurisato Junior disse:

Boa tarde,

Em um rápida pesquisa na internet achei essa informação sobre o erro 401, segue o link:

https://www.redehost.com.br/duvidas/erro-401-no-autorizado-como-resolver--1615

Tem provedor que requer que seja feito um cadastro para que seja possível emitir as notas via webservice.

Uma coisa é ter usuário e senha para emitir via site, outra coisa e ter permissão para emitir via webservice.

Bom dia Italo, obrigado pelo retorno.

Conforme mencionei lá em cima, o provedor requer um token para acesso, que deve ser enviado através de um parâmetro “Authorization” no HEADER.

Dei uma olhada nos fontes, mas não achei onde ele envia essa informação, a única coisa que encontrei foi a propriedade "ACBrNFSe.Configuracoes.Geral.Emitente.WebChaveAcesso", que acredito que faria esse processo, mas mesmo preenchendo ela, ocorre o mesmo problema.

 

Obs.: O cliente já possui esse token gerado, conforme pode ver na imagem.

1245936194_DadosCadastrais.thumb.png.046c3aa654d45c28107642368648739c.png

Link para o comentário
Compartilhar em outros sites

7 horas atrás, Juliomar Marchetti disse:

vish sai totalmente do padrão

tem um exemplo junto ao manual deles?

Boa tarde Juliomar.

Não achei nada referente a esse token nos manuais, nenhuma explicação, somente exemplos de como mandar o xml, coisa que o componente já está fazendo.

O endereço é: https://bragancapaulista.giap.com.br/apex/pmbp/f?p=996:70

Existe uma seção Web Service, que é onde menciona sobre esse Authorization, mas também não vi nada que ajude muito, apenas os endereços. (Segue imagem).

WS.thumb.png.846ac0ba90b98788f205ddf6d9aa8d6e.png

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia,

Necessito de um exemplo completo (Envelope) de envio da nota para o webservice.

Não basta o XML da nota, tem que ser completo, assim vai ser possível ter uma ideia de como devemos gerar o XML antes de ser enviado para o webservice.

Outra coisa não temos os arquivos XSD (Schemas) desse provedor, logo fica complicado gerar o XML e enviar sem realizar a validação.

Trabalhar sem os schemas é implementar na tentativa e erro.

  • 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

  • 2 semanas depois ...
Em 15/06/2020 at 09:24, Italo Jurisato Junior disse:

Bom dia,

Necessito de um exemplo completo (Envelope) de envio da nota para o webservice.

Não basta o XML da nota, tem que ser completo, assim vai ser possível ter uma ideia de como devemos gerar o XML antes de ser enviado para o webservice.

Outra coisa não temos os arquivos XSD (Schemas) desse provedor, logo fica complicado gerar o XML e enviar sem realizar a validação.

Trabalhar sem os schemas é implementar na tentativa e erro.

Boa tarde Italo.

Vou tentar conseguir o exemplo com o pessoal da prefeitura e retornar no tópico.

 

Obrigado por enquanto.

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

  • 1 mês depois ...
  • 4 semanas depois ...
  • Moderadores
9 minutos atrás, Carlos Júnior disse:

Está dificil conseguir resposta da prefeitura desta cidade....

O colega a cima pelo jeito não vai responder por aqui....

Situação complicada para esta cidade..

 

Mas tu pode fazer igual ele e tentar conversar com o provedor por todos os meios possíveis e se conseguir postar aqui também

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Carlos,

Chegou a comparar com o XML que o componente gera, para ver se esta faltando alguma coisa ou se tem algo a mais?

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

Boa tarde Carlos,

Altere no arquivo Giap.ini a seção Recepcionar:

[Recepcionar]
IncluiEncodingCab=0
IncluiEncodingDados=0
Texto1=<nfe>%DadosMsg%</nfe>

Note como ficou o campo Texto1.

Faça novos testes.

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 hora atrás, Italo Jurisato Junior disse:

Boa tarde Carlos,

Altere no arquivo Giap.ini a seção Recepcionar:


[Recepcionar]
IncluiEncodingCab=0
IncluiEncodingDados=0
Texto1=<nfe>%DadosMsg%</nfe>

Note como ficou o campo Texto1.

Faça novos testes.

Com esta configuração ficou assim:

<nfe><EnviarLoteRpsEnvio><notaFiscal> 

 

Link para o comentário
Compartilhar em outros sites

Italo,

Estou tentando entender o funcionamento do envio, e achei o seguinte na função a baixo

 

#ACBrDFeSSL

function TDFeSSLHttpClass.Enviar(const ConteudoXML: String; const AURL: String;
  const ASoapAction: String; const AMimeType: String): String;
var
  AMethod: String;
begin
  FDataReq.Clear;
  if (ConteudoXML <> '') then
  begin
    AMethod := 'POST';
    WriteStrToStream(FDataReq, AnsiString(ConteudoXML));
  end
  else
    AMethod := 'GET';

  HeaderReq.Clear; // Para informar Haders na requisição, use HTTPMethod();
  FSoapAction := ASoapAction;
  FMimeType := AMimeType;
  try
    HTTPMethod( AMethod, AURL ) ;

    FDataResp.Position := 0;
    Result := ReadStrFromStream(FDataResp, FDataResp.Size);

    // Verifica se o ResultCode é: 200 OK; 201 Created; 202 Accepted
    // https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
    if not (FpHTTPResultCode in [200..202]) then
      raise EACBrDFeException.Create('');
  except
//    on E:EACBrDFeException do
//      raise;
    on E:Exception do
    begin
      raise EACBrDFeException.CreateDef( Format(ACBrStr(cACBrDFeSSLEnviarException),
                                         [FpInternalErrorCode, FpHTTPResultCode, FURL] )
                                         + sLineBreak + LastErrorDesc);
    end;
  end;

end;
 

Este webservice manda justamente adicionar um header com a tag authorization informando o token.

image.thumb.png.39f86d16023baf4a4d69425d80883375.png

 

A Pergunta é como usar este HTTPMethod corretamente para informar a este header?

Aguardo,

 

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

  • Consultores

Bom dia Carlos,

Então volte o arquivo INI para ficar desta forma:

[Recepcionar]
IncluiEncodingCab=0
IncluiEncodingDados=0
TagGrupo=nfe
Texto1=%DadosMsg%

Tente enviar um lote.

Anexe o XML de envio do lote: ( *-env-lot.xml e *-env-lot-soap.xml ) para que possamos analisar.

Estou trabalhando no Refactoring do componente ACBrNFSe. 

Ao fazer testes com o provedor Giap também obtive o erro 401 para os serviços: EnviarLoteRps e Cancelar, só o serviço ConsultarNFSeporRps que não ocorreu esse erro.

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,

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.

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.