Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Bom dia Pessoal,

Segue em anexo os fontes do projeto do ACBrESocial o qual testes os eventos abaixo:

Os eventos em negrito foram testados, os que estão riscados ou não estão liberados ou não cheguei avaliar\testar.

 

image.thumb.png.ff3a7c91bf7abc98c3ae4d0406f9d4e2.png

 

* O Exemplo não está muito explicativo, mais acredito que dar para ter uma ideia do preenchimento e utilização.

* O componente precisa ainda de ajustes, principalmente na parte visual(métodos e eventos).

* Estou disponivel para ajudar no que for preciso e espero que o que foi desenvolvido possa ajudar a todos.

-> Units do core do ACBr modificadas:

ACBrDFeUtil.pas

- Incluido no SignatureElement as tags necessárias para assinatura SHA256.

     function SignatureElement(const URI: String; AddX509Data: Boolean; IdSignature: String = ''; Asha256: Boolean = False): String;

ACBrDFeSSL.pas

- Criação de uma propriedade "property SSLDgst: TSSLDgst read FSSLDgst write FSSLDgst;" na TDFeSSL para informar o tipo de "Method Algorithm" a ser usado. Por padrão será SHA1.

- no metodo TDFeSSLXmlSignClass.AdicionarSignatureElement na chamada do SignatureElement e passado a propriedade "FpDFeSSL.FSSLDgst" do tipo a ser usado( ver Abaixo)

  Result := copy(ConteudoXML, 1, I - 1) + SignatureElement(URI, AddX509Data, IdSignature, FpDFeSSL.FSSLDgst = dgstSHA256) + TagEndDocElement;

ACBrDFeXsXmlSec.pas

- Incluido uma diretiva "REINF" para seleção do DTD para ser usado no REINF. O Projeto do REINF não segui o padrão do Id. (Isso pode mudar em versões futuras do REINF) .

  {$IFDEF REINF}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& id ID #IMPLIED>]>';
  {$ELSE}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& Id ID #IMPLIED>]>';
  {$ENDIF}

Espero que ajude e traga mais força ao projeto.

obs.: Tentei seguir ao máximo a implementação atual do ACBR (Delphi > 2009). porem não testei em FPC.

obs.: Para listas usei Generics haja vista que estou seguindo Delphi 2010 ou superior.

obs.: As modificações nas classes bases são as mesmas do REINF haja vista que a modificação para utilizar SHA256 é necessário para os dois projeto.

No aguardo da avaliação @Juliomar Marchetti  @EMBarbosa

Abraços.

ACBreSocial.zip

Editado por Leivio Fontenele
  • Curtir 2
  • Obrigado 3
  • Fundadores
Postado
3 horas atrás, Dorfino Pereira Salgado disse:

Como faço pra instalar o ACBrSocial? estou usando o Berlin.

Se você não for um desenvolvedor experiente... não tente, aguarde pois não está no SVN ainda...

Muito obrigado pelas contribuições... vou analisar as modificações de DFeSSL...

4 horas atrás, Leivio Fontenele disse:

- Incluido uma diretiva "REINF" para seleção do DTD para ser usado no REINF. O Projeto do REINF não segui o padrão do Id. (Isso pode mudar em versões futuras do REINF) .

  {$IFDEF REINF}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& id ID #IMPLIED>]>';
  {$ELSE}
  cDTD = '<!DOCTYPE test [<!ATTLIST &infElement& Id ID #IMPLIED>]>';
  {$ENDIF}

Não compreendi a necessidade do IFDEF acima... (o que mudou ?)   Isso não estaria melhor em uma propriedade ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

@Daniel Simoes tive que fazer isso apenas porque no schema do REINF o "Event ID" é com i minúsculo. Exemplo ->  <evtInfoContri id="ID1021919050000002017082410435300001">.

Com o valor padrão do cDTD dava erro de Assinatura na unit ACBrDFeXsXmlSec no metodo XmlSecSign da Classe TDFeSSLXmlSignXmlSec. Justamente no código abaixo o valor da variável  SignResult ficava -1!:

 SignResult := xmlSecDSigCtxSign(FdsigCtx, SignNode);

Acredito que esse detalhe do ID será colocado no padrão nas próximas liberações de versões do REINF.  

Acredito sim, que uma propriedade melhoraria a legibilidade do código.

Lembrando: essa modificação foi apenas para suportar a assinatura do REINF. O projeto do ACBreSocial segue o padrão do ACBr.

Valeu.

Editado por Leivio Fontenele
  • Fundadores
Postado

o problema de IFDEFs, é que eles limitam muito...  como por exemplo:

 {$IFDEF ESOCIAL}
  URI := '';
  {$ELSE}
  URI := ExtraiURI(ConteudoXML);
  {$ENDIF}

Se o programador ligar a diretiva ESOCIAL, provavelmente os demais tipos de documento eletrônico, deixaram de funcionar...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado
15 minutos atrás, Paulo Souza disse:

boa tarde

peguei os fontes postados pelo @Leivio Fontenele, agora como proceder com a instalação no Delphi 2009 visto que nos fontes só tem os .pas e não os .dpks ??

Se você não for um desenvolvedor experiente... não tente, aguarde pois não está no SVN ainda...

  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado
3 minutos atrás, Daniel Simoes disse:

