Ajuda com envio do xml
Bom dia, eu estou com um problema no envio do XML que é o seguinte
http://img67.imageshack.us/img67/613...entication.jpg mas o certificado esta instalado na maquina e até abre a janela pra seleciona-lo (antes de pedir o PIN) Gostaria de saber se alguem pode me ajudar com isso Atenciosamente Rave |
Citação:
Qual é a marca e modelo do seu certificado? É só arquivo ou é um token? Você está digitando a senha corretamente? Já conseguiu fazer alguma operação no site da PBH usando o token? Qual a versão do Delphi que você está usando? Att, Luiz Vaz |
é um eToken da pronova (epass2000) se não me engano é do tipo A3
ja foi feito operações com ele no site da pbh estou digitando a senha corretamente e uso o delphi 7 |
Citação:
O seu token é o ePass2000_FT12. E ele usa o Middleware ePassNG Multi-platform para Microsoft CSP e PKCS#11 v2.11. Pelo visto o pessoal da Pronova só te passou o ePass2000_FT12 Windows Redistributable Package v1.1. Baixe o ePass2000_FT12 Windows Middleware v1.18 usando esse link: http://www.mediafire.com/file/zumtyyjkotz/ePass2000FT12_Middleware_V1.18.zip O site oficial tem que fazer login e é muito lento. Então já fiz o download e coloquei no mediafire. OBS.: A senha é rockey. Desinstale o antigo, antes de instalar esse. Não se esqueça de atualizar o SOAP do Delphi7 e de atribuir um certificado através do InternetSetOption usando INTERNET_OPTION_CLIENT_CERT_CONTEXT. No WebService_INET tem essas informações. Teste e me responda. Att, Luiz Vaz |
mas luiz, eu tenho sua aplicação aqui separado do projeto que etsou desenvolvendo e ela funciona normalmente.... se fosse questão Middleware acho que a sua aplicação não funcionaria, ou estou errado?
|
Citação:
Está faltando você informar ao SOAP que você vai usar o certificado. Olha no evento BeforePost do HTTPRIO.HTTPWebNode. É nessa hora que informo ao SOAP que tem que autenticar o SSL. Att, Luiz Vaz |
bom luiz, quando eu estava estudando o seu fonte para fazer aqui no sistema, e eu esqueci de mexer nesta parte, mas o estranho é que quando coloquei a rotina correta quando faz a chamada do beforepost, da um access violation que nem chega a entrar no evento.... tem ideia do que seja?
{ Content-Type } HttpAddRequestHeaders(Request, PChar(ContentHeader), Length(ContentHeader), HTTP_ADDREQ_FLAG_ADD); { Before we pump data, see if user wants to handle something - like set Basic-Auth data?? } if Assigned(FOnBeforePost) then FOnBeforePost(Self, Request); essa é a chamada do before post, na unit SOAPHTTPTrans procedure Tform_nfe.HTTPRIOHTTPWebNode1BeforePost( const HTTPReqResp: THTTPReqResp; Data: Pointer); var Cert : ICertificate2; CertContext : ICertContext; PCertContext : Pointer; begin showmessage('entrou no before post'); Cert := PegaCertificado; CertContext := Cert as ICertContext; CertContext.Get_CertContext(Integer(PCertContext)) ; try InternetSetOption(@Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, @PCertContext, sizeof(CertContext)*5) except end; end; esse é o evento beforepost mas debugando o erro acontece no begin, até cheguei a colocar o showmessage pra ver e realmente não entra no evento, sera que esqueci de instanciar algum objeto, ou perdeu alguma referencia? brigadao pela força cara |
Parece que o problema está nas declarações das Interfaces.
Se você está usando a unit MSXML2 que vem com o Delphi, eu tive esse problema. Faça um teste, colocando o evento sem nenhum código com referência às interfaces. Só com o showmessage. Se for isso mesmo, basta você reimportar a MSXML2 criando o arquivo MSXML2_TLB. Mas não adicione ele ao seu projeto, coloque simplesmente na clausula USES. Att, Luiz Vaz |
luiz, aconteceu exatamente isso, com o showmessage apenas, o evento funcionou normalmente, como eu peguei esse projeto na metade nao tenho certeza de qual unit estavam usando e o desenvolvedor antigo ja nao está mais na empresa, mas aqui no uses tem um acbrMSXML2_TLB
voce sabe se esta é uma unit padrao divulgada na net para o NFSe e se ela contem o mesmo tipo de erro que tem na padrao do delphi? e desculpe minha ignorancia, pois não conheço muito dessa parte do delphi, mas como faço para reimportar esta unit? ela é tipo uma package que tenho que compilar novamente? Obrigado Marconi Maia |
Citação:
Basta pegar a mesma unit do meu exemplo e copiar por cima. Remova tudo que tenha acbrMSXML2_TLB e as referências a ela. E adicione as referências para MSXML2_TLB do exemplo. Att, Luiz Vaz |
luiz, continua dando access violation no mesmo local, tirei do uses da interface o acbrMSXML2_TLB e coloquei no uses do implementation MSXML2_TLB e copiei e colei na pasta do meu projeto a sua unit MSXML2_TLB, mas continua dando access violation no mesmo local.
mas no uses da interface tenho tambem o acbrCapicom_TLB, tentei fazer a mesma coisa, retirei la de cima, e coloquei só no uses do implementation o Capicom_TLB, copiei e colei o seu capicom_TLB na pasta do meu projeto, mas quando fiz isso, começou a dar pau na minha função de assinatura que falando que iCertificate2 não esta declarado. e ainda, se eu volto com o Capicom_TLB para a declaração do uses la da interface, o programa compila normalmente e quando vai fazer a assinatura do xml da access violation nessa linha: OleCheck(IDispatch(Certificado.PrivateKey).QueryIn terface(IPrivateKey, PrivateKey)); tenho que retirar esse acbrCapicom_TLB mesmo? e no caso de usar o seu capicom, vou ter que mudar os tipos devariaveis de icertificate2 para algum outro? ou estou fazendo alguma cagada? ehehehe se ficou um pouco confuso tento te explicar melhor.... Muito Obrigado Marconi Maia |
Lol,
você fez uma grande confusão. Me manda em private o seu fonte que eu arrumo para você. Faz um zip e coloca no Free File Hosting Made Simple - MediaFire e manda o link. Pode me mandar so o fonte onde acontece o erro e as dependências. Att, Luiz Vaz Citação:
|
conseguiu avançar alguma coisa, pelo que te mandei?
|
Horários baseados na GMT -2. Agora são 12:08. |
vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.3.0