Ir para conteúdo
  • Cadastre-se

dev botao

Erro: Signature Failed


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

Recommended Posts

Postado (editado)

Boa tarde

Estou passando pelo mesmo problema com opensll. Não consegui sair do aplicativo de teste.

Alguém tem alguma solução. (obrigado) 

 

Editado por herculanojs
Os fontes estão atualizados na data de ontem 07/12/2016
Postado (editado)

Boa tarde pessoal, eu achei onde esta o problema e o bug. Contudo os entendidos ai é que devem dar uma luz de como solucionar isso. Vamos lá ao que eu fiz e parou o erro de não encontrar o nó. Em ACBRNFSe.pas: antes de enviar o lote, já existe um código para se efetuar a assinatura e depois novamente em ACBrNFSeWebService.pas novamente pede-se a assinatura do lote, e é neste ponto que esta dando o erro. Se o lote já foi assinado, porque esta sendo solicitado novamente para se assinar o lote? Não deveria ser apenas uma assinatura?

1) Assinatura feita no lote ( ACBRNFSe.pas)

function TACBrNFSe.Enviar(ALote: String; Imprimir: Boolean): Boolean;
var
  i: Integer;
begin
  if NotasFiscais.Count <= 0 then
    GerarException(ACBrStr('ERRO: Nenhum RPS adicionado ao Lote'));

  if NotasFiscais.Count > 50 then
    GerarException(ACBrStr('ERRO: Conjunto de RPS transmitidos (máximo de 50 RPS)' +
      ' excedido. Quantidade atual: ' + IntToStr(NotasFiscais.Count)));

  NotasFiscais.Assinar(Configuracoes.Geral.ConfigAssinar.RPS);

  Result := WebServices.Envia(ALote);
...

end;

2) Assinatura sendo executada para o lote e onde ocorre o erro. (ACBrNFSeWebService.pas)

procedure TNFSeEnviarLoteRPS.DefinirDadosMsg;

begin

...codigos

  if (FPDadosMsg <> '') and (FDadosEnvelope <> '') then
  begin
    DefinirSignatureNode('');

    Exatamente aqui neste ponto onde eu comentei a segunda assinatura do lote é que causa o erro. Quando comentei esse bloco, parou de ocorer o erro e foi homologado sem problemas. Agora vem a pergunta: Porque assinar duas vezes? Não teria que ter um controle de o lote já foi assinado, e caso contrário então assinar?
     //jhs
    {FPDadosMsg := FNotasFiscais.AssinarLote(FPDadosMsg, FTagGrupo, TagElemento,
                                   FPConfiguracoesNFSe.Geral.ConfigAssinar.Lote,
                                   xSignatureNode, xDSIGNSLote, xIdSignature);}

    // Incluido a linha abaixo por após realizar a assinatura esta gerando o
    // atributo xmlns vazio.
    if FProvedor <> proSP then
      FPDadosMsg := StringReplace(FPDadosMsg, 'xmlns=""', '', [rfReplaceAll]);

    if FPConfiguracoesNFSe.Geral.ConfigSchemas.Validar then
      FNotasFiscais.ValidarLote(FPDadosMsg,
                         FPConfiguracoes.Arquivos.PathSchemas +
                         FPConfiguracoesNFSe.Geral.ConfigSchemas.ServicoEnviar);
  end
  else
    GerarException(ACBrStr('A funcionalidade [Enviar Lote] não foi disponibilizada pelo provedor: ' +
      FPConfiguracoesNFSe.Geral.xProvedor));
 

end;

Editado por herculanojs
Os fontes estão atualidados na data de 10/12/2016 as 12:00
  • Consultores
Postado

Herculano,

No caso do provedor Betha é necessário assinar o RPS e depois o Lote, logo se for enviado um lote contendo 10 RPS o XML vai conter 11 assinaturas, ou seja, um para cada RPS e mais um do Lote.

E tenho informações que o envio para o provedor Betha esta funcionando 100%.

Agora tem outra coisa, esse provedor tem uma segunda versão que é usada por algumas cidades.

Chamamos de Bethav2, me parece que esta versão que esta com problemas.

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

Italo, obrigado pela atenção.

Estou fazendo o seguinte e me auxilie ai se estiver faltando algo: A versão do servidor betha que estou estando e a primeira. Estou fazendo o seguinte:

1) gero a nota

 ACBrNFSe.NotasFiscais.Clear;

 with ACBrNFSe.NotasFiscais.Add.NFSe do

... 

2) Utilizo a função de enviar contendo o numero do lote

ACBrNFSe.Enviar()

Neste processo é que notei a problemática usando o openssl. Falta algo que devo configurar? Conforme comentei, atualizei os fontes hoje por volta das 12:00, e quando comento o bloco que mencionei não ocorre o erro.

  • Consultores
Postado

Herculano,

Bom o problema pode ser o OpenSSL, se você tiver condições de realizar testes usando o Capicom e de preferencia use o programa exemplo do componente para esse teste.

Se funcionar, repita o teste para o OpenSSL e nos de um retorno.

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

  • Consultores
Postado

Herculano,

Passe o caso para os demais membros da Equipe ACBr com mais experiencia em Assinatura Digital.

Peço que tenha um pouco mais paciência, quem sabe teremos em breve uma solução para o problema.

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á 2898 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.