[quote=marciosantri]Depois de muita luta com o token (A3) e muita ajuda do Alencar (philler),
consegui fazer a conexão com o servidor de NFe aqui de Goiás.
Para evitar que outros programadores Java sofram como eu, vou descrever mais ou menos
os principais problemas encontrados.
:arrow: Servidor Proxy
Se vc utiliza servidor proxy não se esqueça de colocar o parâmetro
-Dhttp.proxyHost=IP_SERVIDOR_PROXY -Dhttp.proxyPort=PORTA_PROXY
Vc corre o risco de perder um tempinho aí.
:arrow: Arquivo de Configuração do Token
A dll presente no CD da Pronova (caso do meu token) estava bem menor que a instalada em
meu computador. A Dll do CD simplesmente não funcionou. A que eu estou utilizando é
bem maior. Pode ser um índicio de problema.
Ainda no arquivo, fique atento ao nr. do slot e ao nome dado (este será utilizado posteriormente).
O meu arquivo ficou assim:
[quote]name = FeitianPKCS#11
library = C:\santri\nfe\token\ngp11v211.dll
slot = 1[/quote]
:arrow: Teste do Site da Sefaz
Tente acessar o site da Sefaz pelo IE (pelo Firefox não consegui salvar o WSDL direito)
e digite a senha do token. Se acessar, quer dizer que sua assinatura está apta à utilizar
os WebServices.
Salve o XML contendo o WSDL. No caso de Goiás, o endereço é
https://homolog.sefaz.go.gov.br/nfe/services/NfeStatusServico?WSDL
Você pode exportar o certificado (arquivo .cer) dando um duplo clique
no cadeado que aparece na parte inferior do IE. Salve este .cer (opção de 64 bits)
pois poderá ser útil (no meu caso foi).
:arrow: Gerando as classes do WebService
Para quem utiliza o Java 6, existe um utilitário chamado wsimport, muito bacana, que
já gera as classes para acessar o WebService da Sefaz.
Uma das vantagens do wsimport é que não precisa enviar outros .jars pois a tecnologia
de acesso já está no java 6.
O comando rodado (no prompt) é mais ou menos assim
wsimport -keep -p santri.nfe.ws.goias.homolog.status NfeStatusServico.xml
O programa wsimport está na pasta bin do Jre.
O parâmetro -p serve para indicar o pacote onde as classes serão geradas.
O último parâmetro identificar onde está o WSDL. Eu não conseguir colocando
o caminho https://homolog.sefaz.go.gov.br/nfe/services/NfeStatusServico?WSDL e
creio que deva ser por causa da autenticação. Por isso gerei o XML e o utilizei
aqui (deu na mesma).
:arrow: KeyStore
Me disseram que não precisa utilizar arquivo para definir KeyStore no certificado
A3. Bem, eu não consegui. O que consegui foi gerando o arquivo .jks.
Lembra-se do arquivo .cer exportado a uns tópicos acima? Pois bem, vamos utilizá-lo
agora.
No prompt de comando, digitar
keytool -importcert -file nfe.cer -keystore nfe.jks
nfe.cer é o nome do arquivo .cer exportado no IE.
nfe.jks é o arquivo a ser gerado.
Esse comando irá pedir uma senha. Basta digitá-la e confirmá-la.
:arrow: No Eclipse
No fonte, para realizar a conexão segura, será necessário registrar
o provider do token. Isto pode ser feito desta maneira:
public boolean configurarProvider(){
String configName = "C:\\santri\\nfe\\token\\pkcs11.cfg";
try
{
Provider p = new SunPKCS11(configName);
Security.addProvider(p);
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
return true;
}
O “configName” é o arquivo contendo as configurações do token.
Também é necessário definir o “alias” do token.
Depois disso, basta configurar os parâmetros do SSL, mais ou menos assim
[code]System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, “C:\santri\nfe\nfe.jks”);
System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS11”);
System.setProperty(“javax.net.ssl.keyStore”, “NONE”);
System.setProperty(“javax.net.ssl.keyStoreProvider”, “SunPKCS11-FeitianPKCS”);
System.setProperty(“javax.net.ssl.keyStoreAlias”, alias);
System.setProperty(“javax.net.ssl.keyStorePassword”, “12345678”);[/code]
Onde está 12345678, coloque a senha do seu token.
Eu vou disponibilizar os fontes com o teste simples. Qualquer dúvida, caso eu possa ajudar,
farei com prazer. Se eu lembrar de algo mais eu posto aqui.
Inté.[/quote]Eu também achei sua explicação muito boa, só queria fazer uma pergunta, antes daquele passo que você diz para acessar o endereço da Fazenda pelo IE você tem que instalar o certificado? (no meu caso é o A3 da Certsign que tem que baixar um gerenciador de certificado).