Esocial
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Esocial
Só pra curiosidade, no Edge também dá erro de codepage.
Nem a Microsoft se interessa em ajustar esse XML kkkk
Se com o conhecimento deles não dá, com o nosso menos ainda.
Nem a Microsoft se interessa em ajustar esse XML kkkk
Se com o conhecimento deles não dá, com o nosso menos ainda.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Esocial
Pra curiosidade, a posição do erro que o Edge indicou é justamente na parte do texto que tem a descrição.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Esocial
Exatamente ai. O problema que não consigo identificar este bendito caracter e muito menos o codepage. Vai ter que ser no chute mesmo kkk
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
Esocial
aparentimente vc esta mandando 3 eventos no mesmo lote e o erro
e o evento ja existe la na sefaz. Eu sempre envio um evento por lote que assim fica mais facil quando dar algum tipo de erro.
anexo o xml de erro pra voce analisar os erros ...
Código: Selecionar todos
- <ocorrencias>
- <ocorrencia>
<tipo>1</tipo>
<codigo>106</codigo>
<descricao>Foi localizado no sistema um evento em duplicidade com o evento a ser enviado, mesmo Tipo de Inscricao, Numero de Inscricao, CPF do Trabalhador, Matricula, Data de Inicio da Condicao.</descricao>
<localizacao />
</ocorrencia>
</ocorrencias
anexo o xml de erro pra voce analisar os erros ...
- Anexos
-
- 1.1.202209.0000000003519225002-Retorno.xml
- (4.56 KiB) Baixado 49 vezes
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Esocial
Caro amigo, se vc analisar o xml que enviei ele tem caracteres estranhos. uso o memowrit para gravar e queria gravar sem estes caracteres sem ter que fazer uma rotina para trocar os mesmos
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Esocial
A pergunta seria:
Como chegou nesse XML sem acentuação?
Como chegou nesse XML sem acentuação?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Esocial
Boa tarde, como não descobri como gravar com acentuação e ser válido a leitura do xml, fiz uma função para retirar os caracteres. Estou implementando na classe do Mestre Quintas o envio de eventos. Está dando erro, na estrutura do xml. O exemplo do xml que está para ser enviado está correto, pois funciona em outros monitores de envio, mas com certeza tem algum erro de envelopamento ou endereço que já conferi e não consegui encontrar. Segue o que fiz, para conhecimento de todos e possível ajuda.
- Anexos
-
esocial.prg- (15.2 KiB) Baixado 55 vezes
Esocial
Voltando a saga de assinar o esocial que usa sha256, ao invés de sha1 da nfe. Estudando melhor um exemplo do Mestre Quintas, consegui gerar a chave de assinatura. Criei as tags, mas [<SignatureValue>] + cSignatureValue + [</SignatureValue>] está errada, pois é o mesmo conteúdo do certificado em [<X509Certificate>] + cPublicKey + [</X509Certificate>]. Como fazer, eis a questão. Ajuda será vem vindo.
Código: Selecionar todos
/*
https://pctoledo.org/forum/viewtopic.php?f=43&t=18664
*/
#define __TESTE__
#include "minigui.ch"
#include "sefaz_capicom.ch"
#include "hbclass.ch"
#ifdef __TESTE__
PROCEDURE TesteCapicom
LOCAL cTexto, cSignatureValue, cDigestValue, cPublicKey
cTexto := [<?xml version="1.0" encoding="UTF-8"?><eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/v1_1_1"><envioLoteEventos grupo="2"><ideEmpregador><tpInsc>1</tpInsc><nrInsc>11956884</nrInsc></ideEmpregador><ideTransmissor><tpInsc>1</tpInsc><nrInsc>08743913000100</nrInsc></ideTransmissor><eventos><evento Id="ID1119568840000002022090509510600001"><eSocial xmlns="http://www.esocial.gov.br/schema/evt/evtExpRisco/v_S_01_00_00"><evtExpRisco Id="ID1119568840000002022090509510600001"><ideEvento><indRetif>1</indRetif><tpAmb>2</tpAmb><procEmi>1</procEmi><verProc>Versao22085</verProc></ideEvento><ideEmpregador><tpInsc>1</tpInsc><nrInsc>11956884</nrInsc></ideEmpregador><ideVinculo><cpfTrab>03606687982</cpfTrab><matricula>22</matricula></ideVinculo><infoExpRisco><dtIniCondicao>2022-01-10</dtIniCondicao><infoAmb><localAmb>1</localAmb><dscSetor>ADMINISTRACAO</dscSetor><tpInsc>1</tpInsc><nrInsc>11956884000179</nrInsc></infoAmb><infoAtiv><dscAtivDes>Responsavel por presta suporte na gestao da empresa auxiliando principalmente gestores de financas gestao de pessoal e da area operacional na realizacao de atividades de controle e emissao de documentos</dscAtivDes></infoAtiv><agNoc><codAgNoc>09.01.001</codAgNoc></agNoc><respReg><cpfResp>11417960400</cpfResp><ideOC>1</ideOC><nrOC>4847</nrOC><ufOC>PR</ufOC></respReg></infoExpRisco></evtExpRisco>]
cDigestValue := CapicomClass():HashData( cTexto )
cSignatureValue := CapicomClass():Sign( cDigestValue, , , @cPublicKey )
cPublicKey := StrTran(cPublicKey, Chr(13) + Chr(10), [])
cDigestValue := StrTran(cDigestValue, Chr(13) + Chr(10), [])
cSignatureValue:= StrTran(cSignatureValue, Chr(13) + Chr(10), [])
cURI:= []
cTexto += [<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">]
cTexto += [<SignedInfo>]
cTexto += [<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>]
cTexto += [<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />]
cTexto += [<Reference URI="] + cURI + [">]
cTexto += [<Transforms>]
cTexto += [<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />]
cTexto += [<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />]
cTexto += [</Transforms>]
cTexto += [<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />]
cTexto += [<DigestValue>] + cDigestValue + [</DigestValue>]
cTexto += [</Reference>]
cTexto += [</SignedInfo>]
cTexto += [<SignatureValue>] + cSignatureValue + [</SignatureValue>]
cTexto += [<KeyInfo>]
cTexto += [<X509Data>]
cTexto += [<X509Certificate>] + cPublicKey + [</X509Certificate>]
cTexto += [</X509Data>]
cTexto += [</KeyInfo>]
cTexto += [</Signature>]
cTexto += [</eSocial></evento></eventos></envioLoteEventos></eSocial>]
Hb_memowrit(".\assinado-esocial-loteevt.xml", cTexto)
RETURN
#endif
FUNCTION IsValidSignatureCapicom( cDigestValue, cSignatureValue )
IF cDigestValue = NIL .OR. cSignatureValue = NIL
RETURN .F.
ENDIF
RETURN CapicomClass():VerifySignature( cSignatureValue ) == cDigestValue
CREATE CLASS CapicomClass
METHOD SelectCertificate()
METHOD VerifySignature( cSignedData )
METHOD HashData( cData, nAlgorithm )
METHOD PublicKey( oCAPICOMCert )
METHOD Sign( cDigestValue, oCAPICOMcert, nEncode, cPublicKey )
ENDCLASS
METHOD SelectCertificate() CLASS CapicomClass
LOCAL oCapicom, oCertificate
oCapicom:= win_OleCreateObject( "CAPICOM.Store" )
oCapicom:Open( CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY )
BEGIN SEQUENCE WITH { || __BreakBlock() }
oCertificate := oCapicom:Certificates:Select( "Selecione um certificado digital", "Algoritmo de Assinatura SHA256RSA" )
ENDSEQUENCE
IF oCapicom:Certificates:Count() == 0
RETURN NIL
ENDIF
RETURN oCertificate:Item( 1 )
METHOD VerifySignature( cSignedData ) CLASS CapicomClass
LOCAL oCapicom
IF cSignedData == NIL
RETURN NIL
ENDIF
oCapicom := win_OleCreateObject( "CAPICOM.SignedData.1" )
oCapicom:Verify( cSignedData, .F., CAPICOM_VERIFY_SIGNATURE_ONLY )
RETURN oCapicom:Content
METHOD HashData( cData, nAlgorithm ) CLASS CapicomClass
LOCAL oCapicom, oUtil
IF cData = NIL
cData := Dtos( Date() ) + Time()
ENDIF
IF nAlgorithm = NIL
nAlgorithm := CAPICOM_HASH_ALGORITHM_SHA1 // 256
ENDIF
oUtil := win_OleCreateObject( "CAPICOM.Utilities" )
oCapicom := win_OleCreateObject( "CAPICOM.HashedData.1" )
oCapicom:Algorithm := nAlgorithm
oCapicom:Hash( cData )
RETURN oUtil:Base64Encode( outil:HexToBinary( oCapicom:Value ) )
// RETURN oCapicom:Value
METHOD PublicKey( oCapicomCert ) CLASS CapicomClass
LOCAL cPublicKey
//oCapicom := win_OleCreateObject( "CAPICOM.Signer.2" )
//oCapicom:Signer:Certificate := oCAPICOMCert
//oCapicom:Signer:Options := CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT
cPublicKey := StrTran( /* oCapicom:Certificate:*/ oCapicomCert:Export( CAPICOM_ENCODE_BASE64 ), Chr(13) + Chr(10), "" )
RETURN cPublicKey
METHOD Sign( cDigestValue, oCAPICOMCert, nEncode, cPublicKey ) CLASS CapicomClass
LOCAL oCAPICOMSignedData, oCAPICOMSigner, oCAPICOMTimeStamp, cSignature
IF cDigestValue = NIL
RETURN NIL
ENDIF
IF nEncode = NIL
nEncode := CAPICOM_ENCODE_BASE64
ENDIF
oCAPICOMSigner := win_OleCreateObject( "CAPICOM.Signer.2" ) // versao 2
IF oCAPICOMCert = NIL
oCAPICOMCert := ::SelectCertificate()
IF oCAPICOMCert = NIL
RETURN NIL
ENDIF
oCAPICOMSigner:Certificate := oCAPICOMcert
ELSE
oCAPICOMSigner:Certificate := oCAPICOMcert:DefaultInterface
ENDIF
IF ! ( oCAPICOMSigner:Certificate:HasPrivateKey ;
.AND. Dtos( oCAPICOMSigner:Certificate:ValidFromDate ) <= Dtos( Date() ) ;
.AND. Dtos( oCAPICOMSigner:Certificate:ValidToDate ) >= Dtos( Date() ) )
RETURN NIL
ENDIF
oCAPICOMSigner:Options := CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT
cPublicKey := StrTran( oCAPICOMSigner:Certificate:Export( CAPICOM_ENCODE_BASE64 ), Chr(13) + Chr(10), "" )
oCAPICOMTimeStamp := win_OleCreateObject( "CAPICOM.Attribute" )
oCAPICOMTimeStamp:Name := CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME
oCAPICOMTimeStamp:Value := hb_DateTime()
oCAPICOMSigner:AuthenticatedAttributes:Add( oCAPICOMTimeStamp )
oCAPICOMSignedData := win_OleCreateObject( "CAPICOM.SignedData.1" )
oCAPICOMSignedData:Content := cDigestValue
// segundo parametro falso, apenas retona assinatura do texto, não inclui no texto
cSignature := oCAPICOMSignedData:Sign( oCAPICOMSigner, .F., nEncode )
RETURN cSignature
- Anexos
-
- 02503687000103_20220930T164803-ret-esocial-consloteevt.xml
- (1.9 KiB) Baixado 50 vezes
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Esocial
Uma dica, é usa o ACBR para ver como as coisas são feitas, foi assim que fizemos nossos eventos do eSocial.
https://www.projetoacbr.com.br/forum/to ... -e-social/
https://www.projetoacbr.com.br/forum/to ... -e-social/
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br