Jump to content
Fivewin Brasil

Alain da Silva

Membros
  • Posts

    535
  • Joined

  • Last visited

  • Days Won

    10

Everything posted by Alain da Silva

  1. 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
  2. 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.
  3. 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
  4. 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
  5. 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>
  6. 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
  7. alterar essa linha Public cUrl := "http://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" aqui pega a versão antiga.
  8. tentei dessa forma. function teste() LOCAL cstring,cbase64 cstring:='H4sIAAAAAAAEAO1a6Z ... /qpk/F9MTruIXyIAAA==' cBase64 := HB_Base64Encode( cString, Len(cString ) ) ? cBase64 ? HB_Base64Decode( cBase64 ) return nil
  9. 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>
  10. Olá, eu peguei no site da Uninfe http://www.unimake.com.br/uninfe/modelosxml/nfe_nfce_4_00/NFe/41170706117473000150550010000463201612756527-procNFe.xml
  11. 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
  12. A princípio seria um problema de segurança no site. Obrigado. Ainda não resolvido.
  13. 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"
  14. 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
  15. 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() ?
  16. 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
  17. 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
  18. 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
  19. 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.
  20. obrigado, deu certo. No Windows 10 digite outras configurações de facilidades de acesso - > teclado - >habilitar sublinhados de atalho.
×
×
  • Create New...