Alain da Silva
-
Posts
535 -
Joined
-
Last visited
-
Days Won
10
Posts posted by Alain da Silva
-
-
Rochinha, essa parte eu inclui porque ele dava erro na hb_datetime. Esta rodando em xbarbour. Mas nos asteriscos abaixo ele dá erro. Mas está mostrando os retornos. Só não sei se está certo.
-
Atualizando...
-
Pessoal, fiz as alterações mas esta dando erro nos asteriscos abaixo:
nalgorithm, datetime...
*/ https://github.com/JoseQuintas/sefazclass/blob/master/drafts/assinaturacapicom.prg */ /* http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=18664 */ #include "fivewin.ch" #include "xbrowse.ch" #include "hbxml.ch" #include "capicom.ch" #ifdef __XHARBOUR__ #xtranslate HB_DateTime()=>DateTime() #endif PROCEDURE TESTE LOCAL cTexto, cSignatureValue, cDigestValue, cPublicKey cTexto := "seu arquivo cXml" cDigestValue := CapicomClass():HashData( cTexto ) cSignatureValue := CapicomClass():Sign( cDigestValue, , , @cPublicKey ) ? cDigestValue ? cSignatureValue ? cDigestValue == CapicomClass():VerifySignature( cSignatureValue ) ? IsValidSignatureCapicom( cDigestValue, cSignatureValue ) ? cPublicKey RETURN FUNCTION IsValidSignatureCapicom( cDigestValue, cSignatureValue ) IF cDigestValue = NIL .OR. cSignatureValue = NIL RETURN .F. ENDIF RETURN CapicomClass():VerifySignature( cSignatureValue ) == cDigestValue CLASS CapicomClass METHOD SelectCertificate() METHOD VerifySignature( cSignedData ) METHOD HashData( cData, nAlgorithm ) METHOD PublicKey( oCAPICOMCert ) METHOD Sign( cDigestValue, oCAPICOMcert, nEncode, cPublicKey ) END CLASS METHOD SelectCertificate() CLASS CapicomClass LOCAL oCapicom, oCertificate oCapicom:= xhb_CreateObject( "CAPICOM.Store" ) oCapicom:Open( CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY ) try oCertificate := oCapicom:Certificates:Select( "Selecione um certificado digital", "Algoritmo de Assinatura SHA256RSA" ) catch cErroRet:='Problema ao criar objetos solicitados.1' RETURN mResultado("Pesquisa de Nota(s) Fiscal(is) Destinada(s).",IIF(m->hDados['NFEProducao'],"PRODUÇÃO","HOMOLOGAÇÃO"),cErroRet) end 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 := xhb_CreateObject( "CAPICOM.SignedData.1" ) oCapicom:Verify(cSignedData,.F.,CAPICOM_VERIFY_SIGNATURE_ONLY) RETURN oCapicom:Content METHOD HashData( cData, nAlgorithm ) CLASS CapicomClass LOCAL oCapicom IF cData = NIL cData := DToS( Date() ) + Time() ENDIF IF nAlgorithm = NIL nAlgorithm := CAPICOM_HASH_ALGORITHM_SHA_256 ENDIF oCapicom := xhb_CreateObject( "CAPICOM.HashedData.1" ) * oCapicom:Algorithm := nAlgorithm oCapicom:Hash( cData ) RETURN oCapicom:Value METHOD PublicKey( oCapicomCert ) CLASS CapicomClass LOCAL oCapicom, cPublicKey oCapicom := xhb_CreateObject( "CAPICOM.Signer.2" ) oCapicom:Signer:Certificate := oCAPICOMCert oCapicom:Signer:Options := CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT cPublicKey := StrTran( oCapicom:Certificate: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 := xhb_CreateObject( "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 := xhb_CreateObject( "CAPICOM.Attribute" ) oCAPICOMTimeStamp:Name := CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME * oCAPICOMTimeStamp:Value := hb_DateTime() * oCAPICOMSigner:AuthenticatedAttributes:Add( oCAPICOMTimeStamp ) oCAPICOMSignedData := xhb_CreateObject( "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
-
Ola pessoal, por favor não respondam essa mensagem no grupo!!
Estou disponibilizando meu programa de Manifestação Eletrônica de Documentos Fiscais.
https://www.4shared.com/file/XwPLZL89ei/install_mdfe.html
O Software MDFe - Manifesto Eletrônico de Documentos Fiscais é um programa que permite ao usuário consultar as notas emitidas contra um CNPJ (cadastro de empresa).
Condições de Uso: Licença GratuítoO usuário que souber o número do NSU (Número Sequêncial Único) poderá colocar esse número no cadastro de empresa e suas pesquisas seguirão a partir desse número. Quando não souber, o número zero será informado e será atualizado na medida em que forem efetuadas as consultas.
Quando a NFe já possuir uma manifestação, o Download será automático, caso contrário o usuário deverá proceder a manifestação para a liberação do Download.Opções da Manifestação:
* Ciência da Operação
* Confirmação da Operação
* Desconhecimento da Operação
* Operação não Relizada (informar motivo)* Quem se interessar em adquirir os fontes, entrar em contato com o email: alainrancharia@hotmail.com (não usa dll de terceiros)
Obrigado
-
bom dia, hoje enviei uma nota na versão 4.0, uma observação é no retorno da consulta da nfe, a TAG protNfe aparece versão="3.10".
RETORNO DA CONSULTA DA NFE: <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Body> <nfeResultMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4"> <retConsSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00"> <tpAmb>1</tpAmb> <verAplic>SP_NFE_PL009_V4</verAplic> <cStat>100</cStat> <xMotivo>Autorizado o uso da NF-e</xMotivo> <cUF>35</cUF> <dhRecbto>2017-11-07T08:37:59-02:00</dhRecbto> <chNFe>35171143198696000468550010000105231000105232</chNFe> <protNFe versao="3.10"> <infProt> <tpAmb>1</tpAmb> <verAplic>SP_NFE_PL_008i2</verAplic> <chNFe>35171143198696000468550010000105231000105232</chNFe> <dhRecbto>2017-11-07T08:35:55-02:00</dhRecbto> <nProt>135170719482702</nProt> <digVal>G661M4y5QrhjE/DLv3yK+3XmekI=</digVal> <cStat>100</cStat> <xMotivo>Autorizado o uso da NF-e</xMotivo> </infProt> </protNFe> </retConsSitNFe> </nfeResultMsg> </soap:Body> </soap:Envelope>
-
Valeu Fladimir, funcionou perfeito. fico assim essa parte.
if AT("<cStat>138</cStat>",cdoc)>0
cRetornot:="Download Efetuado com Sucesso"
cBase64 := oXmlDoc:findFirst( "docZip" )
cBase64 := cBase64:cdata
cBase64 := hb_ZUncompress(HB_base64Decode(cBase64))
SaveFile( DiskName()+":\wfatura\XMLFORNECEDOR\" + cChaveNfe + "-nfe.xml", cBase64)
Return cRetornot
endif
Obrigado
-
alterar essa linha
Public cUrl := "http://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8="
aqui pega a versão antiga.
-
tentei dessa forma.
function teste()
LOCAL cstring,cbase64
cstring:='H4sIAAAAAAAEAO1a6Z ... /qpk/F9MTruIXyIAAA=='
cBase64 := HB_Base64Encode( cString, Len(cString ) )
? cBase64
? HB_Base64Decode( cBase64 )return nil -
bom dia, achei aqui no fórum acho que referencia ao assunto:
fladimir
Quando baixa xml do site do governo via webservice (baixa com certificado) Consulta NFe Destinadas vem tb criptografado ai tem q descriptografar.
Alguem poderia me dizer como faço para descriptografar esse xml?
obrigado
<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Body> <nfeDistDFeInteresseResponse xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe"> <nfeDistDFeInteresseResult> <retDistDFeInt xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01"> <tpAmb>1</tpAmb> <verAplic>1.1.9</verAplic> <cStat>138</cStat> <xMotivo>Documento localizado</xMotivo> <dhResp>2017-11-01T12:49:15-02:00</dhResp> <loteDistDFeInt> <docZip schema="procNFe_v3.10.xsd" NSU="000000000002404">H4sIAAAAAAAEAO1a6ZOiyLb/ ... (muito grande) AA==</docZip> </loteDistDFeInt> </retDistDFeInt> </nfeDistDFeInteresseResult> </nfeDistDFeInteresseResponse> </soap:Body> </soap:Envelope>
-
Olá, eu peguei no site da Uninfe
-
Bom dia Toya, teria como vc me enviar um xml da 4.0 validado. Estou começando a fazer as alterações.
Obrigado.
Email: alainrancharia@hotmail.com
-
A princípio seria um problema de segurança no site. Obrigado. Ainda não resolvido.
-
-
Coloquei o webservice do ms.
-
bom dia pessoal, eu utilizo o programa do Gilmer (PRG) para a emissão das notas fiscais. Aqui para SP funciona de boa, agora preciso instalar para um cliente em MS e não estou conseguindo enviar. Emissão em SCAN esta funcionando, isso quer dizer que provavelmente os parâmetros estão corretos e o problema seria no servidor da sefaz/MS.
O Retorno que ele esta dando é o seguinte:
<?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"> <S:Body> <S:Fault xmlns:ns4="http://schemas.xmlsoap.org/soap/envelope/"> <S:Code> <S:Value>S:Receiver</S:Value> </S:Code> <S:Reason> <S:Text xml:lang="pt">javax.ejb.EJBException</S:Text> </S:Reason> </S:Fault> </S:Body> </S:Envelope>
alguém já passou por esse problema, quem emite nota para MS tem alguma dica pra me dar.
obrigado
-
Td bem Alessandro, funcionou do jeito que vc passou, só estou tentando agora copiar para um pendrive. Teria como antes definir a pasta para onde gravar, como no cgetfile() ?
-
obrigado pela ajuda, copiar pela data da criação do arquivo. No caso do exemplo ai copiar somente os arquivos do dia 01/01/2017, porque pelo nome eu não saberia.
nome data de modificação Tipo
35170262741319000125550010000322271000325137 01/01/2017 Documento Xml
35170262741319000125550010000322271000325137 01/01/2017 Documento Xml
35170262741319000125550010000322271000325137 02/01/2017 Documento Xml
35170262741319000125550010000322271000325137 03/01/2017 Documento Xml
valeu
-
bom dia, preciso copiar para um pendrive vários arquivos xml, porém precisa ser pela data do arquivo. Alguem tem uma rotina para isso.
Outra coisa, depois de copiar o arquivo eu gostaria de mover os arquivos para outra pasta.
obrigado
-
-
Mais alguém esta com esse erro?
-
Boa tarde, esta dando um erro na criação da imagem.
If (!(ferror() = 0))
MsgInfo("Erro de criacao do arquivo de imagem " + Str(ferror(), 3, 0))
Return .f.
EndIf -
-
boa tarde pessoal, estou fazendo uma tela de PDV e tenho um get desabilitado que mostra o valor unitário, só que não estou conseguindo fazer com que ele fique com o fundo azul e a letra preta.
Agora estou testando como say e não get.
REDEFINE SAY OBJPAV[13] VAR Transf(VARPAV[13],"@E 999,999.999") ID 30 OF oFld:ADIALOGS[1] COLOR PRETO,AZUL FONT Arial30B //valor unitário
Usando workshop, five 16.06.
obrigado.
-
Assinatura XML
in Programação
Posted
Não trouxe os programas, ficou no escritório. Não lembro o erro.Na segunda feira vou voltar a mexer no programa e posto. Sei que um ele não achava esse hb_datetime.
Aqui também: