Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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

Postado

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

  • Consultores
Postado

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

Araraquara - A era dos Trólebus

Postado
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

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

Ítalo, o erro também está acontecendo com o servidor Fiorilli ao assinar o Cancelamento, utilizando OpenSLL

Falha ao Assinar - Cancelar NFS-e:
Erro: Falha ao interpretar o XML "xmlParseDoc"

 

Postado

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

  • 2 semanas depois ...
Postado (editado)

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
  • 2 meses depois ...
Postado

Pessoal, alguém já conseguiu assinar o lote do RPS com o OpenSSL para a prefeitura de São José SC ou qualquer outra cidade que use o mesmo provedor?

 

Grato

Gamarra

Florianópolis-SC

  • 1 ano depois...
Postado
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); ?

Postado

eu estava exatamente com o mesmo problema, na mesma linha q o Gamarra comentou.....

para solucionar, entrei no aquivo Betha.INI e alterei a chave Lote para 0

Isso deu certo para a prefeitura de Mandirituba/PR

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