Alain da Silva
Membros-
Posts
535 -
Joined
-
Last visited
-
Days Won
10
Everything posted by Alain da Silva
-
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: * oCapicom:Algorithm := nAlgorithm
-
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íto O 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>
-
RETORNO criptografado (fladimir/rochinha)
Alain da Silva replied to Alain da Silva's topic in Programação
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.
-
RETORNO criptografado (fladimir/rochinha)
Alain da Silva replied to Alain da Silva's topic in Programação
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 http://www.unimake.com.br/uninfe/modelosxml/nfe_nfce_4_00/NFe/41170706117473000150550010000463201612756527-procNFe.xml
-
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
-
Emissão NFe parao Estado do Mato Grosso do Sul
Alain da Silva replied to Alain da Silva's topic in Programação
A princípio seria um problema de segurança no site. Obrigado. Ainda não resolvido. -
Emissão NFe parao Estado do Mato Grosso do Sul
Alain da Silva replied to Alain da Silva's topic in Programação
sim fladimir, as webservices estão corretas. "https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeAutorizacao" "https://homologacao.nfe.ms.gov.br/homologacao/services2/RecepcaoEvento" "https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeConsulta2" "https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeRetAutorizacao" "https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeInutilizacao2" "https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeStatusServico2" -
Emissão NFe parao Estado do Mato Grosso do Sul
Alain da Silva replied to Alain da Silva's topic in Programação
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
-
obrigado Fladimir, funcionou.
-
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
-
matei.kkkk obrigado
-
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.
-
obrigado, deu certo. No Windows 10 digite outras configurações de facilidades de acesso - > teclado - >habilitar sublinhados de atalho.