Se você não for um desenvolvedor experiente... não tente, aguarde pois não está no SVN ainda...

Ok, obrigado @Daniel Simoes, o caminho do svn é o mesmo da trunk2 somente alterando o final para Branches correto ?

Postado
Em 28/08/2017 at 09:46, Leivio Fontenele disse:

Bom dia,

@Daniel Simoes e demais moderadores segue fontes com a retirada das diretivas e adicionado as propriedades na classe  TDFeSSL. Essa modificação serve tanto para o ACBreSocial como para o ACBrReinf.

units modificadas: ACBrDFeSSL.pas e ACBrDFeXsXmlSec.pas

ACBreSocial_v2.zip

Bom dia

@Leivio Fontenele baixei esta zip que você postou, defini os library paths mas na hora de compilar o demo está dando o seguinte erro: [DCC Error] ACBreSocial.pas(137): E2003 Undeclared identifier: 'SSLDgst'.

Por favor, pode me dizer o que está faltando para eu conseguir compilar e testar o seu demo ?

Postado

Boa tarde a todos.

Estou testando os fontes do @Leivio Fontenele e está tudo OK (parabéns), apenas não estou conseguindo gerar a chave SHA256 com certificados A3.

Estou fazendo em Delphi XE 10 Seattle.

Configuração 1:
SSLCryptLib := cryWinCrypt;
SSLHttpLib  := httpIndy;
SSLXmlSignLib := xsXmlSec;
Erro: "Certificado não pode ter sua chave privada exportada"

Configuração 2:
SSLCryptLib := cryWinCrypt;
SSLHttpLib  := httpIndy;
SSLXmlSignLib := xsMsXml;
Erro: "The DigestMethod algorithm 'http://www.w3.org/2001/04/xmlenc#sha256' is not supported"

Alguém tem alguma dica para A3 ou conseguiu fazer.

Grato  
Márcio Gomes

  • Moderadores
Postado
12 minutos atrás, Paulo Souza disse:

Bom dia

Gostaria de saber se os fontes do eSocial já estão no SVN ?

Grato

Está e não está. 

Parte dele foi subido mas ainda precisa conferir algumas coisas com o branches e subir os dpk e lpk para a devida instalação dos componentes bem como alteração no instalador para que possa ser feito através dele.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

  • Fundadores
Postado
Em 06/09/2017 at 15:40, mgomes disse:

Configuração 2:
SSLCryptLib := cryWinCrypt;
SSLHttpLib  := httpIndy;
SSLXmlSignLib := xsMsXml;
Erro: "The DigestMethod algorithm 'http://www.w3.org/2001/04/xmlenc#sha256' is not supported"

A MSXML não suporta sha256

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado
Em 06/09/2017 at 15:40, mgomes disse:

Boa tarde a todos.

Estou testando os fontes do @Leivio Fontenele e está tudo OK (parabéns), apenas não estou conseguindo gerar a chave SHA256 com certificados A3.

Estou fazendo em Delphi XE 10 Seattle.

Configuração 1:
SSLCryptLib := cryWinCrypt;
SSLHttpLib  := httpIndy;
SSLXmlSignLib := xsXmlSec;
Erro: "Certificado não pode ter sua chave privada exportada"

Configuração 2:
SSLCryptLib := cryWinCrypt;
SSLHttpLib  := httpIndy;
SSLXmlSignLib := xsMsXml;
Erro: "The DigestMethod algorithm 'http://www.w3.org/2001/04/xmlenc#sha256' is not supported"

Alguém tem alguma dica para A3 ou conseguiu fazer.

Grato  
Márcio Gomes

Para A3 estou fazendo uma lib para intermediar a assinatura. Aguarde uma ou duas semanas que dar certo

  • Obrigado 1
Postado

boa tarde

estou tentando compilar com o Delphi 2010 e está dando o seguinte erro: [DCC Fatal Error] ACBreSocialWebServices.pas(326): F1026 File not found: 'System.DateUtils.dcu';

tem alguma versão específica pra compilar, ou a partir de alguma versão ?

pois no Delphi 2010 não encontro está referencia de System.DateUtils, na documentação da Embarcadeiro diz que está na RTL250.bpl mas no Delphi 2010 não há esta bpl.

Grato

  • Moderadores
Postado
15 minutos atrás, Paulo Souza disse:

boa tarde

estou tentando compilar com o Delphi 2010 e está dando o seguinte erro: [DCC Fatal Error] ACBreSocialWebServices.pas(326): F1026 File not found: 'System.DateUtils.dcu';

tem alguma versão específica pra compilar, ou a partir de alguma versão ?

pois no Delphi 2010 não encontro está referencia de System.DateUtils, na documentação da Embarcadeiro diz que está na RTL250.bpl mas no Delphi 2010 não há esta bpl.

Grato

Namespaces do projeto . olha em options essa configuração .

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Postado

Bom dia 

Alguém poderia me dizer uma versão do Delphi que eu consiga compilar e testar os fontes do eSocial por favor.

Pois já tentei com Delphi 2009, Delphi 2010 e Rad Studio XE2 e sempre esbarro no mesmo problema, na unit ACBreSocialWebServices foi utilizado uma função ISO8601ToDate e nenhuma destas versões conseguem identificar esta função.

Alguém pode me dar uma luz por favor.

Grato 

  • Este tópico foi criado há 2626 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.