Fred, pareceu-me que o seu problema esta na montagem do ID da tag:
Note que em <infNFe Id=… tem a String “NFe” seguida da chave de acesso da NFe.
É esta tag que o processo de assinatura busca para assinar o xml da nota.
javax.xml.crypto.URIReferenceException deu a entender que nao encontrou a tag com
o Id especificado neste trecho de codigo:
String id = el.getAttribute(“Id”);
Ou entao esta faltando o caracter “#” aqui (erro mais provavel):
Reference ref = fac.newReference("#" + id, fac.newDigestMethod(
DigestMethod.SHA1, null), transformList, null, null);
[quote=philler]Fred, pareceu-me que o seu problema esta na montagem do ID da tag:
Note que em <infNFe Id=… tem a String “NFe” seguida da chave de acesso da NFe.
É esta tag que o processo de assinatura busca para assinar o xml da nota.
javax.xml.crypto.URIReferenceException deu a entender que nao encontrou a tag com
o Id especificado neste trecho de codigo:
String id = el.getAttribute(“Id”);
Ou entao esta faltando o caracter “#” aqui (erro mais provavel):
Reference ref = fac.newReference("#" + id, fac.newDigestMethod(
DigestMethod.SHA1, null), transformList, null, null);
Alencar[/quote]
BINGOOO!! Era o # faltando mesmo, coloquei e assinou na hora!! Valeu mesmo, estes errinhos podem nos tomar dias de trabalho.
Mas o que seria o # afinal? É que realmente nao tive tempo pra estudar a coisa a fundo e entender o que cada coisa faz, é um projeto pessoal e só tenho tempo de fazer a noite, e o prazo é pra ontem como dizem.
Bom agora vou validar la no site do rs pra ver se assinou legal hehe, Valeu ae galera pela força.
dae galera…
minha situação é a seguinte: no ws do PR eu consigo conectar normalmente…apenas seto o meu certificado e o certificado que baixei da sefaz-pr e pronto…
agora estou tentando consultar o status do serviço do ws de contingência da receita… mas não consigo conectar… recebo a seguinte msg:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
ja tentei entrar em contato com o pessoal da receita ja faz 2 semanas e até agora não tive nenhuma resposta…
gostaria de saber se, assim como no ws do pr eu precisei baixar os certificados deles , eu preciso baixar algum certificado da receita para conseguir conectar…?? oq preciso fazer para conectar??
Deve estar faltando a cadeia de certificados para validar o certificado do
servidor da Receita.
No ws do Parana deu certo pois o teu certificado foi expedido pela mesma
entidade certificadora.
agora eu consigo conectar no sefaz-pr e no SCAN , masss…
se rodando o programa eu tentar conectar nos 2…por ex. consultar 1º o status no SCAN e depois de pegar o retorno, setar os certificados do Sefaz-pr e fazer a consulta de status tb…na 2º consulta me retorna a mesma msg:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
acontece isso só qdo é para servidores diferentes…
eu só consigo consultar um de cada vez… rodar o programa, consultar um, ai finaliza o programa, ai rodo de volta e só ai consulta o outro…
entendem??
tem algum problema de setar
depois limpar
System.clearProperty("javax.net.ssl.trustStoreType");...
e setar novamente o certificado??
Nao sei te afirmar. Mas como é variavel de ambiente, creio que se voce setar
atraves de arquivos de configuracao, hora um hora outro, nao vai ter galho.
Com isso voce nao precisa fechar e reabrir o prg todo.
Reseta a variavel e instancia a classe novamente.
cara… não querendo abusar… hehe…mas da uma olhada como é minha classe q seta os certificados…
public void setPropertySefaz(int codFilial,int tipoEmissao,String caminhoCertificado)
{
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
if(System.getProperty("javax.net.ssl.keyStoreType")==null)
{
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",caminhoCertificado+"certificado-mili-nfe.pfx");//Aqui vem o arquivo do certificado do seu cliente
System.setProperty("javax.net.ssl.keyStorePassword", "x");//Aqui a senha deste certificado
}
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", caminhoCertificado+"nfehomologado.keystore");//
System.setProperty("javax.net.ssl.keyStorePassword", "x");//Aqui a senha deste certificado
}
isso que vc falou não é a mesma coisa que eu estou fazendo né? tem como passar um exemplo?
ixe cara… ja vi que estou com problemas…
desse jeito funciona, mas só se eu não setar 2x…se não for para estados diferentes… entende?!
e pensando aqui…sera que não vai ter como 2 usuários, que emitem nfe para diferentes estados (por ex. pr e al), usarem a aplicação?
estou fazendo a aplicação web… mas vai ter gente do PR,AL e SC usando… to f…hehe
ninguém tem ai algumas sugestões?!?
Sou desenvolvedora Java e C# e gostaria de divulgar a solução Open Source da minha empresa pra Nota Fiscal eletrônica.
Essa solução foi desenvolvida em C#, mas acredito que, como o C# é muito parecido com o Java (uma cópia, pra falar a verdade, hehe) irá ajudar quem estiver interessado em estudar ou até desenvolver uma solução Java pra nota fiscal eletrônica.
Pessoal, estou com dificuldades em extrair o CNPJ do certificado que assinou o xml.
Sei que a receita faz isso, pois eles testam se o CNPJ base do certificado é o mesmo
do CNPJ base do emitente.
Alguns certificados vem com o CNPJ logo apos o nome da empresa, por exemplo:
CN=ALGUMA EMPRESA LTDA:01001001000101
Nestes casos é só pegar o getNomeCertificado() e sacar o cnpj.
Mas tenho visto casos em que o CN nao vem com este valor.
Alguma luz por ai? De onde a SEFAZ tira a informacao?
Não estou conseguindo validar a assinatura do xml em alguma notas e as mesmas são geradas no mesmo sistema.
Não consigo achar o erro alguém pode me ajudar?[color=darkblue] [/color]
Não estou conseguindo validar a assinatura do xml em alguma notas e as mesmas são geradas no mesmo sistema.
Não consigo achar o erro alguém pode me ajudar?[color=darkblue] [/color][/quote]
Pode nos informar quais as msgs de erro?
Uma dica que ja posso lhe adiantar: Se tiver dois espacos entre palavras nao valida.
Ex.: “Rua Treze…”. Entre Rua e Treze tem dois espacos. Isso ocorre com muita frequencia en descricao de produtos
e observacoes.