Ir para conteúdo
  • Cadastre-se

dev botao

Betha OpenSSL Erro: Falha ao assinar o Documento.


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

Recommended Posts

Senhores boa tarde.

Alguém conseguiu assinar os XML das NFS-e de São José/SC do provedor Betha usando o OpenSSL?

No meu caso retorna a mensagem: Falha ao assinar o Documento.

Com Capicom está OK.

Porém é necessário instalar o certificado.

Gamarra

Florianópolis-SC

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

O erro ocorre ao assinar o XML do RPS ou o XML do Lote?

Uma vez que o provedor Betha exige que ambos sejam assinados.

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

Bom dia Italo.
Obrigado pela atenção.

Estou usando o aplicativo de exemplo,
usando a opção [Gerar e Enviar Lote RPS],
o problema ocorre ao assinar o lote, na linha destacada em negrito, abaixo:

Dados: 

docElement = 'ns3:EnviarLoteRpsEnvio'

infElement = 'ns3:LoteRps'

SignatureNode = './/ns3:EnviarLoteRpsEnvio/ds:Signature'

SelectionNamespaces = 'xmlns:ns3="http://www.betha.com.br/e-nota-contribuinte-ws"'

IdSignature = ''

function TDFeSSL.Assinar(const ConteudoXML, docElement, infElement: String;
  SignatureNode: String; SelectionNamespaces: String; IdSignature: String
  ): String;
Var
  XmlAss, xmlHeaderAntes, xmlHeaderDepois: String;
  I: integer;
begin
  // Nota: ConteudoXML, DEVE estar em UTF8 //
  // Lendo Header antes de assinar //
  xmlHeaderAntes := '';
  I := pos('?>', ConteudoXML);
  if I > 0 then
    xmlHeaderAntes := copy(ConteudoXML, 1, I + 1);

  XmlAss := FSSLClass.Assinar( ConteudoXML, docElement, infElement,
                               SignatureNode, SelectionNamespaces, IdSignature);

LoteRPS606052016.txt

Complementando a Exception é lançada neste ponto:

Classe:

unit ACBrDFeOpenSSL.function TDFeOpenSSL.XmlSecSign(const ConteudoXML: AnsiString; SignatureNode,
  SelectionNamespaces: AnsiString): AnsiString;
 

    { sign the template }
    if (xmlSecDSigCtxSign(FdsigCtx, node) < 0) then
      raise EACBrDFeException.Create(cErrDSigSign);

Gamarra

Florianópolis-SC

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Daniel,

Segundo o arquivo que você anexou notei o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<ns3:EnviarLoteRpsEnvio xmlns:ns3="http://www.betha.com.br/e-nota-contribuinte-ws">
<LoteRps Id="606052016">
<NumeroLote>606052016</NumeroLote>

Esta faltando o prefixo ns3: na Tag LoteRps.

O que precisamos saber se ao montar o lote através da unit pnfsNFSeG (linhas 503 até 508) essa TAG realmente esta sendo gerada sem o prefixo ou se o mesmo é removido indevidamente depois.

Acredito que a falha esta ai, note:

docElement = 'ns3:EnviarLoteRpsEnvio'

infElement = 'ns3:LoteRps'

O parâmetro infElement passa com o prefixo mas o Lote gerado para ser assinado a respectiva Tag não tem.

Se você puder "debugar" o código nesse sentido lhe agradeç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

7 horas atrás, Gamarra disse:

Boa tarde Italo.

Obrigado mais uma vez pela atenção.

verifiquei conforme você solicitou e o prefixo3 é zerado no método:]

procedure TNFSeG.SetAtributos;

No final do método tem estas linhas:

  // Redefine o Profixo 3 ======================================================
  if Provedor = proBetha then
    Prefixo3 := '';

 

Logo após passa nas linhas citadas por você, 503 - 508,

fiz a alteração aqui e não houve mais erro na assinatura, porém agora retorno:

---------------------------
Debugger Exception Notification
---------------------------
Project Demo_ACBrNFSe.exe raised exception class EACBrDFeException with message '
Erro Interno: 0
Erro HTTP: 500'.
---------------------------
Break   Continue   Help   
---------------------------

 

7 horas atrás, Gamarra disse:


 

 

Gamarra

Florianópolis-SC

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 1 mês depois ...

Daniel. Atualizei os fontes e agora a falha é diferente, mas ainda apenas com OpenSSL

Falha ao Assinar - Cancelar NFS-e:
Erro: Falha ao localizar o nó de Assinatura

No link, vc citou a "infElement", porém com a Capicom o conteúdo desta tbm é vazia e o erro não ocorre.

Segue os conteúdo da variável FPDadosMsg do método ACBrNFSeWebservices->"TNFSeCancelarNfse.DefinirDadosMsg;" antes e depois de assinar (no caso Capicom - que está ok).

Provedor Fiorilli.

Capicom-Canc-AntesAssinar.xml

Capicom-Canc-Assinado.xml

OpenSSL-Canc-AntesAssinar.xml

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Daniel, realizei update, e após as últimas alterações referentes ao post do tópico que você indicou, tbm não estou conseguindo EnviarSincrono com OpenSSL. Não entendi a questão do "infElement", uma vez que o mesmo é alimentado da mesma forma com Capicom (que está funcionando corretamente)

Editado por arce
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • 1 ano depois...
Em 16/05/2016 at 09:19, Italo Jurisato Junior disse:

Bom dia Daniel,

Favor atualizar os fontes e testar novamente.

E ai Gamarra, testou como o Italo sugeriu? 

para aquele problema { sign the template }
    if (xmlSecDSigCtxSign(FdsigCtx, node) < 0) then
      raise EACBrDFeException.Create(cErrDSigSign); ?

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...