Leonardo Pizeli Postado Julho 12, 2010 Denunciar Share Postado Julho 12, 2010 Boa tarde, pessoal,Estou tentando consumir o Status do Serviço da nota fiscal eletronica 2.00 do estado de minas gerais utilizando HTTPRIO e CAPICOM, porém, ao solicitar o serviço uma mensagem é retornada dizendo:erro não catalogado, não foi possível obter a versão.Alguém poderia me ajudar?Segue o código://Certificadoprocedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;Data: Pointer);varStore : IStore;Certs : ICertificates;Cert : ICertificate2;CertContext : ICertContext;PCertContext : PCCERT_CONTEXT;SerialNumber : String;i : Integer;beginSerialNumber := '123456789'; //Número do serial a ser buscado do certificadoStore := CoStore.Create;//Repositórios de Certifcados da MáquinaStore.Open(CAPICOM_CURRENT_USER_STORE, 'MY', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );//Abre a lista de certificadosCerts := Store.Certificates ;//Aloca todos os certificados instalados na máquiai := 0;//loop de procura ao certificado requerido pelo número serialwhile i < Certs.Count dobeginCert := IInterface( Certs.Item[ i+1 ] ) as ICertificate2;//Cria objeto para acesso a leitura do certificadoif UpperCase(Cert.SerialNumber ) = UpperCase(SerialNumber) then//se o número do serial for igual ao que queremos utilizarbegin//carrega informações do certificadoCertContext := Cert as ICertContext;CertContext.Get_CertContext( Integer( PCertContext ) );if not (InternetSetOption( Data, 84,PCertContext, Sizeof( CERT_CONTEXT ) )) thenbeginShowMessage( 'Falha ao selecionar o certificado.' );end;i := Certs.Count;//encerra o loopend;i := i + 1;end;end;//enviar mensagemprocedure TForm1.Button1Click(Sender: TObject);varIStatusServico : NfeStatusServico;mensagem, dados: String;begin//cabeçalho da mensage(nfeCabMsg), mensagem(nfeDadosMsg)IStatusServico := (HTTPRIO1 as NfeStatusServico);mensagem:='<xml><soap12><soap12><nfeCabecMsg><cUF> 31</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap12>';dados:='<soap12><nfeStatusServicoNF2> <nfeDadosMsg><consStatServ><tpAmb>2</tpAmb><cUF>31</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></nfeStatusServicoNF2></soap12></soap12>';ShowMessage(IStatusServico.nfeStatusServicoNF(mens agem,dados));end;//outra tentativa de envio e o mesmo errorocedure TForm1.Button1Click(Sender: TObject);varIStatusServico : NfeStatusServico;mensagem, dados: String;begin//cabeçalho da mensage(nfeCabMsg), mensagem(nfeDadosMsg)IStatusServico := (HTTPRIO1 as NfeStatusServico);mensagem:='<?xml version="1.0" encoding="utf-8"?>'+'<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"'+'xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'+'<soap12:Header>'+'<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2" versao="2.00">'+'<versaoDados>2.00</versaoDados>'+'<cUF>31</cUF>'+'</nfeCabecMsg>'+'</soap12:Header>';dados:='<soap12:Body>'+'<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">'+'<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">'+'<tpAmb>2</tpAmb>'+'<cUF>31</cUF>'+'<xServ>STATUS</xServ>'+'</consStatServ>'+'</nfeDadosMsg>'+'</soap12:Body>'+'</soap12:Envelope>';ShowMessage(IStatusServico.nfeStatusServicoNF(mens agem,dados));end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Julho 13, 2010 Denunciar Share Postado Julho 13, 2010 O ideal é perguntar para quem já esta usando issohttp://www.forumweb.com.br/foruns/index.ph...eletronica-nfe/abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Pizeli Postado Julho 13, 2010 Autor Denunciar Share Postado Julho 13, 2010 O ideal é perguntar para quem já esta usando issohttp://www.forumweb.com.br/foruns/index.ph...eletronica-nfe/abraçoVlw vou verificar, obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Leonardo Pizeli
Boa tarde, pessoal,
Estou tentando consumir o Status do Serviço da nota fiscal eletronica 2.00 do estado de minas gerais utilizando HTTPRIO e CAPICOM, porém, ao solicitar o serviço uma mensagem é retornada dizendo:
erro não catalogado, não foi possível obter a versão.
Alguém poderia me ajudar?
Segue o código:
//Certificado
procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
Data: Pointer);
var
Store : IStore;
Certs : ICertificates;
Cert : ICertificate2;
CertContext : ICertContext;
PCertContext : PCCERT_CONTEXT;
SerialNumber : String;
i : Integer;
begin
SerialNumber := '123456789'; //Número do serial a ser buscado do certificado
Store := CoStore.Create;
//Repositórios de Certifcados da Máquina
Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
//Abre a lista de certificados
Certs := Store.Certificates ;
//Aloca todos os certificados instalados na máquia
i := 0;
//loop de procura ao certificado requerido pelo número serial
while i < Certs.Count do
begin
Cert := IInterface( Certs.Item[ i+1 ] ) as ICertificate2;
//Cria objeto para acesso a leitura do certificado
if UpperCase(Cert.SerialNumber ) = UpperCase(SerialNumber) then
//se o número do serial for igual ao que queremos utilizar
begin
//carrega informações do certificado
CertContext := Cert as ICertContext;
CertContext.Get_CertContext( Integer( PCertContext ) );
if not (InternetSetOption( Data, 84,
PCertContext, Sizeof( CERT_CONTEXT ) )) then
begin
ShowMessage( 'Falha ao selecionar o certificado.' );
end;
i := Certs.Count;
//encerra o loop
end;
i := i + 1;
end;
end;
//enviar mensagem
procedure TForm1.Button1Click(Sender: TObject);
var
IStatusServico : NfeStatusServico;
mensagem, dados: String;
begin
//cabeçalho da mensage(nfeCabMsg), mensagem(nfeDadosMsg)
IStatusServico := (HTTPRIO1 as NfeStatusServico);
mensagem:='<xml><soap12><soap12><nfeCabecMsg><cUF> 31</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap12>';
dados:='<soap12><nfeStatusServicoNF2> <nfeDadosMsg><consStatServ><tpAmb>2</tpAmb><cUF>31</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></nfeStatusServicoNF2></soap12></soap12>';
ShowMessage(IStatusServico.nfeStatusServicoNF(mens agem,dados));
end;
//outra tentativa de envio e o mesmo erro
rocedure TForm1.Button1Click(Sender: TObject);
var
IStatusServico : NfeStatusServico;
mensagem, dados: String;
begin
//cabeçalho da mensage(nfeCabMsg), mensagem(nfeDadosMsg)
IStatusServico := (HTTPRIO1 as NfeStatusServico);
mensagem:='<?xml version="1.0" encoding="utf-8"?>'+
'<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"'+
'xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'+
'<soap12:Header>'+
'<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2" versao="2.00">'+
'<versaoDados>2.00</versaoDados>'+
'<cUF>31</cUF>'+
'</nfeCabecMsg>'+
'</soap12:Header>';
dados:='<soap12:Body>'+
'<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">'+
'<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">'+
'<tpAmb>2</tpAmb>'+
'<cUF>31</cUF>'+
'<xServ>STATUS</xServ>'+
'</consStatServ>'+
'</nfeDadosMsg>'+
'</soap12:Body>'+
'</soap12:Envelope>';
ShowMessage(IStatusServico.nfeStatusServicoNF(mens agem,dados));
end;
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.