OpenNFSe

OpenNFSe (http://www.opennfse.com.br/forums/index.php)
-   Ajuda sobre código fonte (http://www.opennfse.com.br/forums/forumdisplay.php?f=5)
-   -   Ajuda com envio do xml (http://www.opennfse.com.br/forums/showthread.php?t=29)

Rave 31/03/2010 10:31

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

LuizVaz 05/04/2010 00:54

Citação:

Postado Originalmente por Rave (Post 57)
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


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

Rave 05/04/2010 14:43

é 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

LuizVaz 06/04/2010 14:12

Citação:

Postado Originalmente por Rave (Post 59)
é 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

Esse problema acontece às vezes por causa do Middleware estar desatualizado.
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

Rave 08/04/2010 10:22

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?

LuizVaz 15/04/2010 22:30

Citação:

Postado Originalmente por Rave (Post 61)
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?

Então é isso mesmo.
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

Rave 19/04/2010 14:56

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

LuizVaz 23/04/2010 15:52

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

Rave 26/04/2010 11:49

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

LuizVaz 28/04/2010 16:07

Citação:

Postado Originalmente por Rave (Post 82)
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

Não precisa,

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

Rave 07/05/2010 12:56

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

LuizVaz 12/05/2010 17:50

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:

Postado Originalmente por Rave (Post 117)
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


Rave 20/05/2010 09:25

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