Jump to content
Fivewin Brasil

Ricardo

Membros
  • Posts

    10
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Ricardo

  1. Até ontem estava com mesmo problema, no momento a coisa funcionava e em outro não. Procurei em foruns e buscas pela net, e nada. Então, foquei em não resolver a falha no fonte, mesmo porque funcionava! E ai procurei o problema na origem, ou seja, o que poderia causar um mau funcionamento do serverXMLHTTP. Fiz uma passo-a-passo que no meu caso resolveu. Espero ajudar á aqueles que estão com a mesma dificuldade. Resolvendo falha de comunicação serverXMLHTTP_.doc
  2. Olá! pessoal Alguém pode postar um exemplo de xml assinado considerando esse envelopado, estou fazendo o que o manual do desenvolvedor do REINF pede, e não esta me trazendo resposta! Meu código é esse cXML := '<?xml version="1.0" encoding="UTF-8"?>' cXML += '<soap:Envelope ' cXML += 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' cXML += 'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' cXML += 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' cXML += 'xmlns:sped="http://sped.fazenda.gov.br/">' cXML += '<soap:Header></soap:Header>' cXML += '<soap:Body>' cXML += ' <sped:RecepcaoLoteReinf_ReceberLoteEventos_InputMessage xmlns="http://sped.fazenda.gov.br/">' cXML += xXML cXML += ' </sped:RecepcaoLoteReinf_ReceberLoteEventos_InputMessage>' cXML += '</soap:Body>' cXML += '</soap:Envelope>' linkWS := "https://preprodefdreinf.receita.fazenda.gov.br/WsREINF/RecepcaoLoteReinf.svc" cSOAPAction := "http://sped.fazenda.gov.br/RecepcaoLoteReinf/ReceberLoteEventos" // ------------------------------- oDOMDoc := CreateObject( 'MSXML2.DOMDocument.5.0' ) oDOMDoc:async := .F. oDOMDoc:validateOnParse := .T. oDOMDoc:resolveExternals := .F. oDOMDoc:preserveWhiteSpace := .T. oDOMDoc:LoadXML(cXML) // -------------------------- oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.5.0' ) oServerWS:setOption( 3, 'CURRENT_USER\MY\'+cCN ) oServerWS:open('POST', linkWS, .F.) oServerWS:setRequestHeader('SOAPAction', cSOAPAction ) oServerWS:setRequestHeader('Content-Type','application/soap+xml; charset=utf-8') oServerWS:send(oDOMDoc:xml) Grato por algum idéia
  3. Ola! Pessoal Não consegui resolver a falha no calculo do <digestValue> calculado pelo o método HexToBinary da Capicom.utilities. Tive que fazer um executável em C# passando o arquivo Xml que será assinado, o cnpj do certificado e o URI, dessa forma consegui assinar o xml. Grato
  4. Olá Kabiaba Verifiquei os fontes, observo que não é o fato de converter para a Base64, essa conversão parte de um número binário. Mas, o retorno do método vem uma seria de (?) interrogações. METHOD HashData( cData, nAlgorithm ) CLASS TMontaDocumentoXML ..... oUtil := CreateObject( "CAPICOM.Utilities.1" )oCapicom := CreateObject( "CAPICOM.HashedData.1" )oCapicom:Algorithm := CAPICOM_HASH_ALGORITHM_SHA_256oCapicom:Hash( cData ) // Resultado Hexadecimal cValorBin := outil:HexToBinary( oCapicom:Value ) /// ----> Aqui o retorno vem sempre "?????????????????" RETURN oUtil:Base64Encode( cValorBin ) Se outil:HexToBinary() estiver furado, a <digestvalue> será sempre PwA/AD8APwA/AD8APwA/AD8APwA/AD8APwA/AD8APwA= , minha necessidade é encontrar um algoritmo que me retorne a expressão correta em binário, ai pode ser que o encode Base64 funcione. Abs.
  5. Vou verificar amigo e te informo alguma coisa. Abs.
  6. Olá Kabiaba Verifiquei meu código conforme o link que você sugeriu, e o retorno da classe HashData continua o mesmo. Pesquisei bastante e não encontrei uma solução pra esse problema. Se você tive mais uma dica ficaria muito grato. Abs.
  7. Olá Kapiaba Foram desses link´s que utilizei pra montar a funcionalidade.. Vou dar uma revisada, se continuar posto alguma coisa. Obrigado assim mesmo.
  8. Bom dia a todos Estou fazendo um trabalho para gerar arquivos xml para ser lido pelo o Reinf, estou usando uma classe postada aqui no fórum por nossos amigos. Essa usa métodos e propriedades da Capicom.DLL, aparentemente esta esta OK! No entanto o valor da da tag <DisgetValue> vem com um valor que me parece não esta correto. Gostaria se fosse possível que os amigos pudessem me ajudar nesse sentido. Pra ser mais claro abaixo esta parte do código que implementei: METHOD assinar_v2( oNode ) CLASS TMontaDocumentoXML LOCAL cTxtXml, oUtil cTxtXml := oNode:ToString( HBXML_STYLE_INDENT + HBXML_STYLE_THREESPACES ) ::nAlgorithm := CAPICOM_HASH_ALGORITHM_SHA_256 ::cDigestValue := ::HashData( cTxtXml ) ::cSignatureValue := ::Sign() return METHOD HashData( cData, nAlgorithm ) CLASS TMontaDocumentoXML LOCAL oCapicom, oUtil DEFAULT nAlgorithm := ::nAlgorithm IF cData == NIL cData := DToS( Date() ) + Time() ENDIF oUtil := CreateObject( "CAPICOM.Utilities.1" ) oCapicom := CreateObject( "CAPICOM.HashedData.1" ) oCapicom:Algorithm := nAlgorithm oCapicom:Hash( cData ) RETURN oUtil:Base64Encode( outil:HexToBinary( oCapicom:Value ) ) O retorno esta vindo dessa forma: <DigestValue>PwA/AD8APwA/AD8APwA/AD8APwA/AD8APwA/AD8APwA=</DigestValue> Acredito que era pra vir dessa: <DigestValue>+Dm6c8v+ZhocqLQ5miRzTsuDnP5TnmwCAkhvWvxiFdI=</DigestValue> Desde já agradeço qualquer ajuda.
×
×
  • Create New...