Estou desenvolvendo um cliente para o ws da nfe…e estou com algumas duvidas alguem já desenvolveu algo a respeito de
nfe?
Nfe - Nota Fiscal Eletronica
1016 Respostas
Caro amigo, estou estudando o protocolo de comunicao da receita federal hoje… naum sei quando começo a mexer de fato com ela… mas estamos ae…
voce conseguiu desenvolver algo?
Abracos
Estou no projeto NF-e e ajudei varias pessoas do forum.
O que vc precisa amigo, talvez possa lhe ajudar.
[]s,
Entaum cara, hoje mesmo estou lendo sobre o assunto… ainda naum implementei nada nada nada…
Estou lendo o PDF da receita que trata do assunto para entender melhor o funcionamento do sistema!
http://www.nfe.fazenda.gov.br/portal/docs/Manual_Integracao_Contribuinte_v_2.02a_2008_06_16.pdf
Mas então sinceramente queria ver com o pessoal como funciona a parada da conexao na real… eu nunca usei com isso… naum sei nada nada disso… tem alguma classe especial para acessar o serviço deles??
Quais cuidados devo ter, sei lah… tem algum tutoriazinho rolando ae pra iniciar com isto?
abracosss
Tambem gostaria de participar dessa discussao. Preciso da mesma coisa.
Consegui montar o web service client, porem na chamada do metodo:
… estou com duvidas de como passar o parametro “conteudoArquivo”.
mateusprado ou mais alguem poderia dar um help ?
Eu vi que tem bastante gente ae que manja da parada já… daí ja queria ver quais os pontos interessantes sobre este projeto…
Parece ser bem legal o sistema de NF-E… eae alguem se abilita para nos ajudar…
Ola pessoal, comigo vc´s podem contar. O sistema da NF-e sem dúvida alguma é um grande projeto, ele é contituido da Tecnologia de WebServices. Para cada operação da nota fiscal vc tem um WebService de envio e de retorno. O envio deve ser feito em forma de um envelope(SOAP), com conteudo XML. Eniva XML e retorna XML, com a resposta, de erro ou ok. No Java esse processo é chamdo marshal e unmarshal, ou seja, transfoma um Bean(class) em xml, e o xml de retorno em um Bean com todos os metodos get e set. Alem disso todas as notas fiscais devem ser assinadas digitalmente. O processo longo. Seria legal abrirmos um canal de discussão sobre isso, o que vc acham?
Com toda certeza, isso é um projeto de interesse de todos programadores que realmente tem um sistema atual e funcional rodando… Além do que pelo que li no PDF da receita, o processo ou todo a estrutura/arquitetura deles pode mudar lentamente de acordo com novas necessidades e novos requisitos apontados com a continuo uso dele… ou seja, ainda pode nos dar bastante assunto para manter o assunto em pé… Por isso acho legal fazer um canal de discussão sobre o tema!!!
Quem sabe até montar uns tutoriais… eu nunca mexi com o XML, diretamente, apenas na unha… Como que voce fazer para criar arquivos XML ou mesmo mandar um XML para a receita, tem alguma classe especifica que trabalhe com isso?
Apartir do WSDL vc gera as suas classes e interface para acesso ao webservice. E apartir do XSD, versao atual PL005a, vc cria seus XML´s. Pois o xsd que define o estilo, formato, layout do XML. Vou disponibilizar um canal para discutirmos isso. http://mateusprado.com/nfe, ok?
Pode ser… sera que naum tem como pedir aos adms daqui fazer uma sessao para esta discussao… mas para mim se tu quiser fazer la mesmo, ta otimo!
Manda brasa!!
Pronto ja esta feito. vou colocar um WordPress la e blz.
Agente vai se falando
Um abraço e até mais tarde
Vou comecar a implementar hoje mesmo a parada… agora quero ver!!!
uahuauh, v o wordress ta legal!!!
Cara to com duvidas…
Para eu iniciar uma conexao com o webserver, eu devo ter um XML e utilizar o SOAP, certo? Onde dentro deste XML vai ter a assinatura digital da empresa… correto?
O unico documento assindo digitalmente é o Envio da Nota. Pra status de serviço, consulta cadastro, nao precisa nada disso.
Vc ja gerou as classe em cima da WSDL ? Usando Axis(WebService Client) nativo do Eclipse ?
uhhuauhau… cara… to longe de ter feito isso…
Eu to entendo melhor o funcionamento da parada… eu quero enviar uma nota por exemplo…
AA usando o AXIS, eu tava lendo tem várias maneiras de fazer o acesso lá né…entaum vou usar o AXIS e to usando o Eclipse mesmo neste projeto. Naum gerei nada em cima do WSDL… vou achar um material para gerar a classe… espero que de certo…
Abraçosss
O que deveria ter neste classe baseada no WSDL?
Pra vc gerar as clsse em cima da WSDL é o seguinte. Va em File -> New -> Other… WebService-> WebService Client.
No service Defition vc passa a url do webService que quer comsumir pasando um sufixo ?WSDL
por exemplo
https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico.asmx?WSDL
Na barra central leve até o topo, TEST eai FINISH. Ele vai geral umas classes, interfaces e alguns jsp para realizar o teste.
Boa Sorte.
aaaaaa ele faz tdo… cacete… eu nem tinha ideia disso mano!!!
Caramba… da pra motar um tuto depois huauhauhauh abracos, BRIGADAOOOO
Blz. Oh vamos usar o blog la. Hj vou fazer um tuorial de algumas coisas.
Abraços.
no meu eclipse, ele da opcao de fazer uma classe WSDL e uma WebService Client como tu disse…
Blz. Oh vamos usar o blog la. Hj vou fazer um tuorial de algumas coisas.Abraços.
claro claro… vamo usar la… to esperando voce fazer as primeiras coisas la… hehehe
Blz vou postar alguns tutoriais la até amanha.
Abraços
voce usou o Eclipse europa neh? ou o Ganymede?
Tem que instalar o server Axis neh? aqui ta dando erro na hora de criar a WebService Client… vou tentar resolver… mas ja fioca de fica ae para seus tutoriais!
fui no blog hoje e nada cara…huauhaauh, aiaia… tentano usar inda caçando um tutorial…
Qual eclipse voce usa??? aqui naum deu pra fazer da mesma forma que tu fez… eu to usando a versao 3.4!!! Sera que isso naum pode dar diferença??
Abracossss
Prado meu amigo… cade tu!! Nada ainda la no wordpress? eu to tentando e retentando… e nadad e conseguir fazer ocmo voce me pediu… to baixando de novo o eclipse, e etc… 3.4 espero que funfe… abracos
Prado, consegui melhorar… To usando o NetBeans e agora ta dando outro erro:
01/09/2008 15:42:50 : Retrieving Location: https://hom.nfe.fazenda.gov.br/NFeStatusServico/NFeStatusServico.asmx?wsdl
Error: An I/O error occured. Server returned HTTP response code: 403 for URL: https://hom.nfe.fazenda.gov.br/NFeStatusServico/NFeStatusServico.asmx?wsdl
Que pode ser? Eu naum coloquei a certificacao Digital em Meu micro…
Abracoss
Sera que eh falta de CERTIFICADO DIGITAL?
Boa tarde colegas,
Tou lutando com o desenvolvimento de uma aplicação para comunicação com os web services da SEFAZ - MT e até agora tou perdendo feio...
Vocês podem me dar uma mãozinha??
Vou começar pelo mais velho dos problemas:
Criado o método para chamada do Web Service , ele me retorna um erro que eu não consegui resolver ainda (tenho apenas 6 meses de Java):
public void callService(String local, String servico, String xml)throws Exception{
Call call= (Call) new Service().createCall();
call.setTargetEndpointAddress(local);
call.setOperationName(servico);
}
Cara gostaria de poder ajudar… mas estou com muitas dificildades com este lance de NFe… to entando pegar umas ajudas por ae, mas ateh agora nada…
Vou tentar conseguir algo bacana pra tentar ajudar a todos!!
hehehehe Abracosss
Todos estamos… hehehe…
Talvez eu possa ajudar em algo.
Em que parte você está??
Cara na real, eu to tentando criar uma WebService Client no Eclipse ou no NB… mas sempre da um erro BAD_CERTIFIQUED do servidor… naum sei pq razao…
Ja tentei varias coisas e nada… voce fez assim?
Cara, infelizmente nao tenho uma solucao pra postar … na verdade tenho mesmo eh mais uma duvida
Vcs sabem se tem algum cnpj, usuario e senha pra testar a chamada desse web service da NF-p ?
Me passaram este link a uns dias atras:
http://nf-eletronica.com/blog?dl_id=7
Tem algumas coisas nestes blog: http://nf-eletronica.com/blog/
Isso ja eh o que me passaram… pq a galera naum posta o codigo ae pra gente ver… ficaria bem mais facil!
Cara na real, eu to tentando criar uma WebService Client no Eclipse ou no NB… mas sempre da um erro BAD_CERTIFIQUED do servidor… naum sei pq razao…
Ja tentei varias coisas e nada… voce fez assim?
Você não consegue criar as classes ou não consegue o acesso ao serviço??
Eu só consegui realizar o acesso ao status do serviço ontem, agora vou mexer com os XML’s para envio de NFe.
Bom dia a todos,
Ainda estou quebrando a cabeça com essa bendita nota fiscal eletrônica…
Consigo consumir alguns web services, como a consulta de Status do serviço, mas agora estou tentando consultar o cadastro de um contribuinte e tenho o seguinte erro na tela:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at br.inf.portalfiscal.www.nfe.wsdl.CadConsultaCadastro.CadConsultaCadastroSoapBindingStub.consultaCadastro(CadConsultaCadastroSoapBindingStub.java:108)
at ConsultaCadastro.main(ConsultaCadastro.java:56)
{http://xml.apache.org/axis/}hostname:LAB6
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at br.inf.portalfiscal.www.nfe.wsdl.CadConsultaCadastro.CadConsultaCadastroSoapBindingStub.consultaCadastro(CadConsultaCadastroSoapBindingStub.java:108)
at ConsultaCadastro.main(ConsultaCadastro.java:56)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
... 11 more
Alguém com divina inspiração pode interpretar o meu erro por favor???
Tou ficando doido com isso aqui…
Flwz!!
eu naum passei nem do certificado ainda…
Ola! estou tambem desenvolvendo a NF-e aqui, e ja esta bombando
Vou tentar ajudar no que puder, pois tbm diva a ajuda de uma alma divina (Arlei)
eu fiz um certificado na agencia dos correios, http://www.correios.com.br/produtos_servicos/certificacaodigital/default.cfm pegei um e-CNPJ tipo A1
bom, pra criar os clientes webservice, fiz um utilitário, ele ja usa o certificado ai vai o codigo....
Ele usa o WSDL2JAVA que vem junto o AXIS, no meu caso estao os servidores de RS que vou usar aqui p/ SC....
public class GeradorWSDL {
public static void main(String[] args) {
String nfestatusservico = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL";
String nfeconsulta = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nfeconsulta/NfeConsulta.asmx?WSDL";
String nferecepcao = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nferecepcao/NfeRecepcao.asmx?WSDL";
String nferetrecepcao = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nferetrecepcao/NfeRetRecepcao.asmx?WSDL";
String nfecancelamento = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nfecancelamento/NfeCancelamento.asmx?WSDL";
String nfeinutilizacao = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nfeinutilizacao/NfeInutilizacao.asmx?WSDL";
GeradorWSDL gerador = new GeradorWSDL();
gerador.setProperties();
gerador.geraWSDL(nfestatusservico, "nfestatusservico");
gerador.geraWSDL(nfeconsulta, "nfeconsulta");
gerador.geraWSDL(nferecepcao, "nferecepcao");
gerador.geraWSDL(nferetrecepcao, "nferetrecepcao");
gerador.geraWSDL(nfecancelamento, "nfecancelamento");
gerador.geraWSDL(nfeinutilizacao, "nfeinutilizacao");
}
public void geraWSDL(String wsdl, String pack) {
WSDL2Java.main(new String[] { wsdl, "-o", "src", "-p",
"br.com.minhaempresa.nfe.service." + pack });
System.out.println("*** Geração concluída ***");
}
public void setProperties() {
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "certificado.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "SENHA");
}
}
o PKCS12 é o meu certificado digital, o JKS é os sertificados do webservice, eu pego eles usando a seguite classe (feita pela própria sun :lol: )
public class InstallCert {
public static void main(String[] args) throws Exception {
System.out.println("Aqui: "+args[1]);
String host;
int port;
char[] passphrase;
if ((args.length == 1) || (args.length == 2)) {
String[] c = args[0].split(":");
host = c[0];
port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
String p = (args.length == 1) ? "changeit" : args[1];
passphrase = p.toCharArray();
} else {
System.out
.println("Usage: java InstallCert <host>[:port] [passphrase]");
return;
}
File file = new File("jssecacerts");
if (file.isFile() == false) {
char SEP = File.separatorChar;
File dir = new File(System.getProperty("java.home") + SEP + "lib"
+ SEP + "security");
file = new File(dir, "jssecacerts");
if (file.isFile() == false) {
file = new File(dir, "cacerts");
}
}
System.out.println("Loading KeyStore " + file + "...");
InputStream in = new FileInputStream(file);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(in, passphrase);
in.close();
SSLContext context = SSLContext.getInstance("TLS");
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
X509TrustManager defaultTrustManager = (X509TrustManager) tmf
.getTrustManagers()[0];
SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
context.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory factory = context.getSocketFactory();
System.out
.println("Opening connection to " + host + ":" + port + "...");
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setSoTimeout(10000);
try {
System.out.println("Starting SSL handshake...");
socket.startHandshake();
socket.close();
System.out.println();
System.out.println("No errors, certificate is already trusted");
} catch (SSLException e) {
System.out.println();
e.printStackTrace(System.out);
}
X509Certificate[] chain = tm.chain;
if (chain == null) {
System.out.println("Could not obtain server certificate chain");
return;
}
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
System.out.println();
System.out.println("Server sent " + chain.length + " certificate(s):");
System.out.println();
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
MessageDigest md5 = MessageDigest.getInstance("MD5");
for (int i = 0; i < chain.length; i++) {
X509Certificate cert = chain[i];
System.out.println(" " + (i + 1) + " Subject "
+ cert.getSubjectDN());
System.out.println(" Issuer " + cert.getIssuerDN());
sha1.update(cert.getEncoded());
System.out.println(" sha1 " + toHexString(sha1.digest()));
md5.update(cert.getEncoded());
System.out.println(" md5 " + toHexString(md5.digest()));
System.out.println();
}
System.out
.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
String line = reader.readLine().trim();
int k;
try {
k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
} catch (NumberFormatException e) {
System.out.println("KeyStore not changed");
return;
}
X509Certificate cert = chain[k];
String alias = host + "-" + (k + 1);
ks.setCertificateEntry(alias, cert);
OutputStream out = new FileOutputStream("jssecacerts");
ks.store(out, passphrase);
out.close();
System.out.println();
System.out.println(cert);
System.out.println();
System.out
.println("Added certificate to keystore 'jssecacerts' using alias '"
+ alias + "'");
}
private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();
private static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 3);
for (int b : bytes) {
b &= 0xff;
sb.append(HEXDIGITS[b >> 4]);
sb.append(HEXDIGITS[b & 15]);
sb.append(' ');
}
return sb.toString();
}
private static class SavingTrustManager implements X509TrustManager {
private final X509TrustManager tm;
private X509Certificate[] chain;
SavingTrustManager(X509TrustManager tm) {
this.tm = tm;
}
public X509Certificate[] getAcceptedIssuers() {
throw new UnsupportedOperationException();
}
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
throw new UnsupportedOperationException();
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
this.chain = chain;
tm.checkServerTrusted(chain, authType);
}
}
}
espero ter ajudado em algo
abraço
pra completar ai como executamos um webservice desses gerado pelo wsdl2java
public static void main(String[] args) throws Exception {
NfeStatusServico service = new NfeStatusServicoLocator();
NfeStatusServicoSoap_PortType nfeStatus = service
.getNfeStatusServicoSoap();
String nfeCabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "
+ "versao=\"1.02\">" + "<versaoDados>1.07</versaoDados>"
+ "</cabecMsg>";
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<consStatServ " + " versao=\"1.07\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>2</tpAmb>" + "<cUF>42</cUF>"
+ "<xServ>STATUS</xServ>" + "</consStatServ>";
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "certificado.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.out.println(nfeCabecMsg);
System.out.println(nfeDadosMsg);
// InstallCert.main(new String[] { new
// String("homologacao.nfe.sefaz.rs.gov.br") });
System.out.println(nfeStatus.nfeStatusServicoNF(nfeCabecMsg,
nfeDadosMsg));
}
no console deve aparecer algo assim:
(formatei o xml)
<?xml version="1.0" encoding="UTF-8"?>
<cabecMsg xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.02">
<versaoDados>1.07</versaoDados>
</cabecMsg>
<?xml version="1.0" encoding="UTF-8"?>
<consStatServ versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<cUF>42</cUF>
<xServ>STATUS</xServ>
</consStatServ>
<?xml version="1.0" encoding="utf-8"?>
<retConsStatServ versao="1.07"
xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>SVRS20080807095546</verAplic>
<cStat>107</cStat>
<xMotivo>Servico em Operacao</xMotivo>
<cUF>42</cUF>
<dhRecbto>2008-09-16T17:09:37</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
Bem… pra setar os certificados que eu usarei,peguei um código que o pessoal postou aqui:
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "caminho do meu certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "minha senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "caminho do meu keystore.jks");
Depois disso, com a santa ajuda dos plugins do eclipse para criar o cliente a partir do WSDL, eu uso o serviço que for necessário. Nesse caso abaixo fiz o consumo do Web service de consulta de Status:
NfeStatusServico_Service hService = new NfeStatusServico_ServiceLocator();
try {
NfeStatusServico_PortType port = hService.getNfeStatusServico();
System.out.println(port.nfeStatusServicoNF(cabecMsg, consStatServ));
}catch(ServiceException e1){
e1.printStackTrace();
}catch(RemoteException e){
//System.out.println("-------------------------------------");
//System.out.println(e.getMessage());
//System.out.println("-------------------------------------");
//e.printStackTrace();
}
Pra ele funcionar direitinho, é só ter criado as classes cliente a partir do WSDL do Web Service desejado.
Agora se o seu problema for para a importação dos certificados para a keystore, você deve abrir o prompt e usar a essa ferramenta aqui: http://dist.codehaus.org/jetty/jetty-6.1.x/jetty-6.1.1.zip (Jetty)
Feito o download, use o seguinte comando:
java -classpath lib/jetty-6.1.8.jar org.mortbay.jetty.security.PKCS12Import [nomedoarquivo].pfx [nomedoarquivo].jks
Espero ter ajudado!!
Abraço,
Tiago Paulino
Voces pegaram os certificos tipo “teste” ou oficial da empresa?
To vendo as classes, vou ver aqu para fazer rodar na minha maquina!!
Abracos
Voces pegaram os certificos tipo “teste” ou oficial da empresa?
To vendo as classes, vou ver aqu para fazer rodar na minha maquina!!Abracos
Pra testes de assinatura eu comecei usando um certificado criado por mim mesmo =D
Mas quando consegui conectar ao web service, passei a usar o certificado emitido por uma AC.
Senão não consigo acesso ao serviço.
Com o código aí de cima, você pode fazer o acesso aos web services, desde que use um certificado cadastrado no ambiente de homologação da SEFAZ do estado desejado.
Att.
Tiago Paulino
Divinópolis MG 26 de Setembro de 2008. 15h26 Sexta Feira.
Ola senhores,
Este é meu 1º post no forum.
Estou embarcando ou melhor, embarcado ja, nessa nota fiscal eletronica.
Programo em clipper, migrei para o Vfp por definição do patrão aqui na empresa.
E agora, decidi bancar o que deveria ter feito o qe tenho vontade ha mto tempo, aprender java por minha conta e risco e seguir nela.
Estou lendo os post’s tudo ainda é novidade pra mim, porem, uma pergunta que iria fazer ja me foi respondida.
Se em java eu poderia trabalhar com a tal nota fiscal eletronica, pois, Visual Foxpro 9, pelo que li, não consegue fazer Fazer a Assinatura Digital, e nao estabelece conexao com webservices.
Prometo tentar ler todos os topicos antes de perguntar, vou ler os tutoriais, e vou aprender java.
No entanto, peço paciencia aos usuarios do grupo para comigo.
De imediato desejo sorte a todos,
E espero muito do forum, porem, sei que depende mais de mim.
Abraços e me veram com frequencia por aqui.
Meu, seguinte… sim eh funcional… da pra fazer… naum eh facil, hehehe… mas da pra fazer… tem muitos caras que ja estaum rodando a NFE em JAVA!
Bem vindo ao forum e bons estudos… espero que goste da Linguagem!!!
Valeu dcbasso…
Se dá pra fazer, então, faremos…
Vou com tudo…
Abraços e obrigado pelas boas vindas.
Se precisar manda MP, qualquer coisa falamos por MSN, naum sou mto pro ainda no JAVA, mas ja tenho algum tempo de exp com a linguagem!!
Abracoss
ola Cleiton, ja ta add no msn
aqui na empresa a gente trabalha com Clarion, se tornaria inviavel desenvolver a Nf-e nessa linguagem, creio que seja o mesmo caso do VFP
precisando estamos ae
abraço
Pessoal, quanto ao certificado…
Não temos como consumir os webservices, mesmo como TESTE sem termos um certificado válido? Ou seja, para ambiente de testes tb temos que comprar um certificado?
Obrigado e desculpem se a pergunta for muito óbvia.
Carlos Inglez
dcbasso, esse certificado que vc passou através do link http://nf-eletronica.com/blog?dl_id=7 dah pra usar para teste?
vc tem a senha desse certificado?
Bom dia
Para completar a solução do f-shmitt, poderiam criar uma lib somente para conexão.
Passando para a chamada dos web services a uri que desejam, assim farão este a chamada do web service uma unica vez.
Outra dica, no caso do sertificado do servidor, como o padrao de todos os sertificados tem como raiz o ipc brasil, uma vez gerando o truststore da raiz do certificado de qualquer ambiente do brasil, não será necessário estar atualizando sempre que houver mudanças no servidor.
Espero ter contribuido…
Qualquer duvida estamos ai
Boa vm, aqui fiz exatamente isso, sempre baixo o truststore e salvo uma úniva vez… e uso ele para as conexões…
quanto aos certificados de teste, não consegui acessar nenhum webservice com eles…
ba, agora vi que la no início do topic escrevi certificados com S… e acho q o vm tbm :lol:
“portugues bem digado ninguém corrége”
Não fui eu deve ter sido outro com mesmo id…
hehe
Sou pessimo em portugues, prefiro ingles…
Bom, voltando ao assunto de NF-e, como estao todos ? Se precisarem de ajuda, talvez possa ajudar.
[ ]s,
O meu ta indo, ta apuradão mas ta saindo… o fernando ta me dando uma boa ajuda…
Mas agora parei no seguinte, instalei os certificados da receita em meu micro, mas agora não sei mais o que fazer… hehehe
dcbasso, esse certificado que vc passou através do link http://nf-eletronica.com/blog?dl_id=7 dah pra usar para teste?
vc tem a senha desse certificado?
Po cara, desculpa a demora… Então acabei não usando ele, peguei um certificado para mim na receita mesmo… é mais fácil!! hehe, mas temo blog do pessoal, dá uma acessada lá!
http://nf-eletronica.com/blog/
ABRACOS, DECULPA A DEMORA!
DUVIDA... pessoal tenho o certificado da empresa instaldo, mas quando tento acessar
https://www.sefazvirtual.fazenda.gov.br/NFeStatusServico/NFeStatusServico.asmx
o servidor deles alega que tem erro no meu certificado...
MEnsagem:
The page requires a valid SSL client certificate
Your client certificate is untrusted or invalid. A Secure Sockets Layer (SSL)client certificate is used for identifying you as a valid user of the resource.
--------------------------------------------------------------------------------
Please try the following:
Contact the site administrator to establish client certificate permissions.
If you already have a valid client certificate, use your Web browser's security features to ensure that your client certificate is installed properly. (Some Web browsers refer to client certificates as browser or personal certificates.)
Change your client certificate and click the Refresh button, if appropriate.
HTTP Error 403.16 - Forbidden: Client certificate is ill-formed or is not trusted by the Web server.
Internet Information Services (IIS)
--------------------------------------------------------------------------------
Technical Information (for support personnel)
Go to Microsoft Product Support Services and perform a title search for the words HTTP and 403.
Open IIS Help, which is accessible in IIS Manager (inetmgr), and search for topics titled About Certificates, Using Certificate Trust Lists, Enabling Client Certificates, and About Custom Error Messages.
Eu fiz o mesmo com o servidor do RS, e deu certo, acessou normal... que sera que esta acontecendo?
ABRACOSSS
Achei o erro… naum tinha que os enderecos de homologacao
hom.******
valeu
dcbasso, bom dia!
Em que pé do projeto vc se encontra? Estou tentando desenvolver uma rotina internamente. Já conseguiu fazer a assinatura e envio?
Obrigado e abs
Então, a principio está tudo OK. Eu recebo o XML pronto eu preciso apenas enviar, porém estou com dificildades para tal.
Eu já consigo consultar o STATUS DO SERVICO, porém só isso. O NFE RECEPCAO da um erro: "Rejeicao: Falha no Esquema XML", apesar de antes eu validar com ferramentas que o governo dispoe e os XSD.
Agora eu to com duvida pq o seguinte... as minhas classes que enviam e retornam uma mensagem para o sistema, utilizando pois parametros para enviar o xml para a receita: String dadosXML, String cabecalho..
Segue codigo:
package br.inf.portalfiscal.nfe.main;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import br.inf.portalfiscal.nfe.service.nferecepcao.NfeRecepcao;
import br.inf.portalfiscal.nfe.service.nferecepcao.NfeRecepcaoLocator;
import br.inf.portalfiscal.nfe.service.nferecepcao.NfeRecepcaoSoap_PortType;
public class Recepcao {
private InstalarCertificado ic = new InstalarCertificado();
private String nfeCabecMsg = "";
private String nfeDadosMsg = "";
public Recepcao(String nfeCabecMsg, String nfeDadosMsg){
this.nfeCabecMsg = nfeCabecMsg;
this.nfeDadosMsg = nfeDadosMsg;
}
public void consumirServico(){
try {
NfeRecepcao servico = new NfeRecepcaoLocator();
NfeRecepcaoSoap_PortType recepcao = servico.getNfeRecepcaoSoap();
System.out.println(recepcao.nfeRecepcaoLote(nfeCabecMsg, nfeDadosMsg)); //envia e retorna mensagem da receita no console
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Mas a minha complicação é o seguinte, eu tenho o XML já, queria apenas enviar o arquivo XML para receita. Eu até tentei monta um public static void main passando umas String identicas a do xml de teste, mas mesmo assim não ficou legal, da aquele erro citado acima!
Dai não sei o que é que ta faltando no XML, ele validou antes e na hora de enviar da erro...
Eu estou passando o parametro nfeCabecMsg isso: "";
e o corpo... eu vou tirar uns nomes aqui e etc para poder postar, mas sera que naum tem jeito de soh enviar um arquivo XML....
*Usei o AXIS 1.4 para geracao das classes de envio NFE.
Meu amigo, é exatamente a minha situação. Estou perdido porque já tenho os XML montados a partir de outra ferramenta. O que preciso fazer é assinar (já consegui, com os exemplos aqui do fórum mesmo) e enviar.
Não gostaria de ter que gerar tudo de novo…
Está mais complicado do que eu pensei…
Eu que o diga, estou a 2 meses fazendo estas NFEs e ae e nada…
Como voce faz para assinar, me add no msn ae… [email removido]
Abracos
ALGUEMM???
Eu assinei usando como exemplo um código postado aqui no fórum mesmo. Se quiser, posso te passar. Mas precisa de um certificado .pfx (usei um de exemplo, não tem validade legal).
Agora, pelo que entendi, vc está com um problema similar ao meu, ou seja, temos o xml e precisamos “importá-lo” para enviar ao SEFAZ, correto?
essa é a resposta do email do dcbasso
pra ajudar no cabeçalho fiz um método stático que eu passo a versão e retorna o cabecalho formado…
segue ai o codigo…
public static String getDefaultHeader(String versaoDados){
String nfeCabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "
+ "versao=\"1.02\">" + "<versaoDados>"+versaoDados+"</versaoDados>"
+ "</cabecMsg>";
return nfeCabecMsg;
}
pra salvar o xml num arquivo… eu uso um FileWriter ou OutputStream
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("saida.xml");
fw.write("conteudo do xml");
fw.close();
}
abraço
Sim, podemos utilizar FileWriter, PrintWriter, etc.
Mas tendo um XML já gerado e assinado, alguém tem alguma sugestão para fazer o envio? Talvez ler o arquivo assinado?
Obrigado
Pessal com relação o XSD, tem a restrição na STRING certo? Exatamente esta:
<xs:simpleType name="TString">
<xs:annotation>
<xs:documentation> Tipo string genérico</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:pattern value="[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}"/>
</xs:restriction>
</xs:simpleType>
O que isso quer dizer? que o valor ASCII de ! até ÿ são válidos?
Ou ainda mais facil, ele nao aceita acentos nem nada neh? *NFe
Pessoal, ninguém está em uma situação semelhante, de ter um XML já gerado, e precisando apenas efetuar o envio? Será que seguimos um caminho equivocado?
Agradeço qualquer ajuda.
Abs
se tem o arquivo xml gerado, é so assinar ele e transmitir pelo webservice…
antes de transmitir tbm da de validar pelo schema…
abraço
Vc acha viável a utilização do JAXB? Estou lendo alguma coisa a respeito e não me parece complexo de ser utilizado…
Alguém já utilizou?
Olá…
Eu consegui criar a comunicação com o webservice com base no exemplo do f-schmitt usando WSDL2Java.
Eu tenho o certificado digital de meu cliente comigo, é o do tipo A3 (SmartCard) e estou enfrentando problema em conectar no webservice do Rio Grande do Sul. Ocorre erro 403.7, que é certificado digital do cliente não enviado para o servidor. Aí que acho estranho, pois se conectar no ws do Mato Grosso do Sul funciona corretamente. o keystore e truststore estao setado corretamente, tanto que se (a nivel de testes) colocar outro dados da outro erro referente a falta ou erro nos certificados. Fiz um teste conectando no Firefox e no IE e ocorre o mesmo erro.
f-schmitt vc esta conseguindo acessar normalmente o ws do RS? Meu cliente já aparece como liberado no site da secretaria da fazendo de SC, mas tenho q fazer algum outro procedimento de liberacao?
fico no aguardo…
flw
Olá…
Eu consegui criar a comunicação com o webservice com base no exemplo do f-schmitt usando WSDL2Java.
Eu tenho o certificado digital de meu cliente comigo, é o do tipo A3 (SmartCard) e estou enfrentando problema em conectar no webservice do Rio Grande do Sul. Ocorre erro 403.7, que é certificado digital do cliente não enviado para o servidor. Aí que acho estranho, pois se conectar no ws do Mato Grosso do Sul funciona corretamente. o keystore e truststore estao setado corretamente, tanto que se (a nivel de testes) colocar outro dados da outro erro referente a falta ou erro nos certificados. Fiz um teste conectando no Firefox e no IE e ocorre o mesmo erro.f-schmitt vc esta conseguindo acessar normalmente o ws do RS? Meu cliente já aparece como liberado no site da secretaria da fazendo de SC, mas tenho q fazer algum outro procedimento de liberacao?
fico no aguardo…
flw
estranho… Vc está mandando o trustStore?
Eu assinei usando como exemplo um código postado aqui no fórum mesmo. Se quiser, posso te passar. Mas precisa de um certificado .pfx (usei um de exemplo, não tem validade legal).Agora, pelo que entendi, vc está com um problema similar ao meu, ou seja, temos o xml e precisamos “importá-lo” para enviar ao SEFAZ, correto?
Cara, não sei como tu estruturou seu sistema, mas talvez vc não tenha que salvar em disco seu xml como todo mundo tá fazendo… Mesmo se tiver, usa alguma ferramenta de binding, tipo JAXB…
Acho q o maior dos problemas na NFE são os benditos schemas da receita, tá um pior q o outro com erros grotescos…
sim, mando um truststore corretamente. Gerei um referente o ws do RS e um do MS, se nao estivesse setando o trustStore nem conectaria no do MS…
O unico teste q eu fiz ainda eh pra buscar o status do ws, no do MS retorna td corretamente. Amanha vou testar em outros pra ver se funciona blzinha e ver tentar “chutar” o q pode ser.
vlw
Salve a todos!
estou usando os webservices de RS e tudo normal, se o seu cliente fez o TTD é para estar tudo certo… há alguns dias atraz estava passando trabalho com um A3 token, que me retornava sempre (403)Forbidden, estava setando o truststore tudo certo tbm, mas nao testei ele com outros servidores :?
pra resolver o problema adquirimos um A1 pelos correios, que é beeeeem mais barato que os da Certisign, estou esperando a resposta do email vale-presente deles para trocar o certificado por um Smart
Há um tempo atraz um colega adquiriu um certificado ‘bixado’, que estava com o endereço LCR errado nos servidores da sefaz, ele teve de trocar de certificado gratuitamente, não sei se é o mesmo caso que o seu.
Alguns Smart tem opção de incluir os certificados do truststore…
mas se no navegador tbm está dando isso, sugiro entrar em contato com quem emitiu o certificado ou com o proprio pessoal da sefaz…
quando vão dar suporte sobre esses certificados eles sempre querem testar no navegador, e se não está funfando no navegador eles te dão atenção …
abraço
Olá…
Eu consegui criar a comunicação com o webservice com base no exemplo do f-schmitt usando WSDL2Java.
Eu tenho o certificado digital de meu cliente comigo, é o do tipo A3 (SmartCard) e estou enfrentando problema em conectar no webservice do Rio Grande do Sul. Ocorre erro 403.7, que é certificado digital do cliente não enviado para o servidor. Aí que acho estranho, pois se conectar no ws do Mato Grosso do Sul funciona corretamente. o keystore e truststore estao setado corretamente, tanto que se (a nivel de testes) colocar outro dados da outro erro referente a falta ou erro nos certificados. Fiz um teste conectando no Firefox e no IE e ocorre o mesmo erro.f-schmitt vc esta conseguindo acessar normalmente o ws do RS? Meu cliente já aparece como liberado no site da secretaria da fazendo de SC, mas tenho q fazer algum outro procedimento de liberacao?
fico no aguardo…
flw
para montar o meu xml estou usando Xstream, que tem (quase) a mesma função do JAXB, ele faz marshall e unmarshall no xml serializando objetos
pelo q entendi o JABX monta esses objetos a partir do próprio schema, mas ainda nao usei…
voce esta tendo um xml formato por outro sistema?
so quer transmitir e tratar o retorno?
Vc acha viável a utilização do JAXB? Estou lendo alguma coisa a respeito e não me parece complexo de ser utilizado…Alguém já utilizou?
Exatamente. O XML já está sendo gerado por outro sistema. Tudo o que preciso é enviar e tratar o resultado.
Obrigado!
Ola a todos…
então como todos, tb estou fazendo…ou tentando fazer a NF-e…
eu criei o arquivo XML… cheguei a assinar… mas qdo vou validar no validador do SEFAZ-RS da a seguinte mensagem:
Certificado ‘CN=MILI_NFe, O=MILI, L=Curitiba, S=PR, C=BR’ não possui finalidade de Assinatura Digital e/ou Não-Repúdio
agora estou na dúvida…se é a minha assinatura que não esta correta ou o meu certificado…
alguém tem umas dicas ai para fazer a assinatura digital???
abraco…
Olá a todos!
Seu que o tópico está um pouco defasado, mas vi que inúmeras pessoas postaram e como, talvez tenham ficaram com um gostinho de que não se chegou a nenhuma conclusão.
Estava pensando em criar um modo de todos os desenvolvedores Java se comunicarem a respeito do assunto Nfe. De forma que cada um ajude ao outro no que é melhor. Pra isso preciso do apoio de vocês. Oque acham da idéia ?
para montar o meu xml estou usando Xstream, que tem (quase) a mesma função do JAXB, ele faz marshall e unmarshall no xml serializando objetos
pelo q entendi o JABX monta esses objetos a partir do próprio schema, mas ainda nao usei…voce esta tendo um xml formato por outro sistema?
so quer transmitir e tratar o retorno?Vc acha viável a utilização do JAXB? Estou lendo alguma coisa a respeito e não me parece complexo de ser utilizado…Alguém já utilizou?
Pena que as últimas versões dos schemas da receita tem erros grotescos…
Ola a todos…
então como todos, tb estou fazendo…ou tentando fazer a NF-e…eu criei o arquivo XML… cheguei a assinar… mas qdo vou validar no validador do SEFAZ-RS da a seguinte mensagem:
Certificado ‘CN=MILI_NFe, O=MILI, L=Curitiba, S=PR, C=BR’ não possui finalidade de Assinatura Digital e/ou Não-Repúdioagora estou na dúvida…se é a minha assinatura que não esta correta ou o meu certificado…
alguém tem umas dicas ai para fazer a assinatura digital???
abraco…
Seu certificado digital está autorizado no SEFAZ que vc tenta se conectar? Vc não gerou esse certificado via keytool não?
att.
Vc acha viável a utilização do JAXB? Estou lendo alguma coisa a respeito e não me parece complexo de ser utilizado…Alguém já utilizou?
Acho o JAXB até bem simples, mas como eu disse, os schemas da receita tem sérios problemas de semântica, digamos assim… Vc não vai conseguir gerar corretamente POJOS a partir de JAXB. Utilizei o JAXB aqui na empresa para o mesmo fim.
Ola a todos…
então como todos, tb estou fazendo…ou tentando fazer a NF-e…eu criei o arquivo XML… cheguei a assinar… mas qdo vou validar no validador do SEFAZ-RS da a seguinte mensagem:
Certificado ‘CN=MILI_NFe, O=MILI, L=Curitiba, S=PR, C=BR’ não possui finalidade de Assinatura Digital e/ou Não-Repúdioagora estou na dúvida…se é a minha assinatura que não esta correta ou o meu certificado…
alguém tem umas dicas ai para fazer a assinatura digital???
abraco…
olá! aparentemente você está utilizando um certificado que não é válido para NFe, ou não fez o TTD na SEFAZ
a CertiSign costuma vender certificados com funcionalidades “específicas”, esses dias um cliente comprou um A1 da CertiSign, pagou mais de R$ 500,00 e servia SOMENTE para NFe, enquanto o A1 dos correios custa R$ 130,00 e é COMPLETO…
abraço
Malz pela ‘ressurreição’, mas creio que era melhor que duplicar um tópico…
Alguém aí lida com a SEFAZ da Bahia?
Até o começo desta semana todo o processo era realizado normalmente, agora, nenhuma nota é enviada e uma exceção é lançada…
[color=red]Caused by: javax.xml.ws.soap.SOAPFaultException: System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: .
at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:171)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:94)
at com.sun.xml.internal.ws.client.dispatch.DispatchImpl$DispatchAsyncInvoker$1.onCompletion(DispatchImpl.java:415)
at com.sun.xml.internal.ws.client.Stub$1.onCompletion(Stub.java:290)
at com.sun.xml.internal.ws.api.pipe.Fiber.completionCheck(Fiber.java:457)
at com.sun.xml.internal.ws.api.pipe.Fiber.run(Fiber.java:375)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908 )
at java.lang.Thread.run(Thread.java:619)[/color]
Entrando em contato com a própria, tudo que o suporte foi capaz de dizer é que o problema estava na aplicação (nossa ¬¬’) não indicando qualquer nova adequação a ser realizada.
Como o projeto foi um presente de grego que tive de assumir, não domino a parte de soap e não tenho grande noção de por onde buscar a solução.
Toda e qualquer idéia é bem vinda 
bom dia!
no webservice são enviados 2 parametros…
o cabeçalho e o documento, da uma conferida no seu cabeçalho, pode estar faltando algum detalhe
e tbm testa a sua comunicação no ambiente nacional
abraço
SCAN? Bem, este funciona…
O interessante é que trabalhamos com MT, MS e GO (além de BA), e todos eles enviam perfeitamente =/
Você se refere ao nfeCabecMsg e nfeDadosMsg ?
O que notei de ‘novo’ no dados (validando com o aplicatico da SEFAS/RS) foi esta pequena falha que não ocorria antes: The element ‘NFe’ in namespace ‘http://www.portalfiscal.inf.br/nfe’ has incomplete content. List of possible elements expected: ‘http://www.w3.org/2000/09/xmldsig#:Signature’.
Não consegui validar o cabeçalho, o site parece estar fora do ar (mais essa…).
Descobri (google é meu pastor) que no jboss precisaria habilitar o soapaction com os métodos setSOAPActionURI(true) e setUseSOAPAction(true) (https://jira.jboss.org/jira/browse/JBWS-167;jsessionid=859AF8146FF1B9B2A259808FCF10A470?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel). Isso se faz necessário com o [b]SOAPMessage /b? Se sim, estou apanhando um bocado ao tentar faze-lo 
Pretendo validar o cabeçalho o quanto antes mas, enquanto a SEFAZ/RS não volta… Alguma outra idéia? 
Abraço f-schmitt, e valeu o retorno!
EDITED: Cabeçalho validado sem problemas.
Bom, primeiro sobre o WebService do RS estar fora, acho MUITO dificil. Afinal o RS trabalha como sefaz virtual dos outros estados.
Quando vc aponta pra Bahia por exemplo, ele nada mais e’ que um WS virtual do RS.
Um problema que ja ocorreu um varios, foi a versao de liberacao do XML. Tanto cabecMsg e nfeDados.
Verifique isso !
[ ]s,
boa cara!
quando eu estava fazendo o WS na “maneta” tbm passei por problemas em colocar o soapaction como true
mto estranho aceitar nos outros webservices e no da BA nao…
voce esta assinando e validando com os SCHEMA antes de enviar???
porque aquela msg ali do validador RS é de quando o xml nao esta assinado…
Por garantia eu valido antes e depois.
@mateusprado
Quando me referi ao SEFAZ/RS, era o serviço de validação que não respondia (via browser) 
Liberação do xml que você diz são os Schemas? Eu estou usando a mesma versão que a Sefaz/BA (segundo seu próprio suporte), o PL_005C =/
@f-schmitt
Eu assino e valido antes do envio, sempre…
Como você setou o SOAPAction como true? Ainda não consegui (ou consegui e isto não resolveu) -.-"
Bem, devido a um pequeno problema com nosso servidor, não tive a oportunidade de testar nenhuma solução hoje, mas, depois de uma pequena introdução ao SOAP (http://oreilly.com/catalog/javawsian/chapter/ch03.pdf) descobri (ou ao menos suponho que o fiz) que quase acertei a solução na primeira alternativa 
[color=red]Server did not recognize the value of HTTP Header SOAPAction: [/color]
A primeira tentativa foi, forçadamente, incluir um valor de SOAPAction com o request.getMimeHeaders( ).addHeader(“SOAPAction”, value); (onde request é uma SOAPMessage), mas o newbie não sabia que isso apenas criaria uma nova header…
Descobri com a leitura o [b]setHeader /b, que sobrescreveria a header atual…
E, o mais importante: saveChanges()! O ‘commit’ do SOAP 
Isso claro, supondo que o erro esteja no SOAP (já que isso funcionava antes). Mas ao menos já algo por onde começar!
Funcionando ou não, amanhã posto o resultado aqui (se o servidor nos permitir).
Bem, o SOAPAction foi setado, mas, ao contrário do esperado, isso não mudou nada…
Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
SOAPAction: "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao/nfeRecepcaoLote"
Content-Type: text/xml; charset=utf-8
Content-Length: 20810
What’s wrong? :evil:
Olá Prudencio,
voce pode usar um gerador de wsdl, assim nao fica quebrando a cabeça
tem o do axis o wsdl2java, mto bom…
abraço
Quando a exceção é lançada, o valor da SOAPAction retornado é diferente do valor setado por mim (aquele que recupero via MimeHeaders)… wtf?
Há um segundo webservice por detrás do envio? Help!
@
Uma migração destas não seria um pouco demorada?
Não me importo em estudar, mas o programa já está em produção à algum tempo e o ‘Cliente Bahiano’ está parado =/
Solved!
O problema estava no BindingProvider!
Bacana que só a Bahia me exigiu o SOAPAction… Mas já valeu pelo aprendizado 
Vlw a ajuda!
Boa tarde pessoal !
Gostaria de saber qual a melhor maneira de gerar o arquivo xml de envio ao cliente, o procNFe?
Se alguem pudesse postar um exemplo de implementação ficaria muito grato.
Obrigado desde ja.
Cara eu uso o Xstream eh mto bom!!!! Tem exemploes tem simples no site!!!
[url]http://xstream.codehaus.org/[/url]
public class Carro {
public String marca = "";
public String modelo = "";
public int potencia = 0;
public double peso = 0;
public transient int kmTotal = 0; //transient faz com que este atributo naum seja jogado para XML!
public int getKmTotal() {
return kmTotal;
}
public void setKmTotal(int kmTotal) {
this.kmTotal = kmTotal;
}
public Carro(){
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public int getPotencia() {
return potencia;
}
public void setPotencia(int potencia) {
this.potencia = potencia;
}
public double getPeso() {
return peso;
}
public void setPeso(double peso) {
this.peso = peso;
}
}
Rodando Exemplo:
import com.thoughtworks.xstream.XStream;
public class rodar {
public static void main(String[] args) {
Carro carro = new Carro();
carro.setMarca("Fiat");
carro.setModelo("Marea");
carro.setPeso(1310);
carro.setPotencia(142);
carro.setKmTotal(70000);
XStream x = new XStream();
String xml = x.toXML(carro);
System.out.println("Alias normal: \n"+xml); //sem nada de modificacoes
x.alias("Exemplo", Carro.class);
xml = x.toXML(carro);
System.out.println("\nAlias alterado: \n"+xml); //Alias do XML alterado
XStream xx = new XStream();
xx.alias("Exemplo", Carro.class); //Isso soh precisa caso voce naum tenho o nome do pacote e classe certo no alias!!
Carro marea = (Carro) xx.fromXML(xml);
System.out.println("\n\n Peso: "+marea.getPeso());
}
}
Resultado no Console:
Alias normal:
<xml.Carro>
<marca>Fiat</marca>
<modelo>Marea</modelo>
<potencia>142</potencia>
<peso>1310.0</peso>
</xml.Carro>
Alias alterado:
<Exemplo>
<marca>Fiat</marca>
<modelo>Marea</modelo>
<potencia>142</potencia>
<peso>1310.0</peso>
</Exemplo>
Peso: 1310.0
Como o Dante falou, o Xstream da conta do recado e o layout do compartilhamento está descrito na página 77 do manual de integração, abraço!
Galera obrigado pela ajuda.
estou fazendo testes no ambiente de homologação ainda, ai eu ate ja tinha conseguido gerar o nfeProc.
ai eu tentei abrir um deste arquivos nfeProc no software visualizador de nfe fornecido pela secretaria da fazenda,
mas nao ta abrindo nao… da erro de assinatura…
Sera que é pq eu to em homologação ainda? nao sei?
De qualquer forma muito obrigado pela ajuda de vcs.
Abraços
acredito que este software esteja esperando outro layout, ou o do lote, ou proprio nfe, se é o visualizador RS, é a própriam NFe
Boa Tarde a todos,
Já temos o emissor NFe funcionando em nossos clientes. Só que surgiu um novo cliente em SC e um novo problema veio junto: para o certificado da maioria dos cliente o que fazemos é gerar um .jks com o certificado Raiz da Sefaz usando o Keytool.exe e depois adicionamos o certificado cliente com o pkcs12import.bat. Até ai para MT e SP tudo blz. Com SC não está funcionando dessa forma. Já adicionamos toda a cadeia de certificados da Sefaz mas não conseguimos comunicar. Lembrando que SC usa o ambiente Sefaz Virtual RS.
Alguém já passou por essa situação sabe informar se é necessário algum certificado a mais para o funcionamento no ambiente virtual do RS?
aqui uso o virtual RS, e baixo os certificados com uma classe q adaptei, acho que tem em algum post aqui do GUJ, mas nao percebi nada de diferente dos outros sefaz…
abraço
aqui uso o virtual RS, e baixo os certificados com uma classe q adaptei, acho que tem em algum post aqui do GUJ, mas nao percebi nada de diferente dos outros sefaz…abraço
Mas vc usa o qual ou quais certificado junto com o do cliente? Estamos tentado com o AC SERPRO SRF v1 (BA, RS e SEFAZ Virtual RS (AC, AL, AM, AP, PB, RJ, RR, SC, SE e TO)).
O erro que está dando é o The request failed with HTTP status 403: Forbidden. O emissor deve conseguir um certificado digital autêntico para prosseguir.
normalmente esse erro é quando não é setado ou o certificado do emitente (e-cnpj nao pode ser certificado de teste) ou os certificados do servidor
no meu caso aqui, eu baixo os certificados do servidor num jssecacerts e antes de conectar no webservice, seto o truststore com esse jssecacerts
normalmente esse erro é quando não é setado ou o certificado do emitente (e-cnpj nao pode ser certificado de teste) ou os certificados do servidorno meu caso aqui, eu baixo os certificados do servidor num jssecacerts e antes de conectar no webservice, seto o truststore com esse jssecacerts
Putz… aki to fazendo desse jeito e não vai. O certificado do cliente é próprio pra NFE, e ta dentro do prazo de vencimento. O que poderá ser então?
[/quote]
Putz… aki to fazendo desse jeito e não vai. O certificado do cliente é próprio pra NFE, e ta dentro do prazo de vencimento. O que poderá ser então?[/quote]
a empresa em questão ja esta dacastrada na sef para acessar os webservices da nfe? aqui chamamdos de TTD ?
Valeu meu amigo! Acho que o problema é esse mesmo, pois a empresa num fez nada ainda na sefaz. Nem desconfiei disso pq geralmente quando não se tinha cadastro na sefaz o erro era outro e não esse.
Valeu pela ajuda e até +.
Valeu meu amigo! Acho que o problema é esse mesmo, pois a empresa num fez nada ainda na sefaz. Nem desconfiei disso pq geralmente quando não se tinha cadastro na sefaz o erro era outro e não esse.
Valeu pela ajuda e até +.
Alguem sabe me dizer quais certificados tenho que adicionar no .jks junto com o do cliente para poder fazer a comunicação com a Sefaz Virtual RS?
Baixei a cadeia de certificado do endereço https://nfe.sefazvirtual.rs.gov.br/, adicionei um a um no .jks + o do cliente, mas mesmo assim não consigo comunicar, dá sempre o mesmo erro (Transport error: 403 Error: Forbidden).
Se alguem puder ajuda agradeço.
ou o jks não está correto ou o seu e-cnpj, certifique-se que seu e-cnpj está autorizado junto a sefaz
Pior que está autorizado sim, tanto q o cliente ta usando o emissor da Sefaz em produção.
Quais certificados vc inclui no jks?
segue anexo um certificado a senha dele é changeit
são os de RS…
sempre antes de conectar em algum webservice eu seto este trustore…
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??
valeo
abraco
Galera estou com um pequeno problema qdo qro consultar um nota enviada para o sefaz
estou utilizando este codigo aqui :
String nfeCabecMsg = “<?xml version="1.0" encoding="UTF-8"?>”
+ "<cabecMsg xmlns=“http://www.portalfiscal.inf.br/nfe” "
+ “versao=“1.02”>” + “<versaoDados>1.07</versaoDados>”
+ “</cabecMsg>”;
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<enviNFe " + " versao=\"1.07\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>2</tpAmb>" + "<xServ>CONSULTAR</xServ>"
+ "<chNFe>numero da nota</chNFe>"
+ "</conSitNFe>";
o retorno do webservice do sefaz é
<?xml version=“1.0” encoding=“UTF-8”?><retConsSitNFe xmlns=“http://www.portalfiscal.inf.br/nfe” versao=“1.07”><infProt><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_005c</verAplic><cStat>215</cStat><xMotivo>Rejeição: Falha no schema XML</xMotivo><cUF>35</cUF></infProt></retConsSitNFe>
Falha no schema xml
alguem sabe dizer como mandar essa consulta corretamente ?
fiz o de consulta de Serviço e nao da esse erro .
seu xml está errado…
começa com
e termina com
:shock:
recomendo usar um parser…
[]
oples desculpe
mais o q eu postei logo acima soh colei errado na hr mais os teste foram feito assim
String nfeDadosMsg = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>”
+ "<conSitNFe " + " versao=“1.07"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe">"
+ “2” + “CONSULTAR”
+ " numero da chave "
+ “”;
e retorna o msm erro , caso eu coloque o valor da string
exemplo
String nfeDadosMsg = " qualquer coisa " ;
o retorno do webservice continua sendo
<?xml version="1.0" encoding="UTF-8"?>2SP_NFE_PL_005c215Rejeição: Falha no schema XML35recomendo usar um parser…
[]
coloca seu xml nesse validador para ver oq vai dar…
http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
bom, acho que isso vai lhe ajudar… 
ae galera vlw msm heim
mto bom esse validador…
o correto era e não essa porcaria de manual do contribuite tem q rasgar ta com as tag td errada
erro no manual é mato!
saiu uma nova versao do manual de integração ha pouco tempo e nem isso foi corrigido,
eles deveriam considerar os emails que mandamos…
:evil::twisted: :twisted: :twisted: :twisted: :evil: :evil:
ja mandei 2 email para lah e até hj nunca recebi nem aqueles email automaticos de estamos verificando . uma pilantragem
mais aproveitando o assunto no “manuel” de integração o Schema de nfeRecepcaoLote
estou montando da seguinte maneira
String nfeDadosMsg = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>”
+ "<enviNFe " + " versao=“1.07"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe">"
+ “000000090609732” + “” + str + “”
+ “”;
aonde - str é uma string aonde está o conteudo da minha NF-e assinada só que nao ficou mto claro como devo colocar as notas nessa tag , do jeito q fiz ate me retorna
Lote recebido com sucesso
mais vi q nao foi enviado realmente
cara… ai tem uns arquivos de exemplos…
mas sei se estão todos com layout atualizados… mas ajuda…
http://www.sefaz.rs.gov.br/Site/MontaMenu.aspx?MenuAlias=m_dwn_nfe_arq
Já tinha pego como exemplos esses arquivos
o meu xml ja está assinado e da td Ok na validação mais msm assim nao consigo enviar o arquivo
String nfeDadosMsg = “<?xml version="1.0" encoding="UTF-8"?>”
+ "<enviNFe " + " versao=“1.10"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe">"
+ “<idLote>000000120609347</idLote>” + str
+ “</enviNFe>”;
depois da tag </idLote> a variavel str tem todo o conteudo do meu xml , continua retornando Lote recebido com sucesso e qdo consulto essa NF nao consigo encontrar essa nota
alguem sabe se esse metodo funciona ou devo utilizar de outra maneira ?
Olá pessoal.
Já estudei todas as nove páginas desta thread e ainda não consegui fazer o envio de um arquivo xml.
Acredito que algumas pessoas tenham conseguido, e outras devem estar enfrentando o mesmo problema que eu.
Bem, não estou certo se meu problema é com o certificado digital ou com a assinatura digital. O fato é que não consigo nem mesmo visualizar o WSDL pelo browser (utilizo Linux/Firefox). Já tentei inclusive em máquinas com Windows e IE mas não rolou.
Encontrei um programa feito pelo pessoal do RS e nele existem dois certificados válidos (acredito eu), mas mesmo utilizando-os não consigo visualizar o WSDL via browser. Mesmo com os certificados instalados corretamente.
Para quem tiver interesse em utilizar os certificados, pode baixa-los por aqui: http://www.sefaz.rs.gov.br/Site/MontaMenu.aspx?MenuAlias=m_dwn_nfe_assDig. Após instalar, procure por dois certificados na pasta Certificados.
Pelo que consegui assimilar, preciso apenas definir algumas propriedades do sistema com as chaves corretas. E depois abrir o canal de comunicação para transferir os arquivos. É isso?
Por favor, me ajudem a compilar um pequeno manual com todos estes dados para que eu e, obviamente, outras pessoas possam utilizar.
- É necessário “instalar” a cadeia de certificados da Raiz da SEFAZ no KeyStore (local onde ficam armazenados os certificados). Onde para isto sugere-se utilizar o programa InstallCert.java construído por Andreas Sterbenz e explicado no post No more ‘unable to find valid certification path to requested target’.
1.1. Sua utilização, basicamente, concentra-se em executar o programa passando como parâmetro o URL do servidor. Exemplo:
[i]java InstallCert nfe.fazenda.sp.gov.br[/i]
[list]O programa exibirá os certificados encontrados e você deverá decidir qual adicionar simplesmente pressionando o número de referência do certificado, neste caso específico da nfe.fazenda.sp.gov.br aparecem 3.[/list]
[list]Um arquivo com nome jssecacerts será criado, e este deverá ser utilizado como a cadeia dos certificados raiz.[/list]
1.2. Alternativamente pode-se utilizar a chave pública e cadeia de certificado disponibilizado pela SEFAZ/SP:
[list]Certificados Digitais dos Web Services da SEFAZ/SP (chave pública e cadeia de certificado)[/list]
- Você precisa comprar um certificado e-CNPJ ou e-NFe credenciado por uma das certificadoras indicadas pelo portal da NF-e, como por exemplo o SERASA.
2.1. Como alternativa pode-se utilizar um certificado sem validade jurídica para testes disponibilizado pela SEFAZ/RS:
[list]Assinatura Digital (AssinadorRS) (requer instalação do programa para extrair os certificados na pasta Certificados)[/list]
2.2. Como mais uma alternativa, anexei à este post o arquivo certificados_nfe.zip que contém os mesmos. Os arquivos são Associacao.pfx (senha associacao) e Condominio.pfx (senha condominio).
- Vamos ao Java!! O primeiro passo é definir as propriedades do ambiente com os certificados digitais:
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts"); // aquele gerado no passo 1.1
System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); // esta senha está correta?
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "Associacao.pfx"); // o arquivo com o certificado do emitente
System.setProperty("javax.net.ssl.keyStorePassword", "associacao"); // a senha do arquivo
-
Fazer a assinatura digital do arquivo XML já montado.
[list]Uma boa referencia a respeito do tema pode ser encontrada em Programming With the Java XML Digital Signature API[/list]
[list]Outra referência a respeito, e com código Assinador.java pode ser lida nesta thread http://www.guj.com.br/posts/list/52035.java#576483.[/list] -
Realizar a transmissão via web service.
[list]Uma vez com o arquivo montado, bastará abrir o canal de comunicação pelo URL desejado e submeter o arquivo XML. Este trabalho pode ser feito por exemplo com o HttpURLConnection[/list]
------------- POSIÇÃO ATÉ O MOMENTO ------------
Bem pessoal, por enquanto foi isso que consegui compilar a respeito do tema, mas confesso que não consegui realizar a transmissão, nem consulta de arquivos e chaves.
Se alguém puder ajudar a melhorar este manual até que consigamos faze-lo funcionar, seria uma mão-na-roda para todos.
Um abraço e até mais!
henrique.
NOSSA! :shock: hahaha
seguinte, pra começar: os seus certificados não são válidos, eles não vão acessar os wsld da receita, nenhum deles…
NOSSA! :shock: hahahaseguinte, pra começar: os seus certificados não são válidos, eles não vão acessar os wsld da receita, nenhum deles…
bom, já é alguma coisa. :!:
Você sabe me dizer pq não são válidos? No IE eles estão marcados com validade até 2010.
Existe alguma forma para que eu consiga solucionar este PRIMEIRO obstáculo? A única solução é mesmo adquirindo um e-CNPJ? Veja, não sou contribuinte do ICMS, posso mesmo assim ter um e-CNPJ válido para acessar os WSDL? Foi assim q vc conseguiu?
grato.
sim, mesmo sendo com validade
para acessar o wsdl da fazenda, é necessário pedir a autorizaçao do e-cnpj junto a sefaz do seu estado, ai sim voce conseguirar acessar
não é somente ter um e-cnpj
Ok, entendi! Já é um informação valiosa para atualizar o manual.
Agora para ficar mais claro:
O certificado que você utiliza é de algum cliente seu, ou você fez todo o processo de autorização junto à SEFAZ?
Na verdade a pergunta é: qualquer empresa, seja ela emitente ou não de nota fiscal modelo 1 ou 1A pode adquirir este certificado com as devidas autorizações?
Pelo que me informei é possível por exemplo conseguir o e-CNPJ no Correios. Certo?
sim, o dos correios eh um dos mais baratos e acessiveis…
voce pode fazer um e-cnpj de sua propria empresa e autorizar para acessar no ambiente de homologaçao…
Legal, já vi.
R$ 130,00 para o A1.
Bom, pelo que calculei levará umas 72hrs para concluir todo o processo. A terminar volto com mais detalhes e atualizamos o manual.
valeu !!
Para informar, você tinha razão.
Providenciei a compra do certificado digital para a empresa e já consigo visualizar os WSDL.
Agora vou retomar os testes e vê onde mais pode dar errado.
Pronto, funcionando.
Consegui, através do Netbeans, realizar a consulta do status do serviço.
Infelizmente [ainda] não consegui utilizar o HttpUrlConnection para fazer a comunicação crua. Tive que utilizar os recursos de importação do WSDL automático do Netbeans. Mas enfim, pelo menos funcionou.
Por quê diabos eu quero fazer a conexão crua? Explico: pelo que notei cada UF tem um WSDL próprio, e por isto vou ter que fazer o trabalho de importação do wsdl para cada um deles. O que começa a dispersar muito o trabalho.
Alguém sabe se é possível trabalhar simplesmente com a Sefaz Virtual? Pelo que pude notar ela é uma unificadora. Ou não?! Vou mesmo ter que tratar o WSDL de cada SEFAZ/UF ?
Opa… eae povo…
Nossa… gastei 1 horinha lendo os post… ^^
mas valeu… to entendo bem mais sobre a NFe… hehe
Bom… eu tb entrei nessa… vou começar agora um projeto com a NFe… e o meu primeiro trabalho eh gerar o XML… queria saber se estou começando certo:
<a href="http://1.To">1.To</a> procurando o plugin para o eclipse que converta os WSDL para Java e vice-versa;
2.Ja passei para a emrpesa aki o ste do correio com o valor dos certificados;
3.Estou procurando os modelos XML para gerar;
Minha dúvida… no próprio site da sefaz acho os WSDL para converter ?? Faz tempo que não mexo com XML e to meio perdido por onde começar… =/
Vlw !!!
No eclipse eu não conheço! Mas há um post no GUJ a respeito. Lembro-me de ter lido sobre isto. É algo como File -> New -> Others então selecionar WebService Client e fazer o import do WSDL.
Para baixar o WSDL da SEFAZ/SP vc pode acessar o link:
http://www.fazenda.sp.gov.br/nfe/url_webservices/url_webservices.asp
Procure por: WSDL dos Web Services da SEFAZ/SP (Descrição dos Serviços)
Para contribuir um pouco e não ficar apenas sugando informação, segue uma dica:
Quem utiliza Netbeans e deseja fazer o download do WSDL direto pelo URL (na abinha Services -> Web Services, botão direito Add Web Service) deve adicionar nas propriedades da VM as variáveis com as respectivas definições dos certificados.
No arquivo netbeans.conf (que fica dentro do diretório etc da instalação do NB) adicione as seguintes informações na propriedade netbeans_default_options:
-J-Djava.protocol.handler.pkgs=“com.sun.net.ssl.internal.www.protocol”
-J-Djavax.net.ssl.trustStoreType=“JKS”
-J-Djavax.net.ssl.trustStore="/caminho/raiz/certificados/jssecacerts"
-J-Djavax.net.ssl.trustStorePassword=“changeit”
-J-Djavax.net.ssl.keyStoreType=“PKCS12”
-J-Djavax.net.ssl.keyStore="/caminho/seu/certificado/cert.pfx"
-J-Djavax.net.ssl.keyStorePassword=“sua_senha”
tudo isso em uma unica linha.
Desta maneira o NB poderá acessar a URL dos WSDL utilizando a autenticação mútua exigida por este webservice.
abraços.
No eclipse eu não conheço! Mas há um post no GUJ a respeito. Lembro-me de ter lido sobre isto. É algo como File -> New -> Others então selecionar WebService Client e fazer o import do WSDL.Para baixar o WSDL da SEFAZ/SP vc pode acessar o link:
http://www.fazenda.sp.gov.br/nfe/url_webservices/url_webservices.asp
Procure por: WSDL dos Web Services da SEFAZ/SP (Descrição dos Serviços)
Blza… peguei os arquivos WSDL:
.cadconsultacadastro.wsdl
.NfeCancelamento.wsdl
.NfeConsulta.wsdl
.NfeInutilizacao.wsdl
.NfeRecepcao.wsdl
.NfeRetRecepcao.wsdl
.NfeStatusServico.wsdl
Imagino que o proxima passo seja criar as classes java com base nesses WSDL para fazer as chamadas. E para isso to vendo como usar o Axis2 no eclipse.
Mas estou preocupado com uma etapa antes ainda… na forma como gerar o XML… devo usar o XTream mesmo para gerar desde o zero o XML me baseando no documento Manual_Integracao_Contribuinte_v_2.02a_2008_06_16.pdf ou a SEFAZ disponibiliza uma biblioteca com os elementos (TAG) do XML ??
Bom… andei lendo mais e encontrei alguns documentos e tb os arquivos XSD para SP.
http://www.fazenda.sp.gov.br/nfe/downloads/arquivos_vigentes.asp
Baixei os XSD e tb os manuais… so tomem cuidado com as compatibilidades entre as versões dos arquivos, coreções e tudo mais…
Ainda estou lendo como começar a montar os XML… ou mesmo exemplos de XML ja montados…
…
Você quer os schemas XSD?
Aqui vc encontra a relação mais atualizada:
Opa… vlw “10pregos”
Ja baixei os XSD e tb peguei a documentação atual da SEFAZ…
No momento estou lendo o manual do contribuiente e procurando por exemplos de XML…
Na duvida ja baixei as bibliotecas do XStream e ja fiz um projeto de teste para criar o primeiro XML de exemplo…
Se alguem tiver um exemplo de XML ou mesmo falar como que gerou… eu agradeço… não sei se devo investir no XStream mesmo ou procurar por algo pronto no site da SEFAZ…
Mas vou descobrir… claro que so depois do jogo ^^
Fui !!
Pior que está autorizado sim, tanto q o cliente ta usando o emissor da Sefaz em produção.
Quais certificados vc inclui no jks?
Olá pessoal…
Eu não estou exatamente desenvolvendo um aplicativo, estou utilizando um que já está pronto. Porém estou tendo exatamente este problema. Fiz até um programinha Java para testar os Web Services e ele funciona bem com praticamente todos os estados, menos com BA e RS (e VRS). E o problema que eu tenho é exatamente este.
Xakkal, você já conseguiu alguma coisa sobre o assunto?
Muito obrigado…
cara… vai ter q ser para cada uf… mas verifique antes de sair criando um monte de ws… pq para alguns ws… basta apenas alterar a url do servidor da sefa… entende??
no Pr ja não funciona isso muito bem… pq tem o próprio e ainda é um pouco diferente as classes…
mas pelo que testei o SVRS é igual ao SCAN…
Alguém sabe se é possível trabalhar simplesmente com a Sefaz Virtual? Pelo que pude notar ela é uma unificadora. Ou não?! Vou mesmo ter que tratar o WSDL de cada SEFAZ/UF ?
cara… vai ter q ser para cada uf… mas verifique antes de sair criando um monte de ws… pq para alguns ws… basta apenas alterar a url do servidor da sefa… entende??
no Pr ja não funciona isso muito bem… pq tem o próprio e ainda é um pouco diferente as classes…
mas pelo que testei o SVRS é igual ao SCAN…
Ok, valeu a dica !!
Antes da sua resposta eu havia atestado isto. E é fato! Não funcionam da mesma maneira. Exemplo: MG, a implementação é SOAP 1.1, e não 1.2 como “orienta” o manual de integração.
Desabafo: Que p#$@ sacanagem, não?! Um dos grandes problemas do nosso país é ser dividido em vários outros países ao invés de Estados. É a casa da mãe joana, cada um faz o que quer e o que bem entende.
henrique.
é realmente concordo
o fato de nosso país ser grande também ajuda com isso
completando, ja usei oos wsld de AM, RS e SP, totos foram compativeis com minha aplicação…
alguem sabe me dizer se o ambiente de homologação do sefaz de sp tem prazo para utilização ?
fiz as aplicações do webservices funcionou td ok , tanto envio, consulta
mais desde sexta passada está dando erro e nao foi alterado nda
fui verificar no site e o certificado dos webservices que eles disponibiliza o de homologação a validade venceu dia 12/06 , estranho q até dia 18 eu usei normalmente qdo rodo a aplicação da este erro aqui
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
soh para entender melhor a parte do codigo q me retorna este erro eh
try
{
ConsultaStatus t = new ConsultaStatus();
t.nfeServi(certificado, senha, cod_uf);
System.out.println(“Serviço em Operacao”);
}
catch(Exception e)
{
System.out.println(“Erro ao acessar o Serviço \n\n” + e.toString());
}
Atualize a cadeia de certificado Raiz.
qual seria essa cadeia de certificado Raiz
os certificados disponiveis no sefaz-sp ja instalei os que estao disponivel
Veja se este post ajuda a resolver o problema: Falha na Conexão - Ambiente de Homologação - SEFAZ/SP - solucionado.
tive uns problemas parecidos usando certificado A3 smartcard, era somente importar a cadeia de certificados…
https://ccd.serpro.gov.br/correios/funcoes/cadeia.html
tbm baixo os certificados do servidor e aplico no ambiente sempre que vou acessar um wsdl
resolvi o problema instalando o certificado ac_certisign_multipla_v3.p7b
e usando o este comando aqui
$JAVA_HOME/bin/keytool -import -alias ACRAIZ -keystore
$JAVA_HOME/jre/lib/security/cacerts -trustcacerts -file ACraiz.cer
soh assim voltou a funcionar a bagaça
algum de vcs consegui fazer isso em ambiente linux ? mais precisamente em um servidor linux ?
Ola a todos, sou novo no GUJ, estou desenvolvendo a NFe e estou com um dificuldade na hora de gerar o lote, li todo o manual e pelo que entendi nos padrões .xsd para envio dos xml, gero a NFe, depois gero o lote (EnvNfe), porém não estou conseguindo gerar o lote, esta dando um erro.
Gero a NFe com base nos .java que gero com o nfe_v1.10.xsd e o lote uso os java do enviNFe_v1.10.xsd.
Porém ambos tem classes com o mesmo nome.
Estou usando o JAXB para gerar os xml.
Gero a NFe dessa maneira
...
JAXBContext context = JAXBContext.newInstance("com.tc.nfe.vo.nfe");
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("C:\\Users\\daniel\\Desktop\\Work\\SafeTech\\PL_005c\\nfe_v1.10.xsd"));
Marshaller marsh = context.createMarshaller();
marsh.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true));
JAXBElement<TNFe> eTnfe = new ObjectFactory().createNFe(TNFe);
marsh.marshal(eTnfe, new FileOutputStream("C:\\Temp\\baista.xml"));
e ele me gera os xmls de cada uma das notas…
Mas ai quando vou gerar o lote ocorre um erro pois os ObjectFactory gerado pelos dois xsd que citei antes são diferentes.
Estou me basiando com um código que encontrei aqui no GUJ para montar o lote
try {
JAXBContext context = JAXBContext.newInstance("com.tc.nfe.vo");
Unmarshaller unmarshaller = context.createUnmarshaller();
TEnviNFe t = new TEnviNFe();
t.setIdLote("1234");
t.setVersao("32456786");
JAXBElement<TNFe> element = (JAXBElement<TNFe>) unmarshaller.unmarshal(new File("minha nfe"));
t.getNFe().add(element.getValue());
Marshaller marshaller = context.createMarshaller();
JAXBElement<TEnviNFe> eTnfe = ( new ObjectFactory()).createEnviNFe();
marshaller.marshal(eTnfe, new FileOutputStream( new File("lote de destino")));
} catch (JAXBException jaxbe){
jaxbe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Eis o problema, se uso o ObjectFactory do nfe_v1.10.xsd não tenho o metodo createEnviNFe(TEnviNFe) e se uso o ObjectFactory do enviNFe_v1.10.xsd ai não tenho o metodo createNFe(TNFe); E se para gerar a nota uso o ObjectFactory do nfe_v1.10.xsd e para gerar o lote uso o ObjectFactory do enviNFe_v1.10.xsd ai ocorre um erro do JAXB na hora de montar o lote dizendo que esperava elemento do tipo TEnviNFe mas encontrou do tipo TNFe.
Até consigo gerar o lote customizando o ObjectFactory do nfe_v1.10.xsd. Se adiciono o codigo abaixo funciona, mas nao acredito que seja a forma correta de ser feito.
private final static QName _EnviNFe_QNAME = new QName("http://www.portalfiscal.inf.br/nfe", "enviNFe");
...
...
...
/**
* Create an instance of {@link JAXBElement }{@code <}{@link TEnviNFe }{@code >}}
*
*/
@XmlElementDecl(namespace = "http://www.portalfiscal.inf.br/nfe", name = "enviNFe")
public JAXBElement<TEnviNFe> createEnviNFe(TEnviNFe value) {
return new JAXBElement<TEnviNFe>(_EnviNFe_QNAME, TEnviNFe.class, null, value);
}
Estou a dois dias com esse problema… o que estou fazendo de errado? Estou usando o o plugin do JAXB 2.1 do eclipse para transformar os .xsd em .java. Quam já fez essa montagem dos lotes, como que procederam para obter os .java dos xsd?
Obrigado
Pessoal, preciso de um help
estou usando o JAXB pra gerra meu xml dessa forma:
public class RunnerNFEConsulta {
public static void main(String[] args) throws Exception{
NFEConsultaServico root = new NFEConsultaServico();
root.setIdentificacao(2);
root.setCodigoConsultada(22);
root.setServicoSolicitado("STATUS");
toXML(root);
}
public static void toXML(NFEConsultaServico root)
throws JAXBException {
JAXBContext ctx = JAXBContext.newInstance(NFEConsultaServico.class);
Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//marshaller.marshal(root, System.out);
marshaller.marshal(root, new File("src/nfe/resources/nfeStatusServicoNF.xml"));
}
}
como faço pra fazer a validação usando o JAXB, ja baixei os Schemas preciso usar o consStatServ_v99.99.xsd e o retorno retConsStatServ_v99.99.xsd
como posso fazer isso ? abaixo a classe que contem o corpo do meu xml e ele prórpio, abraços, precisod e ajuda não estou conseguindo fazer.
@XmlRootElement(name = "consStatServ")
@XmlAccessorType(XmlAccessType.FIELD)
public class NFEConsultaServico {
/**
* Versão do leiaute.
*/
@XmlAttribute
private final String versao;
@XmlAttribute
private final String xmlns;
/**
* Identificação do Ambiente:
* 1 â?? Produção / 2 - Homologação
*/
@XmlElement(name = "tpAmb")
private Integer identificacao;
/**
* Código da UF consultada.
*/
@XmlElement(name = "cUF")
private Integer codigoConsultada;
/**
* Serviço solicitado â??STATUSâ??.
*/
@XmlElement(name = "xServ")
private String servicoSolicitado;
public NFEConsultaServico() {
versao = "1.07";
xmlns = "http://www.portalfiscal.inf.br/nfe";
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07">
<tpAmb>2</tpAmb>
<cUF>22</cUF>
<xServ>STATUS</xServ>
</consStatServ>
Pessoal, preciso de um help estou usando o JAXB pra gerra meu xml dessa forma:public class RunnerNFEConsulta { public static void main(String[] args) throws Exception{ NFEConsultaServico root = new NFEConsultaServico(); root.setIdentificacao(2); root.setCodigoConsultada(22); root.setServicoSolicitado("STATUS"); toXML(root); } public static void toXML(NFEConsultaServico root) throws JAXBException { JAXBContext ctx = JAXBContext.newInstance(NFEConsultaServico.class); Marshaller marshaller = ctx.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //marshaller.marshal(root, System.out); marshaller.marshal(root, new File("src/nfe/resources/nfeStatusServicoNF.xml")); } }como faço pra fazer a validação usando o JAXB, ja baixei os Schemas preciso usar o consStatServ_v99.99.xsd e o retorno retConsStatServ_v99.99.xsd
como posso fazer isso ? abaixo a classe que contem o corpo do meu xml e ele prórpio, abraços, precisod e ajuda não estou conseguindo fazer.@XmlRootElement(name = "consStatServ") @XmlAccessorType(XmlAccessType.FIELD) public class NFEConsultaServico { /** * Versão do leiaute. */ @XmlAttribute private final String versao; @XmlAttribute private final String xmlns; /** * Identificação do Ambiente: * 1 â?? Produção / 2 - Homologação */ @XmlElement(name = "tpAmb") private Integer identificacao; /** * Código da UF consultada. */ @XmlElement(name = "cUF") private Integer codigoConsultada; /** * Serviço solicitado â??STATUSâ??. */ @XmlElement(name = "xServ") private String servicoSolicitado; public NFEConsultaServico() { versao = "1.07"; xmlns = "http://www.portalfiscal.inf.br/nfe"; }<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07"> <tpAmb>2</tpAmb> <cUF>22</cUF> <xServ>STATUS</xServ> </consStatServ>
Ninguem ?
por favor, preciso de ajuda.
Pena cara, sou verdinho em JAXB

mas se isso ajuda, os xsd da receita são meio zoados,
entao pode acontecer de seus objetos gerados pelo jaxb não condizerem com os que esta tentando fazer unmarshall
por isso fiz meus objetos na “maneta”
abraço
F-Schmitt,
Foi justamente isso q perguntei num outro tópico, sobre criar na mãozona ou não, pq eu estou começando
a desenvolver ao minha NFe em caráter de urgência, tava pensando em criar as classes na mão, daí fiquei
sabendo do recurso do JAXB, blz! acabei de conseguir, gerou as classes, só q n entendi como usá-las ainda kkk e
resolvi entrar aqui novamente (no forum) pra v se alguém comentava algo sobre, daí vi seu comentário da
possibilidade dele (jaxb) n gerar como o esperado.
Sinceramente, n sei o que fazer *rrr
Eu to quase pegando um modelo de NFe já gerado, e criar minhas classes me baseando nesse modelo.
Cara, não usei o jaxb na prática, mas em teoria ele pega o XSD gera as classes do modelo do xml. Essas classes você irá popular com os dados da Nf, por exemplo, depois fazer o marshall (geração) para o xml.
Acontece que os XSD não estão perfeitos e acabaram gerando um xml fora da especificação, então resolvi fazer essas classes na mão, para popular e depois fazer o marshall.
ex:
private class Teste{
private int num=200;
private String nome="Fernando";
gets...
sets...
}
iria gerar um xml assim:
<Teste>
<num>200</num>
<nome>Fernando</nome>
</Teste>
espero ter ajudado
Cara, não usei o jaxb na prática, mas em teoria ele pega o XSD gera as classes do modelo do xml. Essas classes você irá popular com os dados da Nf, por exemplo, depois fazer o marshall (geração) para o xml.Acontece que os XSD não estão perfeitos e acabaram gerando um xml fora da especificação, então resolvi fazer essas classes na mão, para popular e depois fazer o marshall.
cara eu usei JAXB agou estou assinando e não tive nenhum problema, mas fiz diferente, não pego os XSD e gero as classes do modelo xml, eu crio classes java beans mas uso as anotações do JAXB entao ele gera meu xml e depois e valido o xml gerado com o xsd é tipo classes anotadas do hibernate só que ao invés de eu criar tabelas no banco eu escrevo no xml. o que eu quero agora é assinar meu xml, abraços. veja o exemplo aqui nesse meu posthttp://www.guj.com.br/posts/list/135/72325.java
Caramba, os caras tb são fogo, passar os XSDs assim, eu n sabia disso, eu tava começando a implementá-las.
Mas pra fazer na mãozona vc usou o manual q eles disponibilizam então?
é bem conforme o aix falou, o negocio é montar os beans como que está no layout do manual de integração, depois assinar, validar e enviar para o webservice da sefaz
f-schmitt
Ainda vou tentar desenvolver, pelo menos a parte de gerar o XML q eu teria q fazer de qq jeito, mas
já tô apanhando desde o início, decidi fazer como vc sugeriu, através do manual… mas de cara,
na minha tag infNfe a “versao” está vindo antes do “Id” e n consegui inverter essa órdem, qdo penso
no que vem pela frente… *rrr
Mas vou tentar até qdo puder, se mais uma semana o bicho pegar, vou apelar pro C#… (de onde eu vim *r).
Falew.
f-schmittAinda vou tentar desenvolver, pelo menos a parte de gerar o XML q eu teria q fazer de qq jeito, mas
já tô apanhando desde o início, decidi fazer como vc sugeriu, através do manual… mas de cara,
na minha tag infNfe a “versao” está vindo antes do “Id” e n consegui inverter essa órdem, qdo penso
no que vem pela frente… *rrr
Mas vou tentar até qdo puder, se mais uma semana o bicho pegar, vou apelar pro C#… (de onde eu vim *r).Falew.
isso não importa os xml testam o conteudo das tag’s não a localização, abraços.
aix,
Blz cara, domingo e tô aki no pega desde cedo, valeu pela informação,
vou continuar por aqui.
Aproveitando o tópico sobre a NF-e, alguém já ouviu falar de nota de complemento par NF-e?
Achei esse pdf mas não sei nada sobre a sua veracidade.
Estou em dúvida se realmente teremos que implementá-la e qual será o padrão do xml.
As informações que tenho encontrado sobre NF-e de complemento são que ela não está sendo implementada pelo governo, só que são informações com data menor que 2008.
Pessoal, de acordo com a Sefaz…
13. Como fica a chamada carta de correção no caso de utilização da NF-e?Após a concessão da Autorização de Uso da NF-e, o emitente poderá sanar erros em campos específicos da NF-e, por meio de Carta de Correção Eletrônica - CC-e transmitida à Secretaria de Fazenda que autorizou a NF-e.
Não poderão ser sanados erros relacionados:
1 - às variáveis consideradas no cálculo do valor do imposto, tais como: valor da operação ou da prestação, base de cálculo e alíquota;
2 - a dados cadastrais que impliquem alteração na identidade ou no endereço de localização do remetente ou do destinatário;
3 - à data de emissão da NF-e ou à data de saída da mercadoria.
A Carta de Correção Eletrônica - CC-e deverá:
1 - observar o leiaute estabelecido em Ato Cotepe;
2 - conter assinatura digital do emitente, certificada por entidade credenciada pela Infra-estrutura de Chaves Públicas Brasileira - ICP-Brasil, contendo o CNPJ do emitente ou da matriz;
3 - ser transmitida via Internet, com protocolo de segurança ou criptografia.
Quando houver mais de uma CC-e para uma mesma NF-e, deverão ser consolidadas na última CC-e todas as informações retificadas anteriormente.
Importante: O leiaute da CC-e ainda não foi publicado em Ato Cotepe.
Pessoal, vou comecar a realizar alguns testes/aprendizados em NF-e.
Eu tenho como obter algum certificado para realizar testes ou tenho que adquirir um ? E onde ?
valeu,
Fred
fre_d
Se não me engano, se for só pra assinatura, tem certificado pra teste, mas se
for pra fazer testes de homologação, acho q precisa de um certificado válido.
é bem isso
pra testar assiantura ate vale, mas não são válidos para acessar o wsdl
abraço
é bem issopra testar assiantura ate vale, mas não são válidos para acessar o wsdl
abraço
O manu pode me dar uma força com os wsdl ?, meu chefe pediu pra eu testar eu gerei o xml consultaStatusServiço(consStatServ) como devo proceder acabei de baixar um zip contendo os wsdl vc pode me ajudar ?
Te ajudo!
Pessoal, quanto tempo em média (aproximadamente) leva-se para implementar uma integração entre NF-e e sistemas legados ? Não tenho nenhuma experiência em NF-e (Sefaz/SP) portanto vou começar do zero. Preciso fazer esse levantamento para estimar os custos do desenvolvimento.
Valeu,
Fred
Opa… eae pessoal !!!
Em relação ao tempo… depende muito…
Se vc for fazer a nota fiscal para serviços eh até que rápido (20 dias)… mas a de produtos eh um inferno… tem informação pra caramba… tantas que teremos que adicionar novos campos no sitema aki…
Para agilizar é possível dividir em três etapas…
- Criar os XML;
- Desenvolver os processos de envio e retorno;
- Fazer um controle de log, o que foi e o que nao foi… arquivar etc… parte mais trabalhosa do que dificil.
No momento estamos fechando a geração dos XML’s de acordo com o manual de integração da SEFAZ (espero ser esse mesmo o manual)…
Em paralelo estamos desenvolvenfo as classes de envio e controle…
Assim que terminar os XML, pode se usaro programa da SEFAZ para fazer testes… importar o XML para ele e ver erros de layout…
Se vc for usar o sistema da SEFAZ para transmitir… ai eh so se preocupar em gerar os XML… e pronto… todo controle de envio e log ficam por conta deste software que eh disponibilizado pela SEFAZ. (http://www.emissornfehom.fazenda.sp.gov.br/download.html)
Tem duas versões esse software… uma para Homologação e outra de Produção… fora ser uma boa referência para definir campos, layout’s e informações… pois o mesmo vem com help.
Fui !!
ai pessoal, após muita luta consegui a comunicação com a receita, uso NetBeans e JAX-WS e acesso webservice do RS, mas agora tem uma coisa que me deixa grilado.
quando eu coloco homologacao ocorre:
<xMotivo>Rejeicao: Ambiente informado diverge do Ambiente de recebimento</xMotivo> meu xml <tpAmb>2</tpAmb>
Mas se eu coloco producao:
<xMotivo>Servico em Operacao</xMotivo> -- meu xml <tpAmb>1</tpAmb>
não era pra ser correto dar serviço em opercao no modo HOMOLOGACAO ? to achando estranho isso, sabem se tem duas vesoes dos WSDL ? para homologacao e producao ? ou para checar o status do servico é assim mesmo ? eu peguei meus WSDL direto na fonte digitando o endereco + ?wsdl, alguem sabe de algo disso que falei, abraços.
quando você acessa o wsdl de homologação
ex
https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
nesse caso você precisa fazer com o tpAmb=2
quando está em produção
ex
https://nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
nesse caso você precisa fazer com o tpAmb=1
quando ele responde: Servico em Operacao
é porque está tudo OK
são regras da validação do webservice, está tudo no manual
espero ter ajudado
abraço!
quando você acessa o wsdl de homologação
ex
https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
nesse caso você precisa fazer com o tpAmb=2quando está em produção
ex
https://nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
nesse caso você precisa fazer com o tpAmb=1quando ele responde: Servico em Operacao
é porque está tudo OKsão regras da validação do webservice, está tudo no manual
espero ter ajudado
abraço!
claro que ajudo manu, obrigado Fernando, eu não estava colocando homologação na frente na hora de gerar as parada, agora rolo blz, vlw.
Pessoal,vou comecar a trabalhar na nfe aqui na empresa,por onde devo começar?Uso netbeans 6.5 sei que nele da pra gerar o cliente,mas parece que precisa de um certificado valido nao he?
alguem pode me dar umas dicas bem basicas"conceituais" de como comecar o projeto?
Obrigada,bjos.
Sua empresa utiliza HSM (Hardware Security Module) para nf-e???
Nota Fiscal Eletronica os Riscos Escondidos para as corporacoes
Não nao usamos isso aqui,so quero saber o que preciso para comecar o projeto,o que preciso para consumir o WS,por onde devo comecar?
Obrigada por responder bjos.
Pessoal, soh para deixar o comentario…
JAXB funcionou 100%… gerou todos meus beans, e gera XML… Muito bom e rapido…

Entaum gente estou em busca de ajuda ,alguem pode dar umas dicas a mais para mim?
Bjos.
Pegou PDF da receita?
sim peguei,mas naum me ficou muito claro rsrsr ,queria saber quais sao os passos para comecar,me parece que primeiro tenho que conseguir um certificado digital,valido para conseguir acessar o web service,naum tem um certificado para testes?No netBeans tem a opcao novo cliente para servico web,e ali que indico a url do web da receita?Qualquer dica e bem vinda .
Bjos.
sim peguei,mas naum me ficou muito claro rsrsr ,queria saber quais sao os passos para comecar,me parece que primeiro tenho que conseguir um certificado digital,valido para conseguir acessar o web service,naum tem um certificado para testes?No netBeans tem a opcao novo cliente para servico web,e ali que indico a url do web da receita?Qualquer dica e bem vinda .
Bjos.
antes de pensar nos WebServices deveria de se preocupar em cosntruir a estrutura da NF-e, pois tem um caminho bem demorado até chegar neles, abraços.
Aix falou bem…
Procure fazer os XMLs primeiros… o webservice eh sussegado…
Procure sobre JAXB, tem um pluign para eclipse e tudo mais…
Sim que tem um certificado e etc etc… etc… mas voce soh vai ver isso depois de gerar os XMLs…
Como deve ser estes xml’s vc tem um exemplo disso que dados vou colocar nele?
Da para gerar isso com sax?Ja brinquei um pouco com ele.
Como deve ser estes xml’s vc tem um exemplo disso que dados vou colocar nele?
Da para gerar isso com sax?Ja brinquei um pouco com ele.
Como deve ser estes xml’s vc tem um exemplo disso que dados vou colocar nele?
tudo esta escrito no Manual de integração Contribuinte os padrões de como vc deve proceder para criar os xml
Da para gerar isso com sax?Ja brinquei um pouco com ele
Use a ferramenta que vc quiser para gerar eles, eu usei JAXB, crio minhas classes java beans e com as anotações do JAXB crio os xml nos padroes descritos no Manual de integração Contribuinte, acredito que sax sera apenas uma das feramentas que tera que usar, abraços.
Estou tentando gerar meus primeiros xml para teste com jaxb mas esta dando erro vejam meu codigo:
public void ObjectToXml() throws JAXBException, FileNotFoundException{
TipoProduto tp = new TipoProduto();
tp.setId(new Long(1678));
tp.setNome("novo tipo");
JAXBContext context = JAXBContext.newInstance("agileti.smartge.model.erp");
//saída 1 ? console
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(tp, System.out);
File f = new File("home/agile3/TipoProduto.xml");
Marshaller m2 = context.createMarshaller();
m2.marshal(tp, new FileOutputStream(f));
System.out.println("Passou::::::::::::::::::::::::::::::::::;;");
}
esta dando o seguinte erro:
Caused by: javax.xml.bind.JAXBException: "agileti.smartge.model.erp.TipoProduto" doesnt contain ObjectFactory.class or jaxb.index
Coloquei o jaxb.index no mesmo pacote da classe que quero gerar o xml com o seguinte valor:
agileti.smartge.model.erp.TipoProduto
Alguem sabe o que eh este erro?
Obrigada,bjos.
Ixi… eu gerei as classes usando os XSD… dai “nao tem mto erro”… desconheco o erro!
Consegui gerar um primeiro xml de teste assim:
TipoProduto tp = new TipoProduto();
tp.setId(new Long(1678));
tp.setNome("novo tipo");
//saída 1 ? console
JAXBContext context = JAXBContext.newInstance(tp.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(tp, new FileWriter("tipoProduto.xml")); //I want to save the
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_ENCODING, new String("UTF-8"));
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(tp, System.out);
Agora entaum devo pegar a minha classe NotaFiscal e gerar um xml dela isso?
Este xml gerado que eh enviado para a receita pelo Ws depois?
de uma olhada no esquema na pagina 91/92 (PDF receita versao 3.0) em diante sobre o envio de NFe… vai te dar uma boa visao do assunto…
Pessoal…
Eu vi uns topicos falando sobre o problema do ns2 com JAXB…
a NFe foi susse, o lote de NFe ta perfeito, mas pulei para o servico de Inutilizar numeros e olha o XML que sai…
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<inutNFe xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://www.portalfiscal.inf.br/nfe" versao="1.07">
<ns2:infInut Id="NFe511234567890123455001000000101000000101">
<tpAmb>2</tpAmb>
<xServ>INUTILIZAR</xServ>
<cuf>53</cuf>
<ano>09</ano>
<cnpj>00000000123456</cnpj>
<mod>55</mod>
<serie>123</serie>
<nnfIni>101</nnfIni>
<nnfFin>111</nnfFin>
<xJust>Falha no Sistema</xJust>
</ns2:infInut>
</inutNFe>
Isso que eu fiz umas modificoes na classe para gerar mais bonita possível e ainda nada… ta triste a coisa…
ja fiz ateh isso para remover, e naum vai:
Ou se for o caso tambem pode ser:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:inutNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" versao="1.07">
<infInut Id="NFe511234567890123455001000000101000000101">
<tpAmb>2</tpAmb>
<xServ>INUTILIZAR</xServ>
<cUF>53</cUF>
<ano>09</ano>
<CNPJ>00000000123456</CNPJ>
<mod>55</mod>
<serie>123</serie>
<nNFIni>101</nNFIni>
<nNFFin>111</nNFFin>
<xJust>Falha no Sistema</xJust>
</infInut>
</ns2:inutNFe>
e na validacao de xml da isso:
amigos, não acompanhei o tópico todo, mas se vcs tentarem gerar o xml baseado em XSDs da receita não irá funcionar corretamente, uma vez que xsds de vários estados estão com problemas, principalmente de referências.
Solucoes existem mas nao sao perfeitas, uma delas é:
public static void ajustaXml(File file) throws Exception {
FileReader reader = new FileReader(file);
BufferedReader leitor = new BufferedReader(reader);
leitor.read();
String vlr = "";
StringBuffer vlrFile = new StringBuffer();
String line = leitor.readLine();
while(line != null) {
vlrFile.append( line );
line = leitor.readLine();
}
vlr = vlrFile.toString();
// aqui acontece a gambi? temporariamente resolve o problema
if (vlr.indexOf("ns2:") > -1) {
vlr = vlr.replaceAll("ns2:", "");
}
if (vlr.indexOf(":ns2") > -1) {
vlr = vlr.replaceAll(":ns2", "");
}
leitor.close();
reader.close();
FileWriter writer = new FileWriter(file);
PrintWriter saida = new PrintWriter(writer);
saida.print( "<" + vlr);
writer.close();
saida.close();
}
Mas ainda naum validou meu xml aqui...
ja mandei um lote usando o xsd deles… problema esta nos outros servicos…
Sera que naum tem como fazer um leve ajuste no XSD para usar o JAXB…
o lote tudo bem… é possível somente corrigir os XSDs para efeito de geraçao.
Como se faz isso?
ai pessoal, HELP!!!
seguinte, gero todos meus beans pra NFe e uso as anotacoes do JAXB pra escrever no xml eu não gero meus xml através dos XSD, entao seguinte tava criando o bean da assinatura quando me deparei com 2 tags iguais, putz não achei a anotação responsavel por escrever 2 tags iguais alguem ai pode me ajudar?
preciso fazer isso:
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
mminha classe:
Acrditava que poderia ter 2 classes (Transform e Transform2) e em cada uma um atributo diferente, mas não da, alguem tem alguma ideia? abraços.
package nfe.entity;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
@XmlAccessorType(XmlAccessType.FIELD)
class Transforms {
@XmlElement(name = "Transform")
private Transform transform;
@XmlElement(name = "Transform")
private Transform2 transform;
}
Pessoal, bom dia.
Estamos estudando a possibilidade de implementarmos um integrador do nosso erp para o sistema de nf-e.
Só que nosso prazo é primeiro de setembro.
Temos como opção comprar um produto.
Como base queria saber qto tempo vcs usaram para implementar esta solução.
grato
abs
4 dias para gerar xml, conectar com webservice…
15 dias testando.
Bom, estou voltando ao desenvolvimento da NF-e e estou com um problema realmente estranho.
Estou utilizando um certificado do tipo A3.
Gero o xml, assino já td certo.
Mas qdo vou gerar a comunicação com o Webservice do Rio Grande do Sul utilizando a ferramenta WSDL2Java do Axis ocorre o erro:
Isto, no caso, retorna que nao tenho permissão de acesso.
Estou setando a parte de keystore e truststore deste modo:
Onde o jssecacerts é gerado de acordo com o http://blogs.sun.com/andreas/resource/InstallCert.java ja mencionado neste tópico. Não sei se tem que informar a cadeia de certificados em algum lugar, mas pelo que vejo dentro do jssecacerts fica armazenado toda da cadeira dos certificados do Servidor e quando acessa o certificado do cliente, este tb carrega, pois a cadeia esta dentro do SmartCard.
Se eu fazer a comunicação usando o webservice do Mato Grosso conecta bonitinho e gerar os fontes baseado no wsdl que o servidor retorna.
Espero que alguém possa dar uma luz nesse caso…
Obrigado
Olá pessoal, blz?
Aproveitando o embalo dos problemas com NFe, deixa eu ver se alguem pode me ajudar…
é o seguinte, eu consegui assinar meu arquivo e transmitir blz…porém, estou com um problema estranho…
por exemplo, utilizando tipo A3, ao enviar uma solicitação de status de serviço, meu programa me pede a senha do cartão, eu informo a senha correta, e ele transmite a solicitação blz. Aí, se eu solicitar novamente, informando uma senha errada, ele continua solicitando, ou seja, é como se de alguma maneira meu codigo armazenasse minha ultima senha válida. O mesmo ocorre se digito a primeira vez uma senha errada, e em seguida digito corretamente, ai nao transmite.
Eu li algumas coisas sobre remover o provider ao final. Eu tentei usar :
e tentei tb
mas ambos estão me retornando o erro
java.net.SocketException: java.security.NoSuchAlgorithmException: Error
constructing implementation (algorithm: Default, provider: SunJSSE, class:
com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl )
Outra dúvida é: como faço pra validar minha senha? tipo, se digitar uma senha errada eu poder dar a minha mensagem de “Senha inválida” pois não consigo obter nenhum codigo de erro.
Obrigado pela atenção…
Abraço…
Estou com problema para acessar os Web services passando pelo proxy
public class Main {
public static void main(String... args) {
try {
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "c:\\homologa_SP"); // Arquivo gerado com o InstallCert
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "c:\\NFe emissao.pfx"); // o arquivo com o certificado do emitente
System.setProperty("javax.net.ssl.keyStorePassword", "senhaCertificado"); // a senha do arquivo
System.setProperty("https.proxyHost", "192.168.1.254");
System.setProperty("https.proxyPort", "5981");
System.setProperty("https.proxyUser", "usuarioproxy");
System.setProperty("https.proxyPassword", "senha");
NfeStatusServicoNF status = new ObjectFactory().createNfeStatusServicoNF();
status.setNfeCabecMsg("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.02\"><versaoDados>1.07</versaoDados></cabecMsg>");
status.setNfeDadosMsg("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.07\"><tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ>");
NfeStatusServico service = new NfeStatusServico(new URL("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico.asmx "), new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico", "NfeStatusServico"));
NfeStatusServicoSoap soap = service.getNfeStatusServicoSoap();
String result = soap.nfeStatusServicoNF(status.getNfeCabecMsg(), status.getNfeDadosMsg());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
O erro é o seguinte:
[color=red] com.sun.xml.internal.ws.wsdl.parser.InaccessibleWSDLException: 2 counts of InaccessibleWSDLException.
java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 407 Proxy Authentication Required"
java.io.IOException: Unable to tunnel through proxy. Proxy returns “HTTP/1.0 407 Proxy Authentication Required”
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:146)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:122)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:226)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:189)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:159)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:83)
at javax.xml.ws.Service.<init>(Service.java:56)
at br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico.<init>(NfeStatusServico.java:44)
at Main.main(Main.java:48)
[/color]
O erro me informa que o proxy exige usuário e senha que estão sendo passados, eu estou setando minhas propriedades como: https.proxyHost
Olá pessoal, blz?
Aproveitando o embalo dos problemas com NFe, deixa eu ver se alguem pode me ajudar……
…
Outra dúvida é: como faço pra validar minha senha? tipo, se digitar uma senha errada eu poder dar a minha mensagem de “Senha inválida” pois não consigo obter nenhum codigo de erro.
Obrigado pela atenção…
Abraço…
dae pessoal
ando bem sem tempo pra ajudar a turma aqui… mas vamos la…
normalmente a senha do certificado fica numa properties dentro do System.Properties
entao isso ou algo assim, deve funcionar
para testar se a senha está certa ou não, eu sempre leio a validade do e-cnpj, seja A1 ou A3, nesta leitura eu preciso acessar o certificado, quando ele me retorna um BadPaddingException é pq a senha está inválida…
abraço
Bom, estou voltando ao desenvolvimento da NF-e e estou com um problema realmente estranho.
Estou utilizando um certificado do tipo A3.
Gero o xml, assino já td certo.
Mas qdo vou gerar a comunicação com o Webservice do Rio Grande do Sul utilizando a ferramenta WSDL2Java do Axis ocorre o erro:Isto, no caso, retorna que nao tenho permissão de acesso.
Obrigado
fera, o seu token.cfg está apontando pra dll certa do seu token/leitor?
Bom a principio sim, pois esta assinando o xml corretamente e usando o debug:
está listando no console os dados do certificado corretamente.
entro do token.cfg tenho
name = SmartCard
library = c:/windows/system32/aetpkss1.dll
Há algum modo para mim saber qual eh a dll certinha que o token usa? Pois este código achei em outro tópico. Estou usando o GemPC Twin
Desde já agradeço…
fala f-schmitt, blz?
então cara, esse skema de limpar o properties nao deu certo...nao aconteceu nada de diferente...mas tipo, eu nao estou usando o "System.setProperty("javax.net.ssl.keyStorePassword, senha")" no meu código, então nao tem nada para limpar, certo? o estranho é q acontece o seguinte:
eu tentei colocar um try-catch direto no meu ks.load(...), aí, se digito a primeira senha errada, ele cai no catch...porém, se digito uma certa (ele nao entra no catch) e em seguida uma errada, o catch nao pega essa senha errada, e tipo, eu gravo a senha logo antes do ks.load e e ela ta com a senha errada, só q o ks.load carrega msm assim...não sei mais o q fazer...acho q ja decorei todos os tópicos do assunto na net de tanto procurar e nao consigo resolver...minha esperança agora é alguem me ajudar... :?
vou postar meu código completo aki...quem puder dar uma olhada e ver se tem alguma coisa q eu possa fazer, fico muito grato...
import java.io.*;
import java.security.*;
import java.security.cert.*;
import java.security.cert.X509Certificate;
import java.util.*;
import javax.crypto.*;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMSignContext;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
public class Nfe
{
public Nfe()
{
}
public static String assinarEnviNfe(String xmlNaoAssinado, String uri, int tipo, String certificadoPath, String certificadoSenha, String CaminhoDLL, String NoPaiAssinatura)
throws Exception
{
try {
xmlNaoAssinado = xmlNaoAssinado.replaceAll("\t", "");
xmlNaoAssinado = xmlNaoAssinado.replaceAll("\n", "");
xmlNaoAssinado = xmlNaoAssinado.replaceAll("\r", "");
//define uma nova instancia DOM
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//indica que essa nova instancia irá aceitar NameSpaces
factory.setNamespaceAware(true);
//cria uma nova instancia de um DocumentBuilder (obtem um documento XML DOM)
DocumentBuilder builder = factory.newDocumentBuilder();
//parse = Analisar o conteúdo de um determinado arquivo como um documento XML e retornar um novo DOM
//ByteArrayInputStream = Separa uma string em fluxo de bytes
Document doc = builder.parse(new ByteArrayInputStream(xmlNaoAssinado.getBytes()));
//fábrica para criar objetos XMLSignature baseado no DOM
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
//cria uma lista de Array
ArrayList transformList = new ArrayList();
// Cria a lista de tranformações a serem aplicadas as referencias a
// serem assinadas (transformaçoes exigidas pela w3c)
javax.xml.crypto.dsig.spec.TransformParameterSpec tps = null;
javax.xml.crypto.dsig.Transform envelopedTransform = fac. newTransform("http://www.w3.org/2000/09/xmldsig#enveloped-signature", tps);
javax.xml.crypto.dsig.Transform c14NTransform = fac.newTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315", tps);
transformList.add(envelopedTransform);
transformList.add(c14NTransform);
KeyStore ks = null;
java.security.Provider p = null;
if(tipo == 1) //significa que é certificação tipo A1
{
// cria uma instancia de um keystore de um tipo específico
ks = KeyStore.getInstance("PKCS12");
// carrega um keystore existente
//try {
ks.load(new FileInputStream(certificadoPath), certificadoSenha.toCharArray());
//} catch(Exception e){
// return "Caminho ou Senha Inválido(a)!";
//}
} else //significa que é certificação tipo A3
{
p = new sun.security.pkcs11.SunPKCS11(CaminhoDLL);
Security.addProvider(p);
// cria uma instancia de um keystore de um tipo específico
ks = KeyStore.getInstance("pkcs11");
// carrega um keystore existente
//try {
ks.load(null, certificadoSenha.toCharArray());
//} catch(Exception e){
//return "Caminho ou Senha Inválido(a)!";
//}
}
//variavel segura para armazenar a chave primaria
KeyStore.PrivateKeyEntry pkEntry = null;
//enumera todos os Aliases contidos no keyStore
Enumeration aliasesEnum = ks.aliases();
//agrupa todas as chaves privada em uma unica variavel
PrivateKey privateKey = null;
//loop de todos os Aliases
while(aliasesEnum.hasMoreElements())
{
//salva o Alias na variavel "alias" como String
String alias = (String)aliasesEnum.nextElement();
//verifica se a chave primaria é valida
if(ks.isKeyEntry(alias))
{
//obtem a chave primaria do alias selecionado
pkEntry = (KeyStore.PrivateKeyEntry)ks.getEntry(alias, new java.security.KeyStore.PasswordProtection(certificadoSenha.toCharArray()));
// armazena a chave numa variavel de grupo de chaves
privateKey = pkEntry.getPrivateKey();
break;
}
}
//cria uma instancia do tipo X509Certificate
//X509Certificate - classe que proporciona uma forma padrao de acesso
// a todos os atributos do certificado
X509Certificate cert = (X509Certificate) pkEntry.getCertificate();
//Um KeyInfo contém uma lista de XMLStructures, cada um dos quais
//contêm informações que permite ao destinatário obter
//a chave necessária para validar uma assinatura XML
KeyInfoFactory kif = fac.getKeyInfoFactory();
//cria uma lista (tipo vetor)
List x509Content = new ArrayList();
// adiciona o certificado a lista
x509Content.add(cert);
//cria um elemento contendo identificador de uma lista especifica do certificado
javax.xml.crypto.dsig.keyinfo.X509Data xd = kif.newX509Data(x509Content);
//retorna uma lista imutavel de objetos especificos
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
//chama metodo "assinarNfe"
assinarNfe(fac, transformList, privateKey, ki, doc, uri, NoPaiAssinatura);
ByteArrayOutputStream os = new ByteArrayOutputStream();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
Properties prop = trans.getOutputProperties();
prop.put("omit-xml-declaration", "yes");
trans.setOutputProperties(prop);
trans.transform(new DOMSource(doc), new StreamResult(os));
String xmlFinal = os.toString();
xmlFinal = xmlFinal.replaceAll("\t", "");
xmlFinal = xmlFinal.replaceAll("\n", "");
xmlFinal = xmlFinal.replaceAll("\r", "");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("javax.net.ssl.keyStore");
if(tipo == 2)
Security.removeProvider(p.getName());
return xmlFinal;
} catch (UnrecoverableEntryException ex) {
//ex.printStackTrace();
return '0' + ex.getMessage();
} catch (CertificateException ex) {
//ex.printStackTrace();
return '1' + ex.getMessage();
} catch (java.security.KeyStoreException ex) {
//ex.printStackTrace();
return '2' + ex.getMessage();
} catch (Exception ex) {
String mensagemErro = ex.getMessage();
ex.printStackTrace();
if (tipo == 1)
if(mensagemErro.equalsIgnoreCase("stream does not represent a PKCS12 key store"))
return "O arquivo selecionado n\343o \351 um arquivo de certificado v\341lido.";
else if(mensagemErro.indexOf("wrong password or corrupted file") != -1)
return "A senha informada est\341 incorreta ou o arquivo foi corrompido.";
else
return "Erro carregando certificado de arquivo.\nErro:[" + mensagemErro + "]";
else
return "Erro carregando certificado do tipo A3";
}
}
//escreve o XML contendo a assintatura
private static void assinarNfe(XMLSignatureFactory fac, ArrayList transformList, PrivateKey privateKey, KeyInfo ki, Document doc, String uri, String NoPaiAssinatura)
throws Exception
{
//cria um elemento referenciando o atributo Id do arquivo XML
//cria também um elemento digestmethod
javax.xml.crypto.dsig.Reference ref = fac.newReference(uri, fac.newDigestMethod("http://www.w3.org/2000/09/xmldsig#sha1", null), transformList, null, null);
javax.xml.crypto.dsig.spec.C14NMethodParameterSpec nullspec = null;
javax.xml.crypto.dsig.CanonicalizationMethod can = fac.newCanonicalizationMethod("http://www.w3.org/TR/2001/REC-xml-c14n-20010315", nullspec);
javax.xml.crypto.dsig.SignedInfo si = fac.newSignedInfo(can, fac.newSignatureMethod("http://www.w3.org/2000/09/xmldsig#rsa-sha1", null), Collections.singletonList(ref));
XMLSignature signature = fac.newXMLSignature(si, ki);
DOMSignContext dsc = new DOMSignContext(privateKey, doc.getElementsByTagName(NoPaiAssinatura).item(0));
signature.sign(dsc);
}
public static String transmiteNFe(String caminhoDLLouCFG, String certificadoSenha, String pkcs)
throws Exception
{
try
{
KeyStore ks = null;
Provider p;
if (pkcs.equals("pkcs12")) {
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
p = new com.sun.net.ssl.internal.ssl.Provider();
Security.addProvider(p);
ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream(caminhoDLLouCFG), certificadoSenha.toCharArray());
}
else
{
p = new sun.security.pkcs11.SunPKCS11(caminhoDLLouCFG);
Security.addProvider(p);
ks = KeyStore.getInstance("pkcs11");
ks.load(null,certificadoSenha.toCharArray());
}
System.setProperty("javax.net.ssl.keyStoreType",pkcs);
System.setProperty("javax.net.ssl.keyStorePassword", certificadoSenha);
System.setProperty("javax.net.ssl.trustStoreType","JKS");
System.setProperty("javax.net.ssl.trustStore","C:/TSCerts");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
return "";
}
catch(Exception e)
{
String mensagemErro = e.getMessage();
e.printStackTrace();
if(mensagemErro.equalsIgnoreCase("stream does not represent a PKCS12 key store"))
return "O arquivo selecionado n\343o \351 um arquivo de certificado v\341lido.";
else if(mensagemErro.indexOf("wrong password or corrupted file") != -1)
return "A senha informada est\341 incorreta ou o arquivo foi corrompido.";
else
return "Erro carregando certificado de arquivo.\nErro:[" + mensagemErro + "]";
}
}
}
Se for útil para alguem, ta funcionando (tirando o detalhe da senha)...tem até uns comentário mais ou menos só pra entender alguma coisinha...
bom, espero que alguem possa me ajudar...
Obrigado...
Opa... tb to voltando a mexer com a NFe... parei um tempo por causa das "prioridades".. ^^
Enfim... parei na geração do XML e assinatura... agora to na parte de comunicação com a SEFAZ.. ja peguei os WSDL no site da fazenda e ja gerei os Java com eles...
Ja tenho a chamada aos métodos.. e o primeiro énfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg)
Vlw !!!
********************** (aproveitando o post)
Bom... consegui gerar o Cabec e Dados através dos XSD (criei classes correspondentes).
Agora estou parado em outro erro... o "unable to find valid certification path to requested target"
Se mais agluém estiver com problemas nessa parte, o seguinte post tem mais informações
[url]http://www.guj.com.br/posts/list/90/83758.java#725070[/url]
**********************
Acertei esse... bom.. nao sei se eh o correto e se alguem usaou uma solução melhor... por favor nos avise.. hehe
A solução foi colocar o caminho completo do KeyStore... ao inves de deixar so o alias de um dos certificados nele...
HTTP Error 403.7 - Forbidden: SSL client certificate is required.<br>Internet Information Services (IIS)</h2>
Me parece ser alguma configuração no borwser, como certificados de outras pessoas etc... vou tentar aki e já aviso vcs...
***********************
Analisei com mais calma esse 403 e eh um retorno HTML... pedindo para configurar o Browser com o certificado... o problema eh que tenho dois.. o FIrefox e o IE, ja joguei nos dois... e nada... =/
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>The page requires a client certificate</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">
<STYLE type="text/css">
BODY { font: 8pt/12pt verdana }
H1 { font: 13pt/15pt verdana }
H2 { font: 8pt/12pt verdana }
A:link { color: red }
A:visited { color: maroon }
</STYLE>
</HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD>
<h1>The page requires a client certificate</h1>
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server will recognize. The client certificate is used for identifying you as a valid user of the resource.
<hr>
<p>Please try the following:</p>
<ul>
<li>Contact the Web site administrator if you believe you should be able to view this directory or page without a client certificate, or to obtain a client certificate.</li>
<li>If you already have a client certificate, use your Web browser's security features to ensure that your client certificate is installed properly. (Some Web browsers refer
to client certificates as browser or personal certificates.)</li>
</ul>
<h2>HTTP Error 403.7 - Forbidden: SSL client certificate is required.<br>Internet Information Services (IIS)</h2>
<hr>
<p>Technical Information (for support personnel)</p>
<ul>
<li>Go to <a href="http://go.microsoft.com/fwlink/?linkid=8180">Microsoft Product Support Services</a> and perform a title search for the words <b>HTTP</b> and <b>403</b>.</li>
<li>Open <b>IIS Help</b>, which is accessible in IIS Manager (inetmgr),
and search for topics titled <b>About Certificates</b>, <b>Using Certificate Trust Lists</b>, <b>Enabling Client Certificates</b>, and <b>About Custom Error Messages</b>.</li>
</ul>
</TD></TR></TABLE></BODY></HTML>
Fui !
Bom… entei acessar o WS via browser e acabei caindo no mesmo erro acima… =/
O endereço que usei foi:
https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico.asmx
Ai ele me pediu um certificado (IE) adicionei uma exceção no FireFox… mas não rolou…
Já baixei aquele SEFAZSP_homologacao.p7b e instalei nos dois browser’s… e nada… na minha aplicação usei o keytool para importar os certificados extraidos do SEFAZSP_homologacao.p7b para dentro de meu arquivo cacerts…
Também importei nos browser o Associacao.pfx… na aplicação usei tb usei o keytool para importa-lo…
Onde estou errando na hora de importar os certificados publicos da SEFAZ ou o meu privado ???
vlw !
Apenas para reforçar o que já foi dito no fórum em outros post’s.
E quem ainda não se convenceu, aconselho tentar acessar o link:
https://www.sefazvirtual.fazenda.gov.br/NFeStatusServico/NFeStatusServico.asmx
Ou qualquer outro que precise do certificado.
Fui !
Gente, seguinte, consegui ENFIM conectar com o webservice do status servico e consulta cadastro. Mas para o consulta cadastro tem um problema, por exemplo estou utilizando Sefaz SP, mas dai so consigo consultar para clientes SP, qq outro estado recebo o erro “265 Rejeição: Sigla da UF da consulta difere da UF do Web Service”, pois teoricamente teria q usar o webservice de cada estado na procura.
Nao q eu concorde com isso, mas blz, nao tem jeito, bola pra frente. Agora percebi q na listagem dos webservices varios estados nao possuem o webservice para consultacadastro. Para esses casos, alguma ideia ??
E peguei um exemplo de um estado q possui e tentei chegar, mas dai tenho erro de certificado, pois so tenho o certificado raiz do sefaz SP, alguem sabe como consigo dos outros estados ??
E alguem ja desenvolveu o consulta cadastro para varios estados ??
Grato,
Magno
[email removido]
Pessoal, alguém está utilizando o serviço de “Consulta Cadastro” (consCad)…
Só falta este serviço, e em SP não deu… estou puxando os de RS agora para fazer novos testes manhã…
VALEU!
O erro que dá é este:
...
Server was unable to process request. ---> Object reference not set to an instance of an object.
...
Endereço da tentativa:
Ola, eu estava com esse problema tbm, mas comigo era erro de versao do xml.
Utilize versao 1.01 no cabecalho e no “corpo”.
Magno
Cara, você tem o exemplo de XML que você está mandando? Pode ser só os dados, sem o cabeçalho!
NO Cabeçalho tem:
- Versao Dados;
- Versaso;
Quais são os valores para estes atributos?
Exemplo da Consulta de Cadastro:
<?xml version="1.0" encoding="UTF-8"?>
<ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
<infCons>
<xServ>CONS-CAD</xServ>
<UF>SP</UF>
<IE>123456789012</IE>
</infCons>
</ConsCad>
Magno
Olha issso:
Cabeçalho:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cabecMsg versao="1.01" xmlns="http://www.portalfiscal.inf.br/nfe">
<versaoDados>1.10</versaoDados>
</cabecMsg>
Corpo:
<?xml version="1.0" encoding="UTF-8"?>
<consCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
<infCons>
<xServ>CONS-CAD</xServ>
<UF>RS</UF>
<IE>113418659116</IE>
<CNPJ>67808881000142</CNPJ>
</infCons>
</consCad>
Erro do Retorno da Receita:
242 - Rejeicao: Cabecalho - Falha no Schema XML
Eu uso o mesmo código e cabeçalho para outros serviços e todos estão funcionando corretamente… Só agora que está me incomodando!
no cabecalho a versao esta errada:
1.01
Bem agora passou, ficou no meu XML… mas beleza agora me viro:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cabecMsg versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe">
<versaoDados>1.01</versaoDados>
</cabecMsg>
Valeu ae Magno!!!
Tava lendo a documentação sobre os campos de nf-e para a tabela de produtos:
http://www.emissornfehom.fazenda.sp.gov.br/docs/[Emissor_NF-e]_Manual_de_layout_TXT_e_XML-Cadastros_v1.0.3.pdf
E deparei com alguns campos da qual não tenho conhecimento algum:
Vamos trocar uma idéia e quem sabe tbm ajudar outras pessoas que estão passando por isso:
Cadastro de Produtos
1-EAN = seria o código de barras certo?
EAN Unid. tributável = seria o código de barras do produto tributável?! mas qual a diferença em relação a somente o código EAN?
2- Unid. Com. = unidade comercial, seria a unidade que compra? a unidade que vende?
Unid. Trib. = unidade tributável, certo, porém a mesma pergunta acima, seria a unidade de compra ou venda? qual a diferença entre as duas?
3- Qtde. Trib. = seria a quantidade em estoque?
4- Valor Unid. Com. e Valor Unid. Trib. = seriam os valores de venda pro cliente final? qual a diferença entre as duas?
Entao, so estou falando o q estou preenchendo no lugar (o q me passaram), mas nao posso te dar certeza absoluta q isso é o 100% correto.
1-EAN Codigo de barras = codigo EAN13 do codigo de barras mesmo
EAN Unid. tributável = como possui 14 digitos, estou colocando no lugar o meu codigo do produto DUM14, q é na verdade o EAN13+digito verificador
2, 3 e 4: das qtdades e valores comercial e tributarias ninguem conseguiu me dizer a diferenca, mas todos disseram pra eu preencher as 2 iguais.
Abracos,
Magno
[email removido]
Em determinadas situações a empresa tributa qtdade ou valor diferente do que fatura, o layout está preparado p/ isso, em situações normais é só colocar os dois iguais.
Quanto ao EAN, estou colocando os dois campos iguais EAN13
abraço
Pessoal sei que todos estao indo no rumo do xml…porém…
No proprio software da nFE existe a possibilidade de importar o os arquivos xml ou txt. O XML esta certo, porem nao consigo importar o txt para ele… tem alguma coisa “diferente” na importação?
somente pro parana tenho essa menssagem alguem passou por isso ?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><consReciNFe versao="1.10" xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><nRec>410000003330114</nRec></consReciNFe>Porta SOAP que esta sendo invocada: JAX-WS RI 2.1.1 in JDK 6: Stub for https://homologacao.nfe.fazenda.pr.gov.br/NFENWebServices/services/nfeRetRecepcao
Resposta do servico: null
java.lang.NullPointerException
at java.io.StringReader.<init>(StringReader.java:33)
at nfewebservice.NfeRetRecepcaoCLiente.teste(NfeRetRecepcaoCLiente.java:92)
at nfewebservice.Main.main(Main.java:16)
eu envio o lote e dia que esta ok, mas a consulta é sempre nulo, alguem sabe ?
detalhe, só acontece pro Parana, demais regioes esta ok.
Em PIS e COFINS, vcs estão colocando os campos de ST (Substituição Tributária)? Por que? É Realmente necessário?
Se sim, vai ficar campo d+.
na classe InstallCert tem alguma maneira de eu gerar pra duas url ? tipo meu cliente tem empresa em RS e SC ai teria que passar "homologacao_nfe_sefaz_rs_gov_br"
e “homologacao_nfe_sefazvirtual_rs_gov_br”, isso funciona ? alguem ja fez ? o certificado pra ambas é o mesmo, ele vai gerar 2 arquivos caccerts ?
Em PIS e COFINS, vcs estão colocando os campos de ST (Substituição Tributária)? Por que? É Realmente necessário?
Se sim, vai ficar campo d+.
não é necessario PISST e COFINSST, é opcional…
abraço
Aos brother da NFe ai :lol: ,
existe alguma forma de eu umplementar meu sistema para poder trabalhar homologação e produção juntos, tipo ao clicar num botão passar para homologação ou para produção ? ou melhor tem alguma maneira de eu trabalhar na aplicação 2 ambientes, pois uso a classe istallCert e passo a url pra ela tipo aqui pro rs homologacao.nfe.sefaz.rs.gov.br e preciso ter outro projeto para homologacao.nfe.sefaz.pr.gov.br ? tem como eu fazer minha installCert para 2 endereços ou mais, ou alguma outra forma, para poder usar a mesma aplicação para + de um cliente ? obrigado.
@edit
o problema com o namespace xmlns="" que aparecia em algumas tags sem eu ter colocado ele ali foi resolvido, agora o problema eh adicionar o mesmo namespace em uma tag filha que faz uso desse namespace
esta assim:
<?xml version="1.0" encoding="UTF-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10">
<idLote>1</idLote>
[b]<NFe xmlns="">[/b]
deveria ser assim:
<?xml version="1.0" encoding="UTF-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10">
<idLote>1</idLote>
[b]<NFe xmlns="http://www.portalfiscal.inf.br/nfe">[/b]
a tag nfe precisa ter o mesmo namespace da tag enviNFe, e quando eu adiciono ele mesmo criando um novo objeto namespace, aparece somente as tags vazias…
Senhores, estou começando a desenvolver nfe agora, já li umas três vezes este forum e mais outro monte de artigos referentes a nfe.
Só que tem algumas coisas que não estou conseguindo entender. Desculpem se for coisa boba, mas, é que esse lance de webService, certificados, xStream, tudo é novo para mim.
Já adquiri o e-CNPJ dos Correios.
Fiz o backup do certificado, foi gerado um arquivo *.p12.
Também baixei os certificados da SEFAZ/AM (produção e homologação), foram gerados dois arquivos *.crt.
Baixei também os arquivos *.xsd do site da receita.
Sei da existencia dos WSDL.
Verifiquei no manual de integração do contribuinte o anexo I, que trata do layout da nfe.
Agora, por favor me expliquem, como devo aplicar tudo isso?
Devo criar todas as classes baseadas no Anexo I do manual de integração, usar o xStream para gerar os arquivos em xml, assinar usando o certificado do Correio e acessar os webservices da sefaz? E os xsd e wsdl? Qual a aplicação deles?
Sei que tem a ver com SOAP, mas agracederia muito se alguem pudesse me esclarecer isso.
Fala Gilson, resumindo o processo:
- vc tera de gerar o XML com os dados da NFe utilizando todas as regras do manual de integracao (puta trampo)
- Esse XML vc tera de assinar utilizando seu certificado + certificado da sefaz
- ja pensando nisso, existe um XML para de Lote, onde vc adicionara os XMLs dos pedidos dentro desse lote, pois no final vc enviara o lote e nao a NFe apenas. (pode ser 1 NFe dentro de cada lote)
- os WSDLs sao as estruturas do webservice. Por exemplo o webservice de verificar o status do sistema informara os parametros necessarios para a requisicao e o q sera retornado como resposta. O Eclipse tem a funcionalidade de vc criar as classes do webservice utilizando esse arquivo WSDL, automaticamente, o q ja ajuda.
- Para o envio da NFe mesmo, existem 2 webservices: o envio do lote, entao sera retornado o status desse envio do lote + protocolo, e fim do webservice, vc nao tera as informacoes se a NFe mesmo foi autorizada ou nao. Entao um segundo webservice para verificar pelo protoloco do lote o status de cada NFe dentro desse lote, e dai sim vc tera a informacao se a NFe foi autorizada ou nao.
Praticamente esse é o processo.
Abracos,
Magno
magno_jr, obrigado pela resposta.
Então não tem jeito mesmo, vou ter que implementar todas as classes que aparecem no anexo I do Manual de Integração do contribuinte. Puts, realmente vai dar trabalho.
Então eu devo gerar uma classe para cada WSDL?
Como faço para usar estas classe?
f-schmitt
Esou tentando usar o seu GeradorWSDL (que voce postou lah na pagina 3 deste forum) para gerar as classes do webservice, porem, na hora que executo ele soh cria as classes da “nfestatusservico”. O estranho eh que nao joga nenhum erro.
Ele deveria jogar uma mensagem apos executar cada linha abaixo:
GeradorWSDL gerador = new GeradorWSDL();
gerador.setProperties();
gerador.geraWSDL(nfestatusservico, "nfestatusservico");
gerador.geraWSDL(nfeconsulta, "nfeconsulta");
gerador.geraWSDL(nferecepcao, "nferecepcao");
gerador.geraWSDL(nferetrecepcao, "nferetrecepcao");
gerador.geraWSDL(nfecancelamento, "nfecancelamento");
gerador.geraWSDL(nfeinutilizacao, "nfeinutilizacao");
public void geraWSDL(String wsdl, String pack) {
WSDL2Java.main(new String[] { wsdl, "-o", "src", "-p",
"br.com.minhaempresa.nfe.service." + pack });
System.out.println("*** Geração concluída ***"); // deveria imprimir isso!!!
}
mas nao esta imprimindo.
Tem alguma ideia do que seja?
Ola nobres colegas estou acompanhando esse tópico faz algumas semanas
e por enquanto só estou sugando 
mas agora vou postar tb um problema que estou tendo já vi algo parecido no
tópico mas as solucões propostas nenhuma serviu para mim…
estou enviando o serviço de "nfeStatusServicoNF" aparentimente minha solicitação está certa
mas o servidor persiste em dar a mesma mensagem 243 - Rejeicao: XML Mal Formado
se alguem passou por essa mesma situação e quer compartilhar…fico agradecido…
só para complementar o certificado é de Santa Catarina e estou usando a SEFAZ do Rio Grande do Sul
segue o codigo XML da minha solicitação
//Cabeçario
<?xml version="1.0" encoding="UTF-8"?>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.02">
<versaoDados>1.07</versaoDados>
</nfeCabecMsg>
//Dados
<?xml version="1.0" encoding="UTF-8"?>
<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07" >
<tpAmb>2</tpAmb>
<cUF>42</cUF>
<xServ>STATUS</xServ>
</consStatServ>
//Resposta do servidor
<?xml version="1.0" encoding="utf-8"?>
<retConsStatServ versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>RS20090908084241</verAplic>
<cStat>243</cStat>
<xMotivo>Rejeicao: XML Mal Formado</xMotivo>
<cUF>0</cUF>
<dhRecbto>2009-09-21T17:11:17</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
Ola nobres colegas estou acompanhando esse tópico faz algumas semanas
e por enquanto só estou sugando
mas agora vou postar tb um problema que estou tendo já vi algo parecido no
tópico mas as solucões propostas nenhuma serviu para mim…estou enviando o serviço de "nfeStatusServicoNF" aparentimente minha solicitação está certa
mas o servidor persiste em dar a mesma mensagem 243 - Rejeicao: XML Mal Formadose alguem passou por essa mesma situação e quer compartilhar…fico agradecido…
só para complementar o certificado é de Santa Catarina e estou usando a SEFAZ do Rio Grande do Sulsegue o codigo XML da minha solicitação
//Cabeçario <?xml version="1.0" encoding="UTF-8"?> <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.02"> <versaoDados>1.07</versaoDados> </nfeCabecMsg> //Dados <?xml version="1.0" encoding="UTF-8"?> <consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07" > <tpAmb>2</tpAmb> <cUF>42</cUF> <xServ>STATUS</xServ> </consStatServ> //Resposta do servidor <?xml version="1.0" encoding="utf-8"?> <retConsStatServ versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"> <tpAmb>2</tpAmb> <verAplic>RS20090908084241</verAplic> <cStat>243</cStat> <xMotivo>Rejeicao: XML Mal Formado</xMotivo> <cUF>0</cUF> <dhRecbto>2009-09-21T17:11:17</dhRecbto> <tMed>1</tMed> </retConsStatServ>
String nfeCabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
"<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "+
"versao=\"1.02\">" +
"<versaoDados>1.07</versaoDados>"+
"</cabecMsg>";
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
"<consStatServ " +
" versao=\"1.07\""+
" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"+
"<tpAmb>2</tpAmb>" +
"<cUF>52</cUF>"+
"<xServ>STATUS</xServ>" +
"</consStatServ>";
pois é percebi o erro de ter colocado errado a tag nfeCabecMsg que o certo é cabecMsg
como segue no post do valtemir…mas mesmo assim corrigindo essa parte do codigo
continua voltando o mesmo erro "Rejeicao: XML Mal Formado"
só para esclarecer melhor estou usando axis 1.4 por q vi com ele é possivel
consumir os ws sem precisar ter os wsdl de cada estado fiz isso para generalizar um pouco mais o código.
mas fazendo o teste com axis2 usando as wsdl consegui fazer a solicitação sem problemas mas com axis 1.4 já não foi…
mas percebi visualizando o log gerado pelo axis q o xml com o soap é um pouco diferente entre os gerados com axis 1.4 e axis2 sera q esta ai o problema…??? não posso postar agora o código do xml com o soap por q não me encontro na empresa
mas quando estiver acesso ja posto aqui…
alguem conseguiu fazer a nfe sem as wsdl???
.
Pessoal eu nao to conseguindo nem gerar as classes java a partir do xsd.
Erro:
C:\Documents and Settings\giovanni>“C:/Arquivos de programas/Java/jdk1.6.0_12/bi
n/xjc.exe” “C:/Documents and Settings/giovanni/Desktop/jnfe/impl/PL_005d” -d “D:
/Documentos/CODEBASICPLUS/CODEBASICPLUS2/Nfe/” -p br.com.codesoftwares.nfe.bean
parsing a schema…
[ERROR] ‘TEndereco’ is already defined
line 3645 of file:/C:/Documents%20and%20Settings/giovanni/Desktop/jnfe/impl/PL
_005d/leiauteNFe_v1.10.xsd
[ERROR] (related to above error) the first definition appears here
line 235 of file:/C:/Documents%20and%20Settings/giovanni/Desktop/jnfe/impl/PL_
005d/leiauteConsultaCadastro_v1.01.xsd
Failed to parse a schema.
C:\Documents and Settings\giovanni>“C:/Arquivos de programas/Java/jdk1.6.0_12/bi
n/xjc.exe” -version
xjc version "JAXB 2.1.3 in JDK 1.6"
JavaTM Architecture for XML Binding(JAXB) Reference Implementation, (build JAXB
2.1.3 in JDK 1.6)
Se der para dar alguma ajudinha.
Estou com esse erro ao tentar acessar os Web Services passando por um proxy:
[color=red]
com.sun.xml.internal.ws.wsdl.parser.InaccessibleWSDLException: 2 counts of InaccessibleWSDLException.
java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 407 Proxy Authentication Required"
java.io.IOException: Unable to tunnel through proxy. Proxy returns “HTTP/1.0 407 Proxy Authentication Required”
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:146)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:122)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:226)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:189)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:159)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:81)
at javax.xml.ws.Service.(Service.java:56)
at br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico.(NfeStatusServico.java:44)
at Main.main(Main.java:35)
[/color]
Código da classe:
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoNF;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoSoap;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.ObjectFactory;
import java.net.URL;
import java.security.Security;
import javax.xml.namespace.QName;
public class Main {
public static void main(String... args) {
try {
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "c:\\homologa_SP"); // Arquivo gerado com o InstallCert
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "c:\\NFe emissao.pfx"); // o arquivo com o certificado do emitente
System.setProperty("javax.net.ssl.keyStorePassword", "senhaCertificado"); // a senha do arquivo
System.setProperty("https.proxyHost", "192.168.1.254");
System.setProperty("https.proxyPort", "5981");
System.setProperty("https.proxyUser", "usuarioProxy");
System.setProperty("https.proxyPassword", "senhaProxy");
NfeStatusServicoNF status = new ObjectFactory().createNfeStatusServicoNF();
status.setNfeCabecMsg("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.02\"><versaoDados>1.07</versaoDados></cabecMsg>");
status.setNfeDadosMsg("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.07\"><tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ>");
NfeStatusServico service = new NfeStatusServico(new URL("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico.asmx "), new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico", "NfeStatusServico"));
NfeStatusServicoSoap soap = service.getNfeStatusServicoSoap();
String result = soap.nfeStatusServicoNF(status.getNfeCabecMsg(), status.getNfeDadosMsg());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Quando a conexão é direta (sem proxy) funciona perfeitamente.
alguém implementou o DPEC??
criei um tópico http://www.guj.com.br/posts/list/140891.java
se puderem dar uma força… agradeço…
gilmaslima, tem um esquema que vc faz com o SSL que ele autentica no proxy, se vc pesquisar sobre javamail vc encontra
na época eu estava fazendo um aplicativo que entrava na caixa de email e acabei vendo isso
Vim até aqui para agradecer a comunidade GUJ pela ajuda dada ao decorrer do desenvolvimento do projeto da NFe
graças a participação de todos aqui consegui finalizar todas as etapas…
então como gratidão me disponibilizo para qualquer um aqui q tenha alguma duvida referente a alguma etapa
na geração da NFe…
e ja dando um dica o usuario f-schmitt tem varios posts bem interessantes sobre a NFe aproveitei muitas coisas dele…
mas vlw abraços para todos fiquem com DEUS
=]
Vim até aqui para agradecer a comunidade GUJ pela ajuda dada ao decorrer do desenvolvimento do projeto da NFe
graças a participação de todos aqui consegui finalizar todas as etapas…então como gratidão me disponibilizo para qualquer um aqui q tenha alguma duvida referente a alguma etapa
na geração da NFe…e ja dando um dica o usuario f-schmitt tem varios posts bem interessantes sobre a NFe aproveitei muitas coisas dele…
mas vlw abraços para todos fiquem com DEUS
=]
implementou o DPEC?
Olá pessoal, estou fazendo o DPEC
logo vou participar do topico que foi aberto
abraço!
Vim até aqui para agradecer a comunidade GUJ pela ajuda dada ao decorrer do desenvolvimento do projeto da NFe
graças a participação de todos aqui consegui finalizar todas as etapas…então como gratidão me disponibilizo para qualquer um aqui q tenha alguma duvida referente a alguma etapa
na geração da NFe…e ja dando um dica o usuario f-schmitt tem varios posts bem interessantes sobre a NFe aproveitei muitas coisas dele…
mas vlw abraços para todos fiquem com DEUS
=]
implementou o DPEC?
O modelo de contingência não sera implementado por enquanto aqui por nós…
Olá Boa Tarde a todos!
Comecei a trabalhar com a nfe a pouco tempo mas ja consegui fazer a consulta ao Status do Serviço o tutorial que encontrei aqui http://www.guj.com.br/posts/list/15/52035.java foi de grande ajuda mas como nem tudo é perfeito estou começando a ter problemas, parti para a consulta de cadastro do contribuinte e tentei seguir mais ou menos os mesmos passos mas agora ele apresenta o seguinte erro:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
faultActor:
faultNode:
faultDetail:
esta ligado a algum problema no certificado digital… blz agora vem as minhas duvidas se alguma boa alma puder ajudar…
eu acredito q o meu problema esta na keystore (veja bem acredito não tenho certeza) neste tutorial q foi criado ele ensina como cria-la fiz como esta descrito e é gerado o .keystore só q eu vejo q em alguns trechos de cód. as pessoas usarem um arq .jks qual a diferença? o meu .keystore não funciona? se não como faço para gerar este tal .jks eu vi em outros posts explicando mas eles dizem q deve ser gerado a partir de um .pfx o certificado da empresa aqui é um .pfx mas o q vem la da sefaz é um .p7b…
outra coisa eu percebi q para a consulta do status de serviço eu posso comentar todas estas linhas q continua funcionando:
System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS12”);
System.setProperty(“javax.net.ssl.keyStore”, caminhoPfx);
System.setProperty(“javax.net.ssl.keyStorePassword”, senhaPfx);
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, caminhoKeyStore);
é como se para o status não precisa-se de uma validaçao de certificado mas para a consulta de cadastro de contribuinte sim…
Alguem pode me ajudar ou pelo menos me dar um caminho se pelo menos der uma maior explicação ja agradeço, desde ja muito grato
Olá Boa Tarde a todos!Comecei a trabalhar com a nfe a pouco tempo mas ja consegui fazer a consulta ao Status do Serviço o tutorial que encontrei aqui http://www.guj.com.br/posts/list/15/52035.java foi de grande ajuda mas como nem tudo é perfeito estou começando a ter problemas, parti para a consulta de cadastro do contribuinte e tentei seguir mais ou menos os mesmos passos mas agora ele apresenta o seguinte erro:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
faultActor:
faultNode:
faultDetail:esta ligado a algum problema no certificado digital… blz agora vem as minhas duvidas se alguma boa alma puder ajudar…
eu acredito q o meu problema esta na keystore (veja bem acredito não tenho certeza) neste tutorial q foi criado ele ensina como cria-la fiz como esta descrito e é gerado o .keystore só q eu vejo q em alguns trechos de cód. as pessoas usarem um arq .jks qual a diferença? o meu .keystore não funciona? se não como faço para gerar este tal .jks eu vi em outros posts explicando mas eles dizem q deve ser gerado a partir de um .pfx o certificado da empresa aqui é um .pfx mas o q vem la da sefaz é um .p7b…
outra coisa eu percebi q para a consulta do status de serviço eu posso comentar todas estas linhas q continua funcionando:System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS12”); System.setProperty(“javax.net.ssl.keyStore”, caminhoPfx); System.setProperty(“javax.net.ssl.keyStorePassword”, senhaPfx);
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, caminhoKeyStore);é como se para o status não precisa-se de uma validaçao de certificado mas para a consulta de cadastro de contribuinte sim…
Alguem pode me ajudar ou pelo menos me dar um caminho se pelo menos der uma maior explicação ja agradeço, desde ja muito grato
tenta baixar a cadeia de certificados da sefaz q vc esta utilizando e cria um jks…
eu particulamente usei um codigo postado pelo f-schmitt eu não tenho certeza mas acho q foi ele…
package rj.nfe.engine.webservice;
import java.io.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
public class InstallCert {
public static void main(String[] args) throws Exception
{
System.out.println("Aqui: "+args[0]);
String host;
int port;
char[] passphrase;
if ((args.length == 1) || (args.length == 2))
{
String[] c = args[0].split(":");
host = c[0];
port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
String p = (args.length == 1) ? "changeit" : args[1];
passphrase = p.toCharArray();
}
else
{
System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");
return;
}
File file = new File("jssecacerts");
if (file.isFile() == false)
{
char SEP = File.separatorChar;
File dir = new File(System.getProperty("java.home") + SEP + "'lib" + SEP + "security");
file = new File(dir, "jssecacerts");
if (file.isFile() == false)
{
file = new File(dir, "cacerts");
}
}
System.out.println("Loading KeyStore " + file + "...");
InputStream in = new FileInputStream(file);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(in, passphrase);
in.close();
SSLContext context = SSLContext.getInstance("TLS");
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];
SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
context.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory factory = context.getSocketFactory();
System.out.println("Opening connection to " + host + ":" + port + "...");
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setSoTimeout(10000);
try
{
System.out.println("Starting SSL handshake...");
socket.startHandshake();
System.out.println();
System.out.println("No errors, certificate is already trusted");
}
catch (SSLException e)
{
System.out.println();
e.printStackTrace(System.out);
}
X509Certificate[] chain = tm.chain;
if (chain == null)
{
System.out.println("Could not obtain server certificate chain");
return;
}
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println();
System.out.println("Server sent " + chain.length + " certificate(s):");
System.out.println();
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
MessageDigest md5 = MessageDigest.getInstance("MD5");
for (int i = 0; i < chain.length; i++)
{
X509Certificate cert = chain[i];
System.out.println(" " + (i + 1) + " Subject " + cert.getSubjectDN());
System.out.println(" Issuer " + cert.getIssuerDN());
sha1.update(cert.getEncoded());
System.out.println(" sha1 " + toHexString(sha1.digest()));
md5.update(cert.getEncoded());
System.out.println();
}
System.out.println(" md5 " + toHexString(md5.digest()));
System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
String line = reader.readLine().trim();
int k;
try
{
k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
}
catch (NumberFormatException e)
{
System.out.println("KeyStore not changed");
return;
}
X509Certificate cert = chain[k];
String alias = host + "-" + (k + 1);
ks.setCertificateEntry(alias, cert);
OutputStream out = new FileOutputStream("jssecacerts");
ks.store(out, passphrase);
out.close();
System.out.println();
System.out.println(cert);
System.out.println();
System.out.println("Added certificate to keystore 'jssecacerts' using alias '" + alias + "'");
}
private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();
private static String toHexString(byte[] bytes)
{
StringBuilder sb = new StringBuilder(bytes.length * 3);
for (int b : bytes)
{
b &= 0xff;
sb.append(HEXDIGITS[b >> 4]);
sb.append(HEXDIGITS[b & 15]);
sb.append(' ');
}
return sb.toString();
}
private static class SavingTrustManager implements X509TrustManager
{
private final X509TrustManager tm;
private X509Certificate[] chain;
SavingTrustManager(X509TrustManager tm)
{
this.tm = tm;
}
public X509Certificate[] getAcceptedIssuers()
{
throw new UnsupportedOperationException();
}
public void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException
{
throw new UnsupportedOperationException();
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException
{
this.chain = chain;
tm.checkServerTrusted(chain, authType);
}
}
}
//Aqui está a chamada para o código acima
InstallCert.main(new String[] {new String("homologacao.nfe.sefaz.rs.gov.br") });
para
ai segue o codigo q baixa a cadeia de certificado automaticamente…
se der certo posta ai
Obrigado Alex por indicar o caminho com a sua classe InstallCert eu não consegui rodar dava o seguinte erro:
Aqui: <a href="http://homologacao.nfe.fazenda.sp.gov.br">homologacao.nfe.fazenda.sp.gov.br</a>
Loading KeyStore C:\Arquivos de programas\Java\jre6’lib\security\cacerts…
Exception in thread “main” java.io.FileNotFoundException: C:\Arquivos de programas\Java\jre6’lib\security\cacerts (O sistema não pode encontrar o caminho especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(Unknown Source)
at InstallCert.main(InstallCert.java:42)
mas eu encontrei a mesma classe InstallCert em outro site (http://amargarido.wordpress.com/2009/06/14/parte-2-consulta-cnpjnf-e-tutorial/) ai foi, eu nem fiquei olhando as diferenças q tem entre as nas duas pq só fui conseguir agora e não importa tb… mas continuando eu consegui gerar o arq jssecacerts e agora vem mais duvidas rs (desculpa sou leigo estou correndo atras pra fazer saiu a consulta de status agora vou atras deste outro) este arq jssecacerts eu tenho q substitui-lo no lugar do cacerts? estou perguntando pq segundo o tutorial deste site q indiquei ai em cima ele diz "Copiei o meu novo jssecacerts sobre o cacerts " ta blz eu tentei deixar os dois ou só com um mas ainda não foi… da o mesmo erro de validação do certificado.
Eu indiquei la o caminho deste jssecacerts aqui:
System.setProperty(“javax.net.ssl.trustStore”, caminhoJssecacerts); mas acho q não é isso… eu fiquei ainda na duvida do .jks eu achava q seria esta classe q vc me passou q iria criaria-lo mas não foi, desculpa a minha ignorancia se for o caso mas eu não deveria cria-lo? Bom se puder me ajudar novamente agradeço muito, a sua resposta me ajudou a descobrir o caminho anteriormente se puder de novo…
Me deparei com este problema tambem. O XML contem a NFe ja autorizada e o protocolo compondo o nfeProc cfe
manual.
Porem, ao ser visualizado pelo “Visualizador NFeCTe 4.0a”, diz que a assinatura da NFe é invalida.
Liguei pro 0800 e me deram a super ideia de olhar no manual de integracao 4.00 
Em tempo, o validador de mensagens da SEFAZ/RS diz que a assinatura é valida, o conteudo esta ok, etc…
No aguardo de algum retorno.
Alencar
Obrigado Alex por indicar o caminho com a sua classe InstallCert eu não consegui rodar dava o seguinte erro:Aqui: <a href="http://homologacao.nfe.fazenda.sp.gov.br">homologacao.nfe.fazenda.sp.gov.br</a> Loading KeyStore C:\Arquivos de programas\Java\jre6’lib\security\cacerts… Exception in thread “main” java.io.FileNotFoundException: C:\Arquivos de programas\Java\jre6’lib\security\cacerts (O sistema não pode encontrar o caminho especificado) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at InstallCert.main(InstallCert.java:42)mas eu encontrei a mesma classe InstallCert em outro site (http://amargarido.wordpress.com/2009/06/14/parte-2-consulta-cnpjnf-e-tutorial/) ai foi, eu nem fiquei olhando as diferenças q tem entre as nas duas pq só fui conseguir agora e não importa tb… mas continuando eu consegui gerar o arq jssecacerts e agora vem mais duvidas rs (desculpa sou leigo estou correndo atras pra fazer saiu a consulta de status agora vou atras deste outro) este arq jssecacerts eu tenho q substitui-lo no lugar do cacerts? estou perguntando pq segundo o tutorial deste site q indiquei ai em cima ele diz "Copiei o meu novo jssecacerts sobre o cacerts " ta blz eu tentei deixar os dois ou só com um mas ainda não foi… da o mesmo erro de validação do certificado.
Eu indiquei la o caminho deste jssecacerts aqui:
System.setProperty(“javax.net.ssl.trustStore”, caminhoJssecacerts); mas acho q não é isso… eu fiquei ainda na duvida do .jks eu achava q seria esta classe q vc me passou q iria criaria-lo mas não foi, desculpa a minha ignorancia se for o caso mas eu não deveria cria-lo? Bom se puder me ajudar novamente agradeço muito, a sua resposta me ajudou a descobrir o caminho anteriormente se puder de novo…
Eita que o InstallCert ficou famoso hehehe, foi uma adaptação de uma classe da sun q encontrei
O jssecacerts não deve substituir no cacerts, ali é cada um no seu quadrado…
Uma coisa que me chamou a atenção foi o 'lib
é C:\Arquivos de programas\Java\jre6’lib\security\cacerts
ou C:\Arquivos de programas\Java\jre6\lib\security\cacerts
abraço
Fernando
Me deparei com este problema tambem. O XML contem a NFe ja autorizada e o protocolo compondo o nfeProc cfe
manual.
Porem, ao ser visualizado pelo “Visualizador NFeCTe 4.0a”, diz que a assinatura da NFe é invalida.
Liguei pro 0800 e me deram a super ideia de olhar no manual de integracao 4.00
Alencar
Incrivel! Enquanto procurava pela solucao do problema, uma nova versao do visualizador (4.0b) foi disponibilizada
resolvendo o erro.
Eita pessoal eficiente. :lol:
Alencar
Incrivel! Enquanto procurava pela solucao do problema, uma nova versao do visualizador (4.0b) foi disponibilizada
resolvendo o erro.
Eita pessoal eficiente. :lol:Alencar
Haaa, eles devem estar acompanhando o forum… 8)
Incrivel! Enquanto procurava pela solucao do problema, uma nova versao do visualizador (4.0b) foi disponibilizada
resolvendo o erro.
Eita pessoal eficiente. :lol:Alencar
Haaa, eles devem estar acompanhando o forum… 8)
Ou algumas centenas de ligacoes pro 0800…
A correcao do bug foi tao as pressas que esqueceram de alterar a versao no “Sobre”.
“Visualizador de Documentos Fiscais Eletrônicos - versão 4.0a”
Caso eles estejam acompanhando este forum, deve sair a versão 4.0c corrigindo a correcao.
Alencar
Obrigado Alex por indicar o caminho com a sua classe InstallCert eu não consegui rodar dava o seguinte erro:Aqui: <a href="http://homologacao.nfe.fazenda.sp.gov.br">homologacao.nfe.fazenda.sp.gov.br</a> Loading KeyStore C:\Arquivos de programas\Java\jre6’lib\security\cacerts… Exception in thread “main” java.io.FileNotFoundException: C:\Arquivos de programas\Java\jre6’lib\security\cacerts (O sistema não pode encontrar o caminho especificado) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at InstallCert.main(InstallCert.java:42)mas eu encontrei a mesma classe InstallCert em outro site (http://amargarido.wordpress.com/2009/06/14/parte-2-consulta-cnpjnf-e-tutorial/) ai foi, eu nem fiquei olhando as diferenças q tem entre as nas duas pq só fui conseguir agora e não importa tb… mas continuando eu consegui gerar o arq jssecacerts e agora vem mais duvidas rs (desculpa sou leigo estou correndo atras pra fazer saiu a consulta de status agora vou atras deste outro) este arq jssecacerts eu tenho q substitui-lo no lugar do cacerts? estou perguntando pq segundo o tutorial deste site q indiquei ai em cima ele diz "Copiei o meu novo jssecacerts sobre o cacerts " ta blz eu tentei deixar os dois ou só com um mas ainda não foi… da o mesmo erro de validação do certificado.
Eu indiquei la o caminho deste jssecacerts aqui:
System.setProperty(“javax.net.ssl.trustStore”, caminhoJssecacerts); mas acho q não é isso… eu fiquei ainda na duvida do .jks eu achava q seria esta classe q vc me passou q iria criaria-lo mas não foi, desculpa a minha ignorancia se for o caso mas eu não deveria cria-lo? Bom se puder me ajudar novamente agradeço muito, a sua resposta me ajudou a descobrir o caminho anteriormente se puder de novo…
Só lembrando q o código do “InstallCert” postado por mim foi pego em um post do f-schmitt…e complementando o que ele falou cacerts não deve ser sobrescrito pelo jssecacerts
tendo só o jssecacerts vc ja consegue fazer a comunicação com a receita
vou passar alguns passos aqui vamos ver se vai ajudar vc
//primeira parte obrigatório tanto para certificado A1 quanto para o A3
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");//caminho do arquivo criado pelo o InstallCert no caso o jssecacerts
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
//caso vc esteja usando tipo de certificado A1 vc usa esse trecho de código
//INICIO DO TIPO A1
System.setProperty("javax.net.ssl.keyStore", "CAMINHO DO ARQUIVO .PFX");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStorePassword", "SENHA DO CERTIFICADO");
//FIM DO TIPO A1
//caso vc esteja usando tipo de certificado A3 vc usa esse trecho de código
//INICIO DO TIPO A3
Provider provider = new sun.security.pkcs11.SunPKCS11("CAMINHO DO ARQUIVO DE CONFIGURAÇÃO DO SMARTCARD");
Security.addProvider(provider);
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SmartCard");
System.setProperty("javax.net.ssl.keyStorePassword", "SENHA DO CERTIFICADO");
//FIM DO TIPO A3
de preferência faz um ifzinho para dar suporte aos 2 tipos de certificados =)
espero ter ajudado
Obrigado Alex por indicar o caminho com a sua classe InstallCert eu não consegui rodar dava o seguinte erro:Aqui: <a href="http://homologacao.nfe.fazenda.sp.gov.br">homologacao.nfe.fazenda.sp.gov.br</a> Loading KeyStore C:\Arquivos de programas\Java\jre6’lib\security\cacerts… Exception in thread “main” java.io.FileNotFoundException: C:\Arquivos de programas\Java\jre6’lib\security\cacerts (O sistema não pode encontrar o caminho especificado) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at InstallCert.main(InstallCert.java:42)mas eu encontrei a mesma classe InstallCert em outro site (http://amargarido.wordpress.com/2009/06/14/parte-2-consulta-cnpjnf-e-tutorial/) ai foi, eu nem fiquei olhando as diferenças q tem entre as nas duas pq só fui conseguir agora e não importa tb… mas continuando eu consegui gerar o arq jssecacerts e agora vem mais duvidas rs (desculpa sou leigo estou correndo atras pra fazer saiu a consulta de status agora vou atras deste outro) este arq jssecacerts eu tenho q substitui-lo no lugar do cacerts? estou perguntando pq segundo o tutorial deste site q indiquei ai em cima ele diz "Copiei o meu novo jssecacerts sobre o cacerts " ta blz eu tentei deixar os dois ou só com um mas ainda não foi… da o mesmo erro de validação do certificado.
Eu indiquei la o caminho deste jssecacerts aqui:
System.setProperty(“javax.net.ssl.trustStore”, caminhoJssecacerts); mas acho q não é isso… eu fiquei ainda na duvida do .jks eu achava q seria esta classe q vc me passou q iria criaria-lo mas não foi, desculpa a minha ignorancia se for o caso mas eu não deveria cria-lo? Bom se puder me ajudar novamente agradeço muito, a sua resposta me ajudou a descobrir o caminho anteriormente se puder de novo…Eita que o InstallCert ficou famoso hehehe, foi uma adaptação de uma classe da sun q encontrei
O jssecacerts não deve substituir no cacerts, ali é cada um no seu quadrado…
Uma coisa que me chamou a atenção foi o 'lib
é C:\Arquivos de programas\Java\jre6’lib\security\cacerts
ou C:\Arquivos de programas\Java\jre6\lib\security\cacertsabraço
Fernando
De fato tirando a ’ a classe q ele me passou tb funciona… mas assim e agora o q faço com este arq jssecacerts? o q devo indicar aqui
System.setProperty(“javax.net.ssl.trustStore”, ???);
é bem isso, deixa o servidor como confiável, assim o SSL acessa, conforme o post anterior do alexborges.
Fernando
De fato tirando a ’ a classe q ele me passou tb funciona… mas assim e agora o q faço com este arq jssecacerts? o q devo indicar aqui
System.setProperty(“javax.net.ssl.trustStore”, ???);
O InstallCert só precisa ser executado 1 vez para baixar o arquivo jssecacerts
Funcionou!!! hahahaha aleluia.
Bom vou dizer o meu possivel vacilo pode ter algum cabeçudo q nem eu rs… na hora de gerar o jssecacerts ele te da 3 opções eu estava sempre dando um enter direto ou colocava 1 e ai nunca funcionava até q parei pra ler tudo e percebi q ele te da tres opções e ai testei com o 2 e foi… quando funcionou para testar eu coloquei de novo o q foi gerado pela primeira opção e voltou a dar erro vou até colocar a saida aqui rs fiquei 2 dias tentando fazer funcionar rs
<?xml version="1.0" encoding="UTF-8" ?>- SP_NFE_PL_005d 260 Rejeição: IE da consulta inválida SP 123456789012 2009-10-22T10:51:02 35
Bom agradeço a todos, valeu mesmo pela paciencia um abraço!
public void statusServico() {
String nfeCabecMsg = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" " + "versao=\"1.02\">" +
" <versaoDados>" + ValidarXML.VERSAO_STATUS + "</versaoDados>" +
"</cabecMsg>";
String nfeDadosMsg = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<consStatServ " + " versao=\"" + ValidarXML.VERSAO_STATUS + "\"" + " xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
"<tpAmb>2</tpAmb>" +
"<cUF>35</cUF>" + /* SP = 35 */
"<xServ>STATUS</xServ>" +
"</consStatServ>";
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:\\Projetos\\Desktop\\KNFe\\Associacao.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "associacao");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\Projetos\\Desktop\\KNFe\\nfe.keystore");
NfeStatusServico service = new NfeStatusServico();
try {
NfeStatusServicoSoap nfeStatus = service.getNfeStatusServicoSoap();
// O retorno deve ser um XML com o status do serviço
System.out.println(nfeStatus.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg));
} catch (Throwable ex) {
System.out.println("Erro status serviço: " + ex.getMessage());
}
}
Instale este certificado no seu navegador e tente acessar este endereco:
https://homologacao.nfe.sefaz.rs.gov.br/ws/nferecepcao/NfeRecepcao.asmx?wsdl
Se conseguir o certificado esta ok. Se nao, vai te dar o mesmo erro de forbidden.
Alencar
Instalei e continua dando o erro de Forbiden.
Verifiquei que o certificado vence em 2 de outubro de 2010, era para pelo menos conseguir verificar o status do serviço com ele, já que enviar nota não é possível, embora eu ache que para o ambiente de teste deveria poder enviar com um certificado de testes, depois era só trocar por um certificado verdadeiro e trabalhar no ambiente normal.
Instalei e continua dando o erro de Forbiden.Verifiquei que o certificado vence em 2 de outubro de 2010, era para pelo menos conseguir verificar o status do serviço com ele, já que enviar nota não é possível, embora eu ache que para o ambiente de teste deveria poder enviar com um certificado de testes, depois era só trocar por um certificado verdadeiro e trabalhar no ambiente normal.
Provavelmente este certificado nao é do tipo autenticacao.
Alencar
Pessoal, vocês já receberam essa resposta:
?
essa nunca vi…
é um certificado válido ICP Brasil?
Isso deve ter acontecido devido a problemas com o CNPJ informado!
Att
essa nunca vi…é um certificado válido ICP Brasil?
Olha, é um certificado comprado só pra isso.
Como posso verificar essa informação? Tem isso dentro dele?
Edit: Foi comprado na CertiSign, é chamado de Certificado Digital NF-e Pessoal Juridiaca Tipo A1.
se é um certificado para NFe mesmo, então não deve haver erro,
você pode add ele no navegador e testar no site da Certisign
att
Fernando Schmitt Daufemback
aqui em SC quando da a msg de CNPJ do emitente não cadastrado, é porque ainda não foi feito o pedido de emissão de NFe junto a SEFAZ, aqui chamam de TTD, Tratamento Tributário Diferenciado.
att
Fernando Schmitt Daufemback
aqui em SC quando da a msg de CNPJ do emitente não cadastrado, é porque ainda não foi feito o pedido de emissão de NFe junto a SEFAZ, aqui chamam de TTD, Tratamento Tributário Diferenciado.att
Fernando Schmitt Daufemback
O mais estranho é que esse certificado já é utilizado por outro sistema para a emissão.
Eu to fazendo um client webservice para realizar consulta do cadastro.
Mas não tá rolando …
Galera to com um probleminha aqui na geração do digito verificador do código de barras do danfe, eu fiz os calculos e tal, mas quando divido o valor das operações por 11 sempre recebo uma dizima periodica, esta resultado creio eu que deva ser arredondado pra usar na subtração por 11 e obter o digito verificador…
alguem sabe qual o critério para arredondar esse número??
Eu criei esse método para calcular o dígito, eu passo a chave de acesso e ele retorna o dígito:
public static String getDigitosChaveAcessoNFe(String chave) {
int peso[] = new int[]{2, 3, 4, 5, 6, 7, 8, 9};
char[] numeros = chave.toCharArray();
int totalNumeros = numeros.length;
//System.out.println("quantos numeros = " + totalNumeros);
int contaPeso = 0;
int somaPonderacao = 0;
for (int i = totalNumeros - 1; i >= 0; i--) {
int numero = Integer.parseInt(numeros[i] + "");
//System.out.println("Numero = " + numero);
int ponderacao = numero * (peso[contaPeso]);
//System.out.println("Ponderacao = " + ponderacao);
somaPonderacao = somaPonderacao + ponderacao;
contaPeso++;
if (contaPeso > 7) {
contaPeso = 0;
}
}
//System.out.println("Soma Ponderacao = " + somaPonderacao);
int resto = (somaPonderacao % 11);
//System.out.println("Resto = " + resto);
int digito = 0;
if (resto == 0 || resto == 1) {
digito = 0;
} else {
digito = 11 - resto;
}
return digito + "";
}Veja se te ajuda, tente passar a chave de acesso e veja o resultado.
vlw amigo, amanha cedo quando chegar no trabalho irei testar seu algoritmo 
aqui em SC quando da a msg de CNPJ do emitente não cadastrado, é porque ainda não foi feito o pedido de emissão de NFe junto a SEFAZ, aqui chamam de TTD, Tratamento Tributário Diferenciado.att
Fernando Schmitt Daufemback
O mais estranho é que esse certificado já é utilizado por outro sistema para a emissão.
Eu to fazendo um client webservice para realizar consulta do cadastro.
Mas não tá rolando …
Será que seu Assinador não está com problema? a assinatura no xml deve conter o certificado…
agora preciso testar a jossa toda, o certificado digital para homologação no servidor da sefaz PR, eu vou ter que comprar isso, ou existe algum certificado pra testes de sistemas?
para fazer assinatura digital até pode usar um certificado que tem por ai, mas para testar o acesso ao webservice somente com certificado válido…
[size=9]att
Fernando Schmitt Daufemback[/size]
O pior é que isso é realmente a pura verdade, o que é um absurdo, uma vez que existe o ambiente de homologação então poderia poder usar o certificado de testes também para enviar, sendo que o ambiente apenas poderia dar uma “resposta” e descartar o que foi enviado.
Eu tenho alguns sistemas que vão precisar usar a NFe, estou com o módulo inteiro pronto mas ainda não testei o envio somente porque meus clientes ainda não me passaram o certificado digital.
aqui ta praticamente pronto, faltam alguns ajustes, e a integração com o erp visto que eu desenvolvi como uma biblioteca pra poder usar em outros projetos :D…
sacanagem comprar certificado pra testes :evil:
é verdade
Tenho um módulo pronto aqui tbm, fácil de integrar com qualquer ERP. Todas as funções da NFe, ficou show, já está rodando na Samsung e outras empresas, e em Software Houses tbm…
Meus caros, estou com um grande pepino.
Nunca utilizei o java para algo maior que um “Hello word”, mas tenho um bom conhecimento em php e python, e essa semana fui informado que deverei implementar a NFe em java, para integrar ao ERP da empresa. Como não estou ambientado ao mundo java estou passando um grande trabalho.
Com o ajuda do fórum já avancei bastante em relação a linguagem java e NFe.
Já consegui criar um xml, o cabeçalho. Para isso utilizei netbeans e Jabx, que criou automaticamente classes que estou utilizando para gerar os xmls .
Gostaria de saber se esse é o melhor caminho, se posso ter problemas se continuar neste caminho, ou se o idéia é utilizar o Xstream ou ainda fazer tudo no braço. Pergunto isso pq ví muita gente falando dos problemas dos shemas.
Grato.
cara, aqui pra geração do xml eu usei o xstream com annotations, foi super tranquilo :D, agora vou escrever uma versao em python, e irei usar um modulo python chamado de kid, que usa templates =D
Gente com Algum de vocês deu esse erro ?
10/12/2009 12:06:02 org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
Está faltando colocar os certificados do servidor em um truststore e adiciona-los como trusted antes de fazer a conexão…
att
Fernando Schmitt Daufemback
Mais Eu Fiz Isso.
só que estou sem consegui executar a linha Security.addProvider
Será que pode ser issoSystem.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
//new com.sun.net.ssl.internal.ssl.Provider();
//Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStore", "C:\\certificado\\jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:\\certificado\\MP.pfx"); // o arquivo com o certificado do emitente
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.out.println(" Propriedade KeyStore "+System.getProperty("javax.net.ssl.keyStore"));
System.out.println("");
System.out.println(" Propriedade TrustStore "+System.getProperty("javax.net.ssl.trustStore"));
System.out.println("");
Opa e ae pessoal. blz… meu primeiro post…
Estou desenvolvendo uma aplicação com Nfe…
eu baixei os schemas e extrai as classes java, criei o webservices, e usei jaxb para gerar o xml.
Por enquanto estou usando um certificado (associacao.pfx) de teste só para assinar… e criei a classe que assina a nota também.
Bom, mas meu xml esta com o cabeçalho incorreto por causa desse ******** jaxb!!
Queria saber se, tirar as anotações das classes dos schemas e tentar gerar o xml passando a classe para o Xtream daria certo??
Meu problema está so na geração do xml por enquanto…
bom cara, o eu nao sei como sao as classes geradas pelo jaxb, mas se forem um bean com annotations, você pode simplesmente adaptar as anotações para que sejam as do xstream…
Alguém ja começou, ou ja terminou de fazer as alterações da versão 4 do manual de integração?!?
Estou estudando as modificações, que me pareceram poucas.
Só tenho dúvida se realmente precisamos alterar o layout da DANFE,
ou podemos usar o layout da versão 3, já que os dados são os mesmos.
Alencar
Pessoal, estou com problemas com a visualização dos dados informados
na tag . Em nenhum dos locais oficiais para validação das NFes,
mostram as informações desta tag.
O conteúdo está no XML, pois a NFe já foi autorizada e o hash do arquivo
bate com o que é informado no site de validação.
Porém, nada do conteúdo desta tag é mostrada, o que leva o cliente a
pensar/indagar/desconfiar que a DANFE não corresponde ao conteúdo
enviado para a SAFEZ.
Estou na luta com o suporte/atendimento dos fiscais, mas está difícil.
Quem mais está nesta briga?
Alencar
Estou estudando as modificações, que me pareceram poucas.
Só tenho dúvida se realmente precisamos alterar o layout da DANFE,
ou podemos usar o layout da versão 3, já que os dados são os mesmos.
Alencar
então cara… como que vc faz a sua comunicação com o ws?
eu passo o xml numa string… e pelo que estou vendo agora… não vai dar para continuar desta forma…
então cara… como que vc faz a sua comunicação com o ws?
eu passo o xml numa string… e pelo que estou vendo agora… não vai dar para continuar desta forma…
Desculpe, não entendi a sua dúvida. Apesar de não ter terminado as alterações e tampouco testado a
comunicação, nada percebi de diferente quanto a comunicação.
Caso queira trocar alguma informação, pode me chamr em pvt. Depois de solucionado, passamos o
resumo para a lista.
Alencar
Revivendo o tópico
alguém conseguiu implementar os novos WebServices??
tentei com o WsImport e ele não gera a parte pra incluir o cabeçalho do SOAP Header e tentei com o Axis2 e não consigo capturar o retorno
Fiz na raça e funcionou, tanto criando o SOAP numa String qto utilizando o java pra fazer o envelope
Com o Axis2, setando o log no modo DEBUG, eu consigo visualizar a mensagem SOAP que o Axis envia e recebe, aparentemente funciona, eu consumo o WebService de Status do Serviço e ele me retorna Serviço em Operação, mas o Result que o Axis gera não consegui obter o retorno
Posta seu codigo
cara… eu consegui usando o Axis2…
criando as classe com o plugin do Eclipse…
como que vc fez para consumir o servico usando o Axis2?
Então, eu consegui usando o Axis2 tbm, mas eu não consigo pegar uma resposta no fim
Fiz uns esquemas doidos e no eu consegui que a resposta fosse gerada corretamente
Não estou achando o código, fiz muitos testes e não cheguei a lugar nenhum
Mas com o axis2, o log4j me dava as mensagens que eram geradas e eu via as respostas corretas lá
NfeStatusServico2Stub.NfeStatusServicoNF2Result result = new NfeStatusServico2Stub().nfeStatusServicoNF2(dados, cabecE);
cheguei até ai, mais o result não possui nenhum método que me retorne uma string com os dados, não encontrei nenhuma maneira de pegar algo
Paaara compilar os WSDL, eu usei uma tarefa no ant que compila usando o WSDL2Java
ta ai ó
NfeConsultaNF2Result result = stub.nfeConsultaNF2(nfeDadosMsg, nfeCabecMsg);
return result.getExtraElement().toString();
veja la dentro da classe que tem uma variavel com o nome localExtraElement
e o método de acesso dela é getExtraElement().
Ola Felipe, eu tbm uso axis2 para consumir meu webservice da receita, mas esse novo webservice ta me tirando o sono, teria como você postar a classe Status do Serviço de NF-e para eu comparar com a minha e ver aonde estou errando.
obrigado
Só isso,
credo e eu quase fazendo na mão, só não testei esse método
Amanhã de manhã eu vou testar ele, tomara que funcione
Vlw
como que vc esta montando o seu nfeDadosMsg?
posta ai e o xml tb…
como que vc esta montando o seu nfeDadosMsg?
posta ai e o xml tb…
Eu uso a Fatory que tem na classe NfeDadosMsg
felipe
o meu codigo está abixo vc poderia me ajudar
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringReader;
import java.security.Security;
import javax.wsdl.Message;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.apache.axis.message.MessageElement;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public class StatusdoServico2 {
public static void main(String[] args) throws XMLStreamException,
ParserConfigurationException, IOException, SAXException {
System.out.println("Teste123");
String nfeCabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "
+ "versao=\"1.02\">" + "<versaoDados>1.07</versaoDados>"
+ "</cabecMsg>";
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">" + "<tpAmb>"
+ "2" + "</tpAmb>" + "<xServ>STATUS</xServ>"
+ "</consStatServ>";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document dados = db.parse(new ByteArrayInputStream(nfeDadosMsg
.getBytes()));
MessageElement[] elements = new MessageElement[1];
elements[0] = new MessageElement(dados.getDocumentElement());
br.com.ns.nfe.hom.NfeStatusServico2.NfeStatusServicoNF2NfeDadosMsg dadosMsg = new br.com.ns.nfe.hom.NfeStatusServico2.NfeStatusServicoNF2NfeDadosMsg();
dadosMsg.set_any(elements);
br.com.ns.nfe.hom.NfeStatusServico2.NFeCabecMsg_VO cab = new br.com.ns.nfe.hom.NfeStatusServico2.NFeCabecMsg_VO();
cab.setCUF("35");
cab.setVersaoDados("2.00");
String emp = "001";
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
/* Certificado Ns */
if (emp.equals("001")) {
System.setProperty("javax.net.ssl.keyStore",
"C:\\Certificado Digital\\Certificado.pfx");// Aqui vem o
// arquivo do
// certificado
System.setProperty("javax.net.ssl.keyStorePassword", "SENHA");// Aqui
// a
// senha
// deste
// certificado
}
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\teste1\\nfe1.jks");
System.out.println("Teste123");
br.com.ns.nfe.hom.NfeStatusServico2.NfeStatusServico2 serv = new br.com.ns.nfe.hom.NfeStatusServico2.NfeStatusServico2Locator();
System.out.println("Teste456");
try {
System.out.println("Teste456");
br.com.ns.nfe.hom.NfeStatusServico2.NfeStatusServico2Soap12 nfeStatus = serv
.getNfeStatusServico2Soap12();
System.out.println("Teste789");
System.out.println(nfeStatus.nfeStatusServicoNF2(dadosMsg));
} catch (Throwable e1) {
e1.printStackTrace();
}
}
}
como que vc esta montando o seu nfeDadosMsg?
posta ai e o xml tb…Eu uso a Fatory que tem na classe NfeDadosMsg
exatamente…
leonardoanselmo2007 , cara… só olhando o dadosMsg.set_any(elements); , é bem provavel que vc gerou as classes
usando o Axis1 e nao o Axis2…
vc esta gerando as classes pelo wizardo do eclipse?
da uma olhada ai http://www.eclipse.org/webtools/community/tutorials/BottomUpAxis2WebService/bu_tutorial.html
mostra como gerar as classes usando o Axis2 com eclipse
Vlw alves.felipe
Agora eu consigo consumir os WebServices com o Axis2, quase q fiz na mão
Vlw alves.felipeAgora eu consigo consumir os WebServices com o Axis2, quase q fiz na mão
Zoren,
Estou com dificuldades para consumir a WebServices, você poderia postar seu código, por favor.
Att
Anderson
Postar o código eu não posso, mas vc pode falar q parte vc está com dificuldades e eu te ajudo
Bom Zoren,
Eu não sei como instanciar as classes de MsgCabec e MsgDados, e como enviar e receber o retorno, ou seja, quase tudo. Apenas consigo mesmo é importar a WSDL com o AXIS2 e ele cria as classes(Stub e etc), só não sei como operar com eles.
Obrigado
Atenciosamente
Anderson
Bom dia,
Pessoal qd eu vou consumir meu webservice esta dando o seguinte erro :Exception in thread "main" java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement nfeCabecMsg
o meu codigo esta abixo que puder me ajudar:
public class teste {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
System.out.println("Teste123");
// String nfeCabecMsg = “<?xml version="1.0" encoding="UTF-8"?>”
// + "<nfeCabecMsg xmlns=“<a href="http://www.portalfiscal.inf.br/nfe">http://www.portalfiscal.inf.br/nfe</a>” "
// + “versao=“2.00”>” + “<versaoDados>1.07</versaoDados>”
// + “</nfeCabecMsg>”;
String nfeCabecMsg = “<?xml version="1.0" encoding="UTF-8"?>”
+ "<nfeCabecMsg xmlns=“<a href="http://www.portalfiscal.inf.br/nfe">http://www.portalfiscal.inf.br/nfe</a>” "
+ “versao=“2.00”>” + “<versaoDados>1.07</versaoDados>”
+ “</nfeCabecMsg>”;
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">" + "<tpAmb>"
+ "2" + "</tpAmb>" + "<xServ>STATUS</xServ>"
+ "</consStatServ>";
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",
"C:\\Certificado Digital\\Certificado");// Aqui
// vem
// o
// arquivo
// do
// certificado
// do
// seu
// cliente
System.setProperty("javax.net.ssl.keyStorePassword", "SENHA");// Aqui
// a
// senha
// deste
// certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\teste1\\nfe1.jks");
System.out.println("Teste123");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document cabeca = db.parse(new ByteArrayInputStream(nfeCabecMsg
.getBytes()));
// XMLStreamReader teste = (XMLStreamReader) cabeca;
// FileInputStream fileInputStream = new FileInputStream(fileName);
// XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().
ByteArrayInputStream bais = new ByteArrayInputStream(nfeCabecMsg.getBytes());
XMLStreamReader teste = XMLInputFactory.newInstance().createXMLStreamReader(bais);
// Document dados = db.parse(new ByteArrayInputStream(nfeDadosMsg
// .getBytes()));
// XMLStreamReader teste1 = (XMLStreamReader) dados;
ByteArrayInputStream bais1 = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader teste1 = XMLInputFactory.newInstance().createXMLStreamReader(bais1);
// br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub stub = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub(); // endpoint
NfeCabecMsg cab;
cab = NfeCabecMsg.Factory.parse(teste);
br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeStatusServicoNF2 dado;
dado = NfeStatusServicoNF2.Factory.parse(teste1);
NfeStatusServicoNF2Response result = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub()
.nfeStatusServicoNF2(dado, cab);
System.out.println(result.getNfeStatusServicoNF2Result().getExtraElement().toString());
}
}
vc tem q involver seu xml em um par de tags extra
alguém viu os WS de Goiás??
o end point deles mira num ip local
Esse é o final do arquivo de Goiás, todos estão assim, nem acreditei qdo vi, e olha q euy estava tentando fazer funcionar
Zoren você teria um exemplo.
To meio perdido
muito obrigado.
Alguem ja implementou as alterações do NfeStatusServico2 ?
no webservice antigo para capturar o retorno do SEFAZ usava
System.out.println(nfeStatus.nfeStatusServicoNF(nfeCabecMsg,nfeDadosMsg));
agora nao estou conseguindo obter mais esse resultado alguem tem alguma dica da onde vem a resposta agora ?
Bom galera consegui visualizar a resposto do webservice
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>"+ tpAmb +"</tpAmb>" + "<cUF>" + cod_uf + "</cUF>"
+ "<xServ>STATUS</xServ>" + "</consStatServ>";
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", certificado); //Arquivo Certificado
System.setProperty("javax.net.ssl.keyStorePassword", senha); //Senha do mesmo
NfeCabecMsg nfeCabec = new NfeCabecMsg("35", "2.00");
MessageElement[] m = new MessageElement[1];
Document XMLDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(nfeDadosMsg)));
Element element = XMLDoc.getDocumentElement();
m[0] = new MessageElement(element);
NfeDadosMsg nfedados = new NfeDadosMsg(m);
NfeStatusServicoNF2Result result = nfeStatus.nfeStatusServicoNF2(nfedados);
System.out.println("Resposta: " + result.get_any()[0]);
agora só preciso ajustar algumas coisas no cabeçalho
espero q ajude ( passei o dia todo pra refazer isso rs )
flw
O galera, criei as classes com o axis2 e ele crioi uma classe abstrata e um classes com varias innerClasses tipo, para o cabecalho, dados, e outras coisas a mais…
vc chegaram até ai também?
não sei como utilizar essas classes.
já o exemplo do amigo ai em cima com classes geradas com o axis1 eu fiz funcionar…
Agradeço a ajuda!
JanJan,
Fazer funcionar eu fiz mas ele dá o seguinte erro 242 ou seja inexistencia do cabeçalho, se voce puder me ajudar, eu gostaria.
obrigado.
eu tambem estou com este errro - 242 - Rejeicao: Cabecalho - Falha no Schema XML
a unica referencia que coloquei sobre o cabeçalho é esta
NfeCabecMsg nfeCabec = new NfeCabecMsg(“35”, “2.00”);
alguem sabe o q ta faltando ?
Janjan,
Parece que o axis não da suporte ao soap1.2, ai teria que implementar o axis2, mas se alguem conseguir pode mandar para nós.
obrigado.
leonardoanselmo2007,
mais qdo eu tento gerar as class usando o AXIS 2 fica essa mensagem
The Apache Axis2 Web service runtime does not support the client project NFeServico, tem alguma configuração que eu possa nao ter feito ?
leonardoanselmo2007,mais qdo eu tento gerar as class usando o AXIS 2 fica essa mensagem
The Apache Axis2 Web service runtime does not support the client project NFeServico, tem alguma configuração que eu possa nao ter feito ?
aqui tem um como implementar o Axis2…
essa msg deve ser pq vc não esta usando um projeto web…
manda ai
haha foi mal,
mas era o link que eu ja tinha postado antes…
http://www.eclipse.org/webtools/community/tutorial...is2WebService/bu_tutorial.html
alguém conseguiu pegar os wsdl do SCAN??
https://hom.nfe.fazenda.gov.br/SCAN/NfeCancelamento2/NfeCancelamento2.asmx
· https://hom.nfe.fazenda.gov.br/SCAN/NfeConsulta2/NfeConsulta2.asmx
· https://hom.nfe.fazenda.gov.br/SCAN/NfeInutilizacao2/NfeInutilizacao2.asmx
· https://hom.nfe.fazenda.gov.br/SCAN/NfeRecepcao2/NfeRecepcao2.asmx
· https://hom.nfe.fazenda.gov.br/SCAN/NfeRetRecepcao2/NfeRetRecepcao2.asmx
· https://hom.nfe.fazenda.gov.br/SCAN/NfeStatusServico2/NfeStatusServico2.asmx
sabem se estão certos os endereços?
da tudo que nao existe…
creio que nao seja problema apenas do Axis pois se não desse suporte nao conseguiria retorno do webservice de
242 - Rejeicao: Cabecalho - Falha no Schema XML
minha duvida é , estou mandando os parametros de cUF e versaoDados , para a classe do cabeçalho , mais dpois como se anexa ou envia esse cabeçalho
ou apenas essa class NfeCabecMsg , valida os dados informados e nao precisa fazer nda alem disso ?
mas vc gerou com o Axis 2 ou 1?
no um eu tb nao sabia oq fazer com o cabecalho…
no 2 vc passa o cabecalho na chamado do metodo que vai consumir…
stub.nfeCancelamentoNF2(nfeDados, nfeCabec);
entendi , mais to com problema aqui que nao consigo gerar usando o AXIS2
nem com web service ou web service client
eu uso o eclipse
seguiu aquele tutorial que passei?
o que acontece? qual erro?
entao este link aqui q vc passou
http://www.eclipse.org/webtools/community/tutorial…is2WebService/bu_tutorial.html
nao ta rolando nao , 404 File not found
Pessoal
Gerei as classes com axis2 implementei na hora de executar da o seguinte erro:
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/http/HttpResponseFactory
alguem poderia me ajudar
bom só pra ver se entendi
qdo eu uso o AXIS1 e gero um web service client com a wsdl ele gera as classes
NfeCabecMsg.java
NfeDadosMsg.java
NfeStatusServico2.java
NfeStatusServico2Locator.java
NfeStatusServico2Soap12.java
NfeStatusServico2Soap12Stub.java
NfeStatusServico2NFResult.java
qdo gerei usando o AXIS2
foi gerada as classes
ExtensionMapper.java
NfeCabecMsg.java
NfeCabecMsgE.java
NfeDadosMsg.java
NfeStatusServico2MessageReceiverInOut.java
NfeStatusServico2Skeleton.java
NfeStatusServico2NF2Result.java
bom se for isso msm , o q ja estava ruim agora piorou rsrsrs
Pessoal
Gerei as classes com axis2 implementei na hora de executar da o seguinte erro:Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/http/HttpResponseFactory
alguem poderia me ajudar
cara qual a versao do AXIS 2 vc esta usando… se não me engano a 1.3 não da erros…
Felipe to utilizando a 1.5.1
bom só pra ver se entendiqdo eu uso o AXIS1 e gero um web service client com a wsdl ele gera as classes
NfeCabecMsg.java
NfeDadosMsg.java
NfeStatusServico2.java
NfeStatusServico2Locator.java
NfeStatusServico2Soap12.java
NfeStatusServico2Soap12Stub.java
NfeStatusServico2NFResult.javaqdo gerei usando o AXIS2
foi gerada as classes
ExtensionMapper.java
NfeCabecMsg.java
NfeCabecMsgE.java
NfeDadosMsg.java
NfeStatusServico2MessageReceiverInOut.java
NfeStatusServico2Skeleton.java
NfeStatusServico2NF2Result.javabom se for isso msm , o q ja estava ruim agora piorou rsrsrs
ixe cara… haha acho q piorou mesmo… pq gera 2 classes .java…
NfeStatusServico2CallbackHandler.java
NfeStatusServico2Stub.java
mas dentro da NfeStatusServico2Stub.java tem outras classes estaticas
NfeCabecMsgE
NfeStatusServicoNF2Result
ExtensionMapper
NfeCabecMsg
NfeDadosMsg
tentar baixar as lib que precisa… se nao me engano…
precisa dessa httpcore-4.0-alpha5.jar
e pq essas classes que vc citou nao foi gerada aqui
tem mais alguma lib que tenho q anexar ? useii o AXIS2 1.5.1
qdo vcs geraram o projeto foi usado web services ou web services client
pq no axis1 eu usava web services client para descompactar o wsdl
aceito um passo - a - passo rsrs se possivel rs
cara … vc fez igual os passos do tutorial que passei?
a partir do ítem 21 mostra como montar o client…
Pessoal
Apareceu este erro para mim unable to find valid certification path to requested target eu sei que provavelmente é do certificado digital algume poderia me auxliar a coloca-lo…
Pessoal
Apareceu este erro para mim unable to find valid certification path to requested target eu sei que provavelmente é do certificado digital algume poderia me auxliar a coloca-lo…
no post do rafaelbtz fala como gerar o certificado e setar … http://www.guj.com.br/posts/list/15/52035.java
mas ai o resto …(xml, e modo de consumir o ws) tem que fazer diferente…
Felipe nas notas ficais eletronicas que estão funcionando hoje eu faço assim e funciona normalmente, mas nessa nova versão esta dando erro foi alterado algum certificado?
Bom consegui gerar as classes usando o AXIS2
anteriormente eu usava na minha classe esta chamada
NfeStatusServico2 service = new NfeStatusServico2Locator();
NfeStatusServico2Soap12 nfeStatus = service.getNfeStatusServico2Soap12();
MessageElement[] m = new MessageElement[1];
Document XMLDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(nfeDadosMsg)));
Element element = XMLDoc.getDocumentElement();
m[0] = new MessageElement(element);*/
NfeDadosMsg nfedados = new NfeDadosMsg(m);
NfeStatusServicoNF2Result result = nfeStatus.nfeStatusServicoNF2(nfedados);
/*Mensagem de retorno do webservices*/
System.out.println("Resposta: " + result.get_any()[0]);
como é que fica agora para executar essa chamada
Pessoal estou colocando meu certificado desta forma vc’s saberiam me dizer aonde está o erro:
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",
"[b]C:/Certificado Digital/certificado.pfx[/b]");
System.setProperty("javax.net.ssl.keyStorePassword", "[b]senha[/b]");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore",
"[b]C:/Certificado Digital/certificado.jks[/b]");
sobre o certificado eu sempre usei desta forma aqui
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", certificado); //Arquivo Certificado
System.setProperty("javax.net.ssl.keyStorePassword", senha); //Senha do mesmo
aaa claro… vc tem que importar o certificado de homologação do WS… no meu caso o SVRS
Pessoal estou colocando meu certificado desta forma vc’s saberiam me dizer aonde está o erro:System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); System.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); System.setProperty("javax.net.ssl.keyStore", "[b]C:/Certificado Digital/certificado.pfx[/b]"); System.setProperty("javax.net.ssl.keyStorePassword", "[b]senha[/b]"); System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore", "[b]C:/Certificado Digital/certificado.jks[/b]");</blockquote>Eu tive esse problema também. No meu caso, o erro era porque faltavam certificados no JKS que eu havia gerado. Tente gerar um incluindo todos os certificados que você tiver instalado em seu computador cuja a origem seja Certisign ou Autoridade certificadora brasileira.
Veja esse tópico, talvez te ajude:
http://www.guj.com.br/posts/list/75/52035.java
Quanto ao outro problema do tópico, estou no mesmo ponto que o evandromib .
Gerei as classes com o Axis2, mas não estou entendendo como fazer a chamada para o serviço.
achei este exemplo aqui que é o mais parecido com o q estava mexendo
ByteArrayInputStream baisCab = new ByteArrayInputStream(nfeCabecMsg.getBytes());
XMLStreamReader streamCab = XMLInputFactory.newInstance().createXMLStreamReader(baisCab);
NfeStatusServico2Stub.NfeCabecMsg cabecalho = NfeStatusServico2Stub.NfeCabecMsg.Factory.parse(streamCab);
System.out.println("cUF: " + cabecalho.getCUF());
System.out.println("versaoDados: " + cabecalho.getVersaoDados());
NfeStatusServico2Stub.NfeCabecMsgE cabE = new NfeStatusServico2Stub.NfeCabecMsgE();
cabE.setNfeCabecMsg(cabecalho);
ByteArrayInputStream baisDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(baisDados);
NfeStatusServico2Stub.NfeDadosMsg dado = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(streamDados);
NfeStatusServicoNF2Result result = new NfeStatusServico2Stub().nfeStatusServicoNF2(dado, cabE);
System.out.println(result.getExtraElement().toString());
só que esta me retornando
java.lang.IllegalArgumentException: Namespace URI may not be null
alguem ja viu isso
Pessoal aparentemente funcionou, mas agora ta me retornando Erro 214 - <xMotivo>Rejeição: Tamanho da mensagem excedeu o limite estabelecido</xMotivo>
alguem sabe o que é isso.
obrigado.
Leonardo
leonardoanselmo2007 , como vc fez funcionar ?
to modiciando a classe aqui mais ainda da uns errinhos
segundo o manual de integração sua mensagem de status nao pode ser superior a 500 kb
Eu usei o codigo abaixo, mas me retorna o erro 214 - como se eu tive excedido o tamanho…
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=“2.00"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">"
+ “<tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>”;
// XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(nfeDadosMsg));
ByteArrayInputStream baisDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(baisDados);
System.out.println("Teste ");
NfeDadosMsg dadosMsg = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(dad);
System.out.println("Teste1 ");
NfeStatusServico2Stub.NfeCabecMsg cabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
cabecMsg.setCUF("35");
cabecMsg.setVersaoDados("2.00");
System.out.println("Teste2 ");
NfeCabecMsg0 cabecMsgE = new NfeCabecMsg0();
cabecMsgE.setNfeCabecMsg(cabecMsg);
System.out.println("Teste3 ");
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
System.out.println("Teste4 ");
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",
"C:/Certificado Digital/Certificadopfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore",
"C:/Certificado Digital/nfe1.jks");
System.out.println(stub.nfeStatusServicoNF2(dadosMsg, cabecMsgE)
.getExtraElement());
System.out.println("Teste5");
}
Alguem poderia me ajudar…
O unico erro que achei no seu código foi onde você escreveu
NfeCabecMsg0 cabecMsgE = new NfeCabecMsg0();
e deveria ser
NfeCabecMsgE cabecMsgE = new NfeCabecMsgE();
a variável nfeDadosMsg não esta recebendo nada antes dessa rotina? talvez por isso exceda o tamanho.
Eu faço assim com o códigonfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<dummy>"
+ "<consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>" + strTipoAmbiente + "</tpAmb>"
+ "<cUF>" + strUF + "</cUF>" + "<xServ>STATUS</xServ>"
+ "</consStatServ>"
+ "</dummy>"; //Necessario colocar a tag 'dummy' para enganar o XMLReader.
try
{
NfeCabecMsg nfeCabec = new NfeCabecMsg();
nfeCabec.setCUF(strUF);
nfeCabec.setVersaoDados("2.00");
NfeCabecMsgE nfeCabecE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
NfeDadosMsg nfeDados = new NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString);
nfeDados = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(XML);
NfeStatusServico2Stub nfeStub = new NfeStatusServico2Stub();
strXMLRetorno = nfeStub.nfeStatusServicoNF2(nfeDados, nfeCabecE).getExtraElement().toString();
System.out.println(strXMLRetorno);
} catch (Throwable e1)
{
e1.printStackTrace();
}
tenho q incluir alguma lib nesse projeto ?
esta retornando
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/http/HttpResponseFactory
at org.apache.axis2.transport.http.SimpleHTTPServer.init(SimpleHTTPServer.java:116)
at org.apache.axis2.engine.ListenerManager.init(ListenerManager.java:74)
at org.apache.axis2.context.ConfigurationContext.getListenerManager(ConfigurationContext.java:692)
at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:163)
at org.apache.axis2.client.ServiceClient.(ServiceClient.java:143)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:91)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:77)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:126)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:118)
at StatusServico.main(StatusServico.java:139)
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpResponseFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
… 10 more
tenho q incluir alguma lib nesse projeto ?
Sim.
Eu precisei incluir as libs axis.jar, commons-discovery-0.2.jar e httpcore-4.0.jar
Eu tive esse seu erro também, o que resolveu foi esse ultimo jar
Bom dia Might Angel,
No websrvice de SP não tem a classe nfeCabecMsgE no lugar tem o nfeCabecMsg0 tem os mesmo metodos porém mesmo com o seu código esta dando o mesmo erro, 214 tamanho da mensagem excedeu .
se alguem puder me ajudar.
muito obrigado.
Pessoal…por favor alguem tem uma luz para o meu problema…
<nfeStatusServicoNF2Result xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”><retConsStatServ xmlns=“http://www.portalfiscal.inf.br/nfe” versao=“2.00”><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006</verAplic><cStat>214</cStat><xMotivo>Rejeição: Tamanho da mensagem excedeu o limite estabelecido</xMotivo><cUF>35</cUF><dhRecbto>2010-03-04T08:54:08</dhRecbto></retConsStatServ></nfeStatusServicoNF2Result>
to precisando mesmo.
obrigado.
alves.Felipe
os enderecos acredito ser esses mesmo
detalhe…
tem que instalar o certificado da sua empresa no seu internet explorer
e acessar esses links pelo IE que pelo firefoz nao funciona pelo que percebi!
flw!
leonardoanselmo…
fiz assim pois não consegui usar o bean como vc disse que esta tentando fazer.
ele parece querer outra tag eh meio estranho…
até acredito ser pelo motivo que o colega ai em cima falou!
por não ser um projeto web
mas pra mim funcionou assim…
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\"" +
" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
"<tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
System.setProperty("javax.net.ssl.keyStoreType", "senha");
System.setProperty("javax.net.ssl.keyStore", "arq.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "arq.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "senha");
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(nfeDadosMsg));
NfeStatusServico2Stub.NfeDadosMsg dadosMsg = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(dad);
NfeStatusServico2Stub.NfeCabecMsg cabecMsgteste = new NfeStatusServico2Stub.NfeCabecMsg();
cabecMsgteste.setCUF("43");
cabecMsgteste.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsgE cabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
cabecMsgE.setNfeCabecMsg(cabecMsgteste);
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
System.out.println(stub.nfeStatusServicoNF2(dadosMsg, cabecMsgE).getExtraElement());
Bom dia Might Angel,
No websrvice de SP não tem a classe nfeCabecMsgE no lugar tem o nfeCabecMsg0 tem os mesmo metodos porém mesmo com o seu código esta dando o mesmo erro, 214 tamanho da mensagem excedeu .se alguem puder me ajudar.
muito obrigado.
Eu também uso o webservice de São Paulo, e essa classe foi gerada sim, com o nome nfeCabecMsgE. Ela é uma classe static dentro da Classe NfeStatusServico2Stub
Como você gerou as classes?
Use o método que tem aqui nesse tópico, usando o Axis2.
Eu usei o plugin do eclipse para gerar as classe o mais estranho que eu gerei as classes do ambiente nacional e ai apareceu NfeCabecMsgE e em SP apareceu NfeCabecMsg0
obrigado.
Eu usei o plugin do eclipse para gerar as classe o mais estranho que eu gerei as classes do ambiente nacional e ai apareceu NfeCabecMsgE e em SP apareceu NfeCabecMsg0obrigado.
Que estranho, aqui gerou NfeCabecMsgE, e tudo funcionou sem problemas. também uso o plug-in do Eclipse.
baixou os wsdl novos? esta usando Axis2 ao inves do Axis para gerar as classes? as vezes é algum desses detalhezinhos que esta te atrapalhando
Estou usando eclipse Gaymed Axis2 os wsdl fornecidos no dia 26/02/2010 pela receita de SP, o mais estranho é que no ambiente nacional aparece certo…
eu não sei mais o que fazer…
muito obrigado.
Alguém está notando uma instabilidade do WS de Status do Serviço de SP??
estou tentando consumir esse serviço, mas ele parece que tem vontade própria
Tenho uma classe que envia o SOAP direto para o WS, eu fiz esse SOAP na mão
tem horas que essa classe funciona e tem horas que o que foi gerado pelo Axis2 funciona, mas os dois não funcionam ao mesmo tempo
[edit]
me paresse que sp mudou os ws
[edit 2]
mudaram mesmo
Pessoal
Acertei as classes que estavam com problemas, implantei conforme o código de vc’s mas continua a dar o mesmo problema:
<nfeStatusServicoNF2Result xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”><retConsStatServ xmlns=“http://www.portalfiscal.inf.br/nfe” versao=“2.00”><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006</verAplic><cStat>214</cStat><xMotivo>Rejeição: Tamanho da mensagem excedeu o limite estabelecido</xMotivo><cUF>35</cUF><dhRecbto>2010-03-04T14:38:15</dhRecbto></retConsStatServ></nfeStatusServicoNF2Result>
se alguem puder me ajudar fiqcarei extremamente grato meu código esta abaixo:
import java.io.ByteArrayInputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsg;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg;
public class Status {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws
Exception {
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:/Certificado Digital/Certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "G:/newcert/teste.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "senha");
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<dummy>"
+ "<consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>" + "2"+ "</tpAmb>"
+ "<cUF>" + "35" + "</cUF>" + "<xServ>STATUS</xServ>"
+ "</consStatServ>"
+ "</dummy>"; //Necessario colocar a tag 'dummy' para enganar o XMLReader.
try {
NfeCabecMsg nfeCabec = new NfeCabecMsg();
nfeCabec.setCUF("35");
nfeCabec.setVersaoDados("2.00");
NfeCabecMsgE nfeCabecE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
NfeDadosMsg nfeDados = new NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(
nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance()
.createXMLStreamReader(XMLString);
nfeDados = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(XML);
NfeStatusServico2Stub nfeStub = new NfeStatusServico2Stub();
String strXMLRetorno = nfeStub.nfeStatusServicoNF2(nfeDados, nfeCabecE)
.getExtraElement().toString();
System.out.println(strXMLRetorno);
} catch (Throwable e1) {
e1.printStackTrace();
}
}
}
Eu testo o seu código aqui sem mudar quase nada (mudo só o caminho e senha dos certicados) e não tenho problemas.
Pode ser algum tipo de incompatibilidade de versões então, do Java, do Axis2, do seu Eclipse, sei la…
Ja tentou inicializando a String antes de passar os argumentos? tipo:
String nfeDadosMsg = “”;
nfeDadosMsg = "<xml version … (etc)
meio chute essa sugestão, mais sei la, as vezes funciona.
Pessoal uma luz mais uma vez…
Eclipse
Version: 3.4.1
java jdk 1.6.0_11
axis2 1.5.1
Passo 1
- Crio um Dynamic Web Project
Passo 2
- Digito o nome do projeto
- Target Runtime - J2SEE Runtime Library
- Dynamic Web Module Version - 2.5
- Configuration - Default Configuration for J2SEE Runtime Library
passo 3
- Crio uma pasta dentro do projeto e copio todos os wsdl para lá
Passo 4
- Crio Web Service Client
Passo 5
- Localizo o NfeStatusServico2.wsdl e clico em finish
Passo 6
- Crio a classe que foi passada acima e click em executar
Feito ele manda a mensagem que minha mensagem esta muito grande.
Fiz o que Might Angel falou
e continua o mesmo problema.
alguem tem uma solução.
muito obrigado.
cara eu tava aqui sofrendo para resolver esses “probleminhas” aqui com vcs e meu codigo ficou bem parecido com esse e não tive problema nenhuma está rodando normalmente
a unica coisa que nao coloquei e pode ser q seja isso retira da string nfeDadosMsg a tag
como a mensagem como é padrão - tipo de ambiente e UF e sempre vai ter o msm tamanho nao importa o Estado que agente use
ele ja tenho um tamanho fixo
e acrescentando essa tag passe desse limite
é uma opção espero q ajude
flw
cara eu tava aqui sofrendo para resolver esses “probleminhas” aqui com vcs e meu codigo ficou bem parecido com esse e não tive problema nenhuma está rodando normalmentea unica coisa que nao coloquei e pode ser q seja isso retira da string nfeDadosMsg a tag
como a mensagem como é padrão - tipo de ambiente e UF e sempre vai ter o msm tamanho nao importa o Estado que agente use
ele ja tenho um tamanho fixo
e acrescentando essa tag passe desse limiteé uma opção espero q ajude
flw
Pois é, e comigo se eu tiro a tag (pode ter o nome que vc quiser essa tag) eu recebo o erro
java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement cUF
Colocando ela la, o erro some, e não tenho problema com o tamanho da XML.
Eu acho que isso é alguma diferença de versão em algo que a gente esta usando.
leonardoanselmo2007, pelo seu esquema, eu faço assim:
Eclipse
Version: 3.4.3
java jdk 1.6.0_15
axis2 1.5.1
Passo 1
- Crio um Dynamic Web Project
Passo 2
- Digito o nome do projeto
- Target Runtime - Apache Tomcat v6.0
- Dynamic Web Module Version - 2.5
- Configuration - Default Configuration for Apache Tomcat v6.0
passo 3
- Coloco os wsdl dentro da pasta axis2, no meu diretório de instalação do Apache Tomcat6
- Inicio o servidor do Apache
Passo 4
- Crio Web Service Client
Passo 5
- Localizo o NfeStatusServico2.wsdl no servidor apache e clico em finish
Passo 6
- Crio a classe que foi passada acima e click em executar
Unica diferença esta no uso do Apache Tomcat 6
Caramba, Sefaz SP tá tirando uma da minha cara,
Voltaram o WS antigos
Ficar mudando assim é um saco
Opa, então a SEFAZ do RS pode ter mudado de idéia também.
Voce sabe dizer até quando prorrogaram para uso do WS antigo?
Alencar
zoren , to usando para SP e nao tive nenhum problema até agora olha q peguei os wsdl faz quase 2 semanas no site
pode ser algo na sua aplicação
e sobre o problema item do topico
uso as msm configurações e a diferença q uso o Apache Tomcat 5.5
ainda nao consegui enxergar algo q faça uma diferença
Caramba, Sefaz SP tá tirando uma da minha cara,Voltaram o WS antigos
Ficar mudando assim é um saco
Não entendi o pq de “voltaram”. Até onde eu sei, os WS novos ainda são só para os testes, o que esta valendo ainda são os antigos.
Ahhh, que pena. Pensei por poucos minutos que eles tinham voltado atrás com
a idéia de implantar estes novos serviços… 
Ontem os WS de SP pararam de funcionar
ai hj de tanto testar, resolvi olhar no site e comparar no olho os WSDL
ai que eu vejo que os infelizes estão diferentes
ai gerei novamente as classes para essa nova versão, tinha até gostado pq estava bem parecido com a SVRS
ai depois de um tempo, testando parou de funcionar, ai fui comparar os WSDL de novo e vi que estava como antes
também peguei os WSDL de SP assim que lançaram no site
Pessoal tem uma maneira de se visualizar a mensagem que esta indo para sefaz, assim eu consiguiria ver o que esta indo de errado.
muito obrigado.
leonardoanselmo2007
no meu caso é só fazer isso aqui
ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(nfeDados);
NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados);
System.out.println(dado);
que verifico o q estou mandando no
Pessoal tem uma maneira de se visualizar a mensagem que esta indo para sefaz, assim eu consiguiria ver o que esta indo de errado.muito obrigado.
Se vc estiver usando o Axis2, vc pode setar o level do log4j pra debug, ai ele vai imprimir o SOAP no console ou no arquivo
eu fiz assim até acertar
alguem sabe me dizer pq agora qdo se cria o conteudo da nfeDadosMsg para que funcione tem q se colocar uma tag qualquer antes do conteudo para não retornar o erro
java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement NFe
alguem sabe me dizer pq agora qdo se cria o conteudo da nfeDadosMsg para que funcione tem q se colocar uma tag qualquer antes do conteudo para não retornar o errojava.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement NFe
O pq eu não sei, mas pelo q eu entendi ele come a tag externa e fica só com o conteúdo, mas como ele suporta apenas um grupo ele dá erro se encontrar mais de um
Alguém tem alguma dica ?
Bom dia pessoal, estou acompanhando este forum, e consegui fazer a conexão tudo ok, mais estou recebendo a mensagem no retorno do XMML assim:
–> Rejeição: Tamanho da mensagem excedeu o limite estabelecido
Fiz o nfeDadosMsg assim:
String nfeDadosMsg = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>”
+ “” + "<consStatServ " + " versao=“2.00"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe">" + “2” + “35”
+ “STATUS” + “”
+ “”;
Rejeição: Tamanho da mensagem excedeu o limite estabelecido
Responsta do ConsultaStatusServico2:
2SP_NFE_PL_006214Rejeição: Tamanho da mensagem excedeu o limite estabelecido352010-03-05T09:58:03
Desde já agradeço,
Rodrigo Corrêa
Na hora de criar o Dynamic Web Project, o que vc esta escolhendo como Target Runtime?
Rodrigo Correa, tbm estou com esse problema a pelo menos 3 dias e não consegui resolver, se vc conseguir me da uma dica.
Eu coloco no Target Runtime Apache Tomcat 6.0
Leonardo
bom nao sei se tem a ver mais notei que vcs colocaram
" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
e eu estou usando
Fala pessoal,
no target runtime to colocando Apache Tomcat 6.0 com o Axis2
troquei para a instrução :
mais ainda tenho a mesma mensagem.
Pessoal, como vc’s fizeram a instalação do axis2 com plugin do eclipse.
Eu fiz assim
Passo 1
baixei do site a versao do axis2 1.5.1
passo 2
descompactei na pasta c:\
passo 3
realizei a seguinte instrução no eclipse
window -> preference -> webservice -> axis2 preference -> coloquei o caminho da pasta axis2 no campo Axis2 runtime location
passo4
Criei o Dinamic Web Project
gostaria de saber se vocês fizeram isso tbm.
muito obrigado.
fiz a msm coisa tb
evandromib quais são as versões que vc esta usando
eclipse
axis2
fiz do mesmo jeito.
Como vc esta gerando as classes do java a partir do wsdl? Vc esta usando o servidor do Apache?
Might Angel
Passo 1
Crio uma pasta dentro do projeto e coloco todas as wsdl
Passo 2
Click com o botão direito no projeto -> new -> other ->web services -> web service client e dou next
Passo 3
Localizo o wsdl que desejo e observo as configurações que estão: server : tomcat v6.0 server
Web service runtime: Apache axis2
cliente projet: o nome_do_meu_projeto
Passo 4
Finish
gerou minhas classes.
muito obrigado.
Unica diferença no que eu estou fazendo é que eu copio as wsdl para a pasta \webapps\axis2 do diretório de instalação do Tomcat, e em new -> other ->web services -> web service client eu escolho essas wsdl, apontando para http://localhost:8080/axis/NomeDaWsdl.wsdl
Cara fiz exatamente como vc falou…
Por incrivel que pareça eu troquei de maquina peguei uma formatada, instalei o java baixei o eclipse, axis2, tomcat 6 novamente
tudo novo e deu o mesmo erro.
sinceramente eu não sei mais o que fazer…
há 3 dias dando esse erro…
mais uma luz…
e ai leonardoanselmo2007 blz?
aqui fiz o seguinte cara gerei o client usando os jars do axis2 atraves da classe abaixo
public class GeradorWSDL {
public static void main(String[] args) {
String nfestatusservico = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL";
GeradorWSDL gerador = new GeradorWSDL();
gerador.setProperties();
gerador.geraWSDL(nfestatusservico, "nfestatusservico");
}
public void geraWSDL(String wsdl, String pack) {
// gerou as classes no diretorio c:\src
WSDL2Java.main(new String[] { "-o", "c:\\src", "-p",
"br.com.suaempresa.nfe.service." + pack, "-uri", wsdl });
System.out.println("*** Geracao concluida ***");
}
public void setProperties() {
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "certificado.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "SENHA");
}
}
ai precisei fazer apenas uma pequena mudança no codigo que o pessoal postou aqui
pra se comunicar com o webservice de sao paulo. segue o codigo abaixo:
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\"" +
" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
"<tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(nfeDadosMsg));
NfeStatusServico2Stub.NfeDadosMsg_type0 dadosMsg = NfeStatusServico2Stub.NfeDadosMsg_type0.Factory.parse(dad);
NfeStatusServico2Stub.NfeStatusServicoNF2 nfeStatusServicoNF2 = new NfeStatusServicoNF2();
nfeStatusServicoNF2.setNfeDadosMsg(dadosMsg);
NfeStatusServico2Stub.NfeCabecMsg cabecMsgteste = new NfeStatusServico2Stub.NfeCabecMsg();
cabecMsgteste.setCUF("35");
cabecMsgteste.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsgE cabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
cabecMsgE.setNfeCabecMsg(cabecMsgteste);
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
System.out.println(stub.nfeStatusServicoNF2(nfeStatusServicoNF2, cabecMsgE).getNfeStatusServicoNF2Result().getExtraElement());
tenta ai pra ver se funfa… hehe
Eu revi o código que voce postou e notei q eu tambem coloco isso aqui antes dos System.setProperty que voce coloca os certificados
System.setProperty(“java.protocol.handler.pkgs”, “com.sun.net.ssl.internal.www.protocol”);
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Não sei se pode ser isso… mas não consigo entender mesmo pq nao funciona aí, estamos fazendo tudo igualzinho…
meu eclipse é Versão 3.4.2
e o axis2-1.5.1
Pessoal, testei a classe geradorwsdl que o colega acima enviou e não funcionou permanece dando o mesmo erro…
dankshit funcionou o seu?
muito obrigado
Pessoal, testei a classe geradorwsdl que o colega acima enviou e não funcionou permanece dando o mesmo erro…dankshit funcionou o seu?
muito obrigado
cara… posta o erro de volta ai?
Boa noite pessoal,
eu não testei gerar o WSDL com o codigo acima, vou testar amanhã e aviso no forum.
t+
Boa noite,
Pessoal enfim consegui resolver o erro 214 - mensagem excedeu o tamanho.
Fiz a seguinte coisa criei uma pasta lib coloquei todas as bibliotecas do axis2 1.5.1 e depois cliquei com o botão direito e dei um buid
feito isso parou o erro e começou a funcionar perfeitamente.
Agradeço a todos os que me ajudaram em especial ao evandromib e ao Might Angel que me acompanharam desta dificuldade.
Qualquer coisa estamos ai…
muito obrigado.
Bom dia pessoal,
Alguém tem alguma dica a respeito de como enviar a nota fiscal pelo webservice.
Eu tenho a nota fiscal gerada em XML e assinada, exemplo: (" c:\nota.xml").
Como faço para enviá-la pelo webservicce NfeRecepcao2.
Desde já agradeço.
opa leonardoanselmo2007
q blz td funcionou heim
eu que agradeço pela força tb , foi mto util essa troca de informação para todos e qquer coisa estamos por aqui
abraço
sobre a duvida do dankshit
cara vc ja conseguiu fazer a consulta de serviço ?
caso ja tenha feito é só vc usar a msm logica vc vai ter q trocar os metodos nfeStatusServicoNF2 , por nfeRecepcaoLote2 ( e todos referente a recpcao ) e aonde vc seta os conteudo da nfeDadosMsg vc substitui pela sua nota.xml
que o restante fica bem parecido com o nfeStatusServicoNF2
Amigos, estou tendo problemas com relacao a outros estados…
Sp eu consegui acessar o status do servico, mas do outros estados me retorna:
[color=blue]“Unable to handle request without a valid action parameter. Please supply a valid soap action”[/color]
quando nao da o erro:
[color=red]08/03/2010 09:24:05 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
WARNING: SAAJ0014: Invalid reply message. Content length of reply was zero.[/color]
alguem tem alguma dica de como deixar o “negocio” meio que genérico ? rs
Valew…
Fala pessoal,
Opa evandromib
consegui acessar o status sim cara, não mexi em nada, cheguei hj de manhã e tentei novamente, e deu certo, imagino que seria algum problema na receita.
A respeito do envio da nota, muito obrigado, vou fazer o envio da mesma forma, tinha ficado em dúvida se deveria somente carregar a nota no MsgDados, parecia muito fácil.
Obrigado a todos, vou continuar essa vida …heheheheh
leonardoanselmo2007, esse forum me ajudou muito a desenvolver a nfe, sempre bom pelo menos tentar ajudar qdo posso.
dankshit, A mesma lógica do consulta serviço você usa para todos os outros serviços, sem segredos.
Aqui ja montei todas as chamadas de serviços, estou testando as notas. O que esta quebrando são essas novas regras de validação da receita. Eu estou recebendo a mensagem que a soma dos valores totais do IPI esta diferente do total de IPI informado na nota. Mas eu vejo no XML e não esta diferente, esta tudo informado certinho!
Alguem chegou nessa parte e teve um problema parecido?
Pessoal,
estou tendo problemas pra conseguir conciliar os WS dos estados.
ja consegui consultar status de SP , PR e MT, mas usando códigos diferentes.
Se não tiver outra forma e tiver que ser 1 pra cada estado, vai me quebrar em 8.
voces tbm tem que montar o envio para todos os estados ou só 1 ?
guilherme_ha
vc viu se o estado que vc esta tentando , ja esta funcionando para essse novo modelo pq nem todo estado disponibilizou ainda o NfeStatusServico2
na minha aplicação eu tb deixei para verificar o estado para saber qual webservice devo mandar a solicitação
mais caso tenha colocado o endereço certo , testa com o certificado daquele estado , pq deve dar erro se fizer com certificado de outro estado
entao evandromib, obrigado pela atencao.
eu estou testando com o mesmo certificado… em 3 estados funcionou.
porem em um outros estados TEM o Ws2 ativo ja mas nao funciona…
o servidor até responde… mas com erro…
[color=blue]“Unable to handle request without a valid action parameter. Please supply a valid soap action”[/color]
ou
[color=blue]“Rejeicao: Falha no schema XML - inexiste a tag raiz esperada para a mensagem”[/color]
porem o xml da msg soap esta igualzinho ao requerido no site.
Voce conseguiu consulta o status de mais de 1 estado usando o mesmo codigo ?
entao testei para outros estados e tb me retorna
Rejeicao: Falha no schema XML
só que ainda nao testei com o certificado do msm estado que fiz a solicitação , to esperando certificado chegar para verificar se é soh o certificado
antigamente eu testava com 1 certificado só para qquer estado , como agora eles deram uma bela modificada nesse webservice entao vou testar ainda
mais qquer coisa ja post aqui o resultado
flw
evandromib, consegui fazer para todos os estados usando o mesmo certificado, como era na versao 1.07, o erro da rejeicao 516, que estava acontecendo comigo, resolveu qdo coloquei na tag o atributo
http://www.portalfiscal.inf.br/nfe,
nao me pergunte por que… mas funcionou…rs
obrigado pela atencao de todos…
agora vou testar o envio e o recebimento de uma nfe completa…
abracos…
estranho cara eu fiz isso e nao muda nd
olha como esta
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb> "+ tpAmb +" </tpAmb><cUF>"+ cod_uf +"</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
para SP funciona to tentando MT e volta
215 - Rejeicao: Falha no schema XML
Nossa cara… que estranho…
justamente o de MT eu nao rodei, passei despercebido…
porem agora que fui rodar retornou o seguinte…
<?xml version="1.0" encoding="iso-8859-1"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
<faultstring>no SOAPAction header!</faultstring>
<detail>
<ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">vermelho4.sefaz.mt.gov.br</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Minha Msg soap esta sendo enviada assim:
<?xml version="1.0" encoding="iso-8859-1"?>
<soap12:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<soap12:Header xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe">
<cUF>51</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soap12:Header>
<soap12:Body xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<cUF>51</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</nfeDadosMsg>
</soap12:Body>
</soap12:Envelope>
Voce consegue entender alguma coisa disso ?
Olá amigo boa noticia, consegui consultar MT sim…
precisa colocar um tal de SoapAction no header:
Fiz assim e funcionou:!!!
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage sm = mf.createMessage();
...
sm.getMimeHeaders().addHeader("SOAPAction", "urn:NfeStatusServico2");
Resultado da consulta para MT:
<?xml version="1.0" encoding="iso-8859-1"?>
<soapenv:Envelope
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<nfeCabecMsg soapenv:mustUnderstand="false"
soapenv:role="http://schemas.xmlsoap.org/soap/actor/next" xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<versaoDados>2.00</versaoDados>
<cUF>51</cUF>
</nfeCabecMsg>
</soapenv:Header>
<soapenv:Body>
<nfeStatusServicoNFResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<retConsStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>2.00</verAplic>
<cStat>107</cStat>
<xMotivo>Servico em Operacao</xMotivo>
<cUF>51</cUF>
<dhRecbto>2010-03-08T17:25:37</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
</nfeStatusServicoNFResult>
</soapenv:Body>
</soapenv:Envelope>
Testei ainda com os outros estados esse nova configuracao, e aparentemente não deu nenhum problema.
Acho que eh isso…
Abracos
Não entendi mto bem pq a String nfeDadosMsg eu monto
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb> "+ tpAmb +" </tpAmb><cUF>"+ cod_uf +"</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
e não com soapenv:Envelope …
é que eu criei a msg soap na mao…
por isso tenho melhor controle do que enviar…
vc montou a comunicação usando as classes criadas pelo wizard do axis2 ??
usei o wizard do eclipse sim
Estranho, fiz pelo wizard e tbm deu certo…
olha so como fiz:
String[] aUrl = {"homologacao.sefaz.mt.gov.br","/nfews/NfeStatusServico2"};
String sUf = "51"; // MT ok
/* conecao segura */
NfeStatusServico2Stub nfe = new NfeStatusServico2Stub("https://" + aUrl[0] + aUrl[1]);
NfeCabecMsgE nfeCabecMsg1 = new NfeCabecMsgE();
NfeCabecMsg param = new NfeCabecMsg();
param.setCUF(sUf);
param.setVersaoDados("2.00");
nfeCabecMsg1.setNfeCabecMsg(param);
OMElement ome = AXIOMUtil.stringToOM(
"<consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">" +
" <tpAmb>2</tpAmb>" +
" <cUF>" + sUf + "</cUF>" +
" <xServ>STATUS</xServ>" +
"</consStatServ>");
NfeDadosMsg nf2 = new NfeDadosMsg();
nf2.setExtraElement(ome);
NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf2, nfeCabecMsg1);
System.out.println("Resposta : \n" + resp.getExtraElement().toString());
Tente isso… abraco
Fala pessoal, estou com uma dificuldade no envio de Lote de NFE, quando eu monto o arquivo XML de Acordo com o Manual ver: (4.01-NT2009.006) -
na hora do :
me retorna uma mensagem ( Unexpected subelement NFe ), sempre que eu coloca a TAG de 0000001.
Se eu não colocar a TAG de lote e só gerar 1 nota no arquivo passa, mais se colocar mais de uma nota no arquivo da esse erro. alguem tem alguma dica ?
vou postar o XML que gerei aqui embaixo:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<idLote>20100311092210</idLote>
<NFe><infNFe Id="NFe35100307206673000141550010001838981003051089" versao="2.00">
<ide> .............................
</NFe>
<NFe><infNFe Id="NFe35100307206673000141550010001838991003051159" versao="2.00">
<ide> ..............................
</NFe>
</enviNFe>
desde já aradeço,
Dankshit
dankshit, voce só pode ter 1 elemento “NFe”
Para enviar mais de uma nota no mesmo lote, acredito que a estrutura deva ser +/- assim:
<enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>20100311092210</idLote>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe Id="NFe35100307206673000141550010001838981003051089" versao="2.00">
<ide> .............................
</infNFe>
<infNFe Id="NFe35100307206673000141550010001838991003051159" versao="2.00">
<ide> .............................
</infNFe>
<NFe>
</enviNFe>
Não tenho ctz… mas acredito que seja assim…
Fala pessoal,
guilherme_ha, e ai blz ? eu mudei a estrutura do XML para ficar desta forma que vc disse, realmente fica ais certo, mais se eu colocar a TAG de dá o mesmo erro, se tirar a TAG do lote passa blz várias notas no mesmo arquivo, Estranho to errando em alguma coisa.
Eu to acessando o Serviço assim:
NfeRecepcao2Stub nfeStub = new NfeRecepcao2Stub();
NfeRecepcaoLote2Result res = nfeStub.nfeRecepcaoLote2(nfeDados, nfeCabecE);
retRecepcao = res.getExtraElement().toString();
Assim é para enviar notas em Lote, qual é o metodo para enviar notas individualmente, não achei na calsse.
Se puder dar uma dica agradeço.
dankshit, o metodo para o envio de uma nf ou varias é o mesmo, o que muda é a estrutura do xml, vc pode enviar so uma nf do mesmo jeito que esta fazendo.
tente enviar 1 nota e depois post seu xml da msg de envio.
o metodo é o msm
o que indentifica qtas notas vao em um lote é a tag entao se vc repetir essas tags dentro do grupo de tag determina a qtde de notas enviadas
um detalhe agora para vc poder enviar as notas nesse novo sistema do webservices é que antes da tag ficava assim o envio
<enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>20100311092210</idLote>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
agora estou tendo q mandar assim
<msgDados><enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>20100311092210</idLote>
Fala pessoal,
XXX entendi sobre o envio das notas muito obrigado.
Sobre o XML vou postar ele aqui. Se eu tirar a TAG de passa tudo certinho sem problemas, e eu olhando o manual versão 4 parece estar tudo correto, to pensado em largar mão de enviar por lote as notas e fazer o envio individual de cada nota, uma a uma.heheh
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<idLote>20100311120111</idLote>
<NFe>
<infNFe Id="NFe35100307206673000141550010001839401003051084" versao="2.00">
<ide><cUf>35</cUf><cNF>305108</cNF><natOp>COMPRA MAT CONSCONSDIRETONSEC</natOp><indPag>1</indPag><mod>55</mod><serie>1</serie><nNF>183940</nNF><dEmi>2010-03-11</dEmi><dSaiEnt>2010-03-11</dSaiEnt><hSaiEnt>12:01</hSaiEnt><tpNF>1</tpNF><cMunFG>3503356</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>4</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><procEmi>0</procEmi><verProc>TESTE 135</verProc></ide>
<emit><CNPJ>07206673000141</CNPJ><xNome>KBG INDUSTRIA ALIMENTICIA LTDA</xNome><xFant>MOVEIS BECHARA</xFant><enderEmit><xLgr>RUA FRANCISCO GLICERIO</xLgr><nro> 1330</nro><xCpl/><xBairro>JARDIM BRASILIA</xBairro><cMun>3503356</cMun><xMun>ARARAS</xMun><UF>SP</UF><CEP>13607300</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderEmit><IE>182166265117</IE><IM>25650</IM><CNAE>123456789</CNAE></emit>
<avulsa><CNPJ/><xOrgao/><matr/><xAgente/><fone/><UF/><nDAR/><dEmi/><vDAR/><repEmi/><dPag/></avulsa>
<dest><CNPJ>57143828000205</CNPJ><xNome>CREDI FERRARI ELETRODOMESTICOS</xNome><enderDest><xLgr>AV MELVIN JONES</xLgr><nro> 04</nro><xCpl/><xBairro>CENTRO</xBairro><cMun>3550308</cMun><xMun>SAO PAULO</xMun><UF>SP</UF><CEP>13250330</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderDest><IE>382033709118</IE><ISUF/><email/></dest>
<det nItem="1"><prod><cProd>4000</cProd><cEAN/><xProd>MDF MM</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M </uCom><qCom>2.0000</qCom><vUnCom>11.0290</vUnCom><vProd>200.0000</vProd><cEANTrib/><uTrib>M </uTrib><qTrib>2.0000</qTrib><vUnTrib>200.0000</vUnTrib><vFrete/><vSeg/><vDesc/><vOutro/><indTot>1</indTot><DI><nDI/><dDI/><xLocDesemb/><UFDesemb/><cExportador/><adi/><nAdicao/><cFabricante/><vDescDI/></DI><xPed/><nItemPed/></prod>
<imposto><ICMS/>
<PIS><PISNT><CST>07</CST></PISNT></PIS>
<COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS>
</imposto></det>
<det nItem="2"><prod><cProd>542</cProd><cEAN/><xProd>MDF MM X</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M </uCom><qCom>3.0000</qCom><vUnCom>0.0000</vUnCom><vProd>50.0000</vProd><cEANTrib/><uTrib>M </uTrib><qTrib>3.0000</qTrib><vUnTrib>50.0000</vUnTrib><vFrete/><vSeg/><vDesc/><vOutro/><indTot>1</indTot><DI><nDI/><dDI/><xLocDesemb/><UFDesemb/><cExportador/><adi/><nAdicao/><cFabricante/><vDescDI/></DI><xPed/><nItemPed/></prod>
<imposto><ICMS/>
<PIS><PISNT><CST>07</CST></PISNT></PIS>
<COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS>
</imposto></det>
<det nItem="3"><prod><cProd>806</cProd><cEAN/><xProd>MDF MM X</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M </uCom><qCom>5.0000</qCom><vUnCom>0.0000</vUnCom><vProd>30.0000</vProd><cEANTrib/><uTrib>M </uTrib><qTrib>5.0000</qTrib><vUnTrib>30.0000</vUnTrib><vFrete/><vSeg/><vDesc/><vOutro/><indTot>1</indTot><DI><nDI/><dDI/><xLocDesemb/><UFDesemb/><cExportador/><adi/><nAdicao/><cFabricante/><vDescDI/></DI><xPed/><nItemPed/></prod>
<imposto><ICMS/>
<PIS><PISNT><CST>07</CST></PISNT></PIS>
<COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS>
</imposto></det>
<total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vBCST>0.00</vBCST><vST>0.00</vST><vProd>0.00</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>0.00</vPIS><vCOFINS>0.00</vCOFINS><vOutro>0.00</vOutro><vNF>0.00</vNF></ICMSTot><ISSQNtot><vServ>0.00</vServ><vBC>0.00</vBC><vISS>0.00</vISS><vPIS/><vCOFINS/></ISSQNtot></total>
</infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"/><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35100307206673000141550010001839401003051084"><Transforms><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>5MVe8is2rZbgwpk+S0xCEFrAp9Y=</DigestValue></Reference></SignedInfo><SignatureValue>PPgja9r+vdhDqJFaHe/BNhxnst4/cgorSqDlBJ7cUGJ+vnSvWKuP8OMHpo4+7lEuYG1IclJQQ5QL
1XsTlJdRPtChfeIKBffcmUiz1omk3WRNrEOF/CZUtpKu64219GmoAidbup+uQHCQlSnKg5HuS4I+
b2ThVuD16SHleUlbtTY=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIGLTCCBRWgAwIBAgIIB+QG8EuLBUcwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCQlIxEzAR
BgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwg
djEwHhcNMDkxMTExMTYwNTM2WhcNMTAxMTExMTYwNTM2WjCB6zELMAkGA1UEBhMCQlIxEzARBgNV
BAoTCklDUC1CcmFzaWwxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDA3
MDIwMjMxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UE
CxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNP
KTEpMCcGA1UEAxMgSyBCIEcgSU5EVVNUUklBIEFMSU1FTlRJQ0lBIExUREEwgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBALtWCa0WPQcKRNVilynWQVxehjXBs13WhLDyQBxpYeD1oa8FfU5NCQ8v
7dY/xiSOQcdW7NCVIv+/w9XV4ZubtfJt8eYNyUvJFIKRR1ASBpP1rbCrzdje6N3okTUfJv3v3sv0
QbyzCu7gYZTLLElr7S2LqofbrDazYrhdtJ0ZMHHNAgMBAAGjggL1MIIC8TAOBgNVHQ8BAf8EBAMC
BeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFLdgqFv5sqauAO10
69VKyZZoZvVcMIG4BgNVHREEgbAwga2BFktCR0FSQVJBU0BURVJSQS5DT00uQlKgOAYFYEwBAwSg
LxMtMDMxMjE5NTI3NzQwOTMzNzgzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoCUGBWBMAQMC
oBwTGkFOVE9OSU8gUk9CRVJUTyBHSElSQUxESU5JoBkGBWBMAQMDoBATDjA3MjA2NjczMDAwMTQx
oBcGBWBMAQMHoA4TDDAwMDAwMDAwMDAwMDBXBgNVHSAEUDBOMEwGBmBMAQIBBjBCMEAGCCsGAQUF
BwIBFjRodHRwOi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvcmVwb3NpdG9yaW8vZHBj
MIHwBgNVHR8EgegwgeUwSaBHoEWGQ2h0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5i
ci9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwQ6BBoD+GPWh0dHA6Ly9sY3IuY2VydGlm
aWNhZG9zLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwU6BRoE+GTWh0dHA6
Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2EvcmVwb3NpdG9yaW8vbGNy
L3NlcmFzYWNkdjEuY3JsMIGXBggrBgEFBQcBAQSBijCBhzA8BggrBgEFBQcwAYYwaHR0cDovL29j
c3AuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9zZXJhc2FjZHYxMEcGCCsGAQUFBzAChjtodHRw
Oi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvY2FkZWlhcy9zZXJhc2FjZHYxLnA3YjAN
BgkqhkiG9w0BAQUFAAOCAQEAFFyu834lK6QpZBB/lZ2oysNeMe/ra4RWRTT7fSi4LxOEtSJerTLF
BIQMxi9X+dPq85mVl39MlG8z/iPQRPDBZQuulwJk72mUts6u/YJ36RO+whs90Q7vTepqujLwRtYN
ERGGec38I5ZRQXlr31KA/3sTYOkrh0nyNlEckuXfW4XWmrtNS8zmZRV+I4MzECtG9gERRAvMlwux
QCMsX3au9/0iLOe+Z1JYrkx1/VuwKezME2g35EgZvDLocfLP1J1ccN92U6qMHhsWHI0bLU5tXm2a
wY2Z9hpeDB+oTNQv0DKt7mVifQisrceZtaOWc0UKOvVyseGQ7Xuxo9BKej7dAw==</X509Certificate></X509Data></KeyInfo></Signature>
</NFe>
</enviNFe>
Fala pessoal,
Inacreditavel evandromib , nunca ia descobrir sozinho, fiz o que vc falou, coloquei as TAGS
Muito Obrigado pela ajudaa de todos, por enquanto..heheheheheh
Fiz assim e deu certo:
<msgDados><enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>20100311092210</idLote>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe" >
..................................
</NFe>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe" >
..................................
</NFe>
</enviNFe>
</msgDados>
hehehhe....t+
alguem conseguiu consultar serviço em outro estado
aqui minha resposta volta
215 - Rejeicao: Falha no schema XML
ja setei 2000 tipos de nfeDadosMsg
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\""
//+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">"
+ "<tpAmb> "+ tpAmb +" </tpAmb><cUF>"+ cod_uf +"</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
alguem tem mais alguma dica ?
Opa , dankshit
q bom q funcionou ai , se precisar estamos por aqui
flw
Eu consegui para todos os estados…
mas precisa da namespace “http://www.portalfiscal.inf.br/nfe”
sem isso comigo nao funcionou tbm …!!
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<cUF>51</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</nfeDadosMsg>
eu consegui agora mandar para outros estados
na verdade guilherme_ha não era nem o namespace “http://www.portalfiscal.inf.br/nfe” o meu estava certo , e o seu tb da certo o q estava errado era
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>" + tpAmb +"</tpAmb><cUF>"+ cod_uf +"</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
do lado da variavel tpAmb antes do sinal de + tinha um spaço e tava dando erro no schema do xml
foi tirar o spaço q funcionou rsrs
mais valeu pela ajuda
flw
hehehe menos mau…
agente se apega tanto a outras coisas que as pequenas passam despercebido…!!!
Que enorme esse topico, devia ter uma forma de organizar melhor todo o conhecimento produzido aqui.
Dae gujarada… to começando um projeto de NFE, e já li as 28 páginas aqui deste tópico.
Uma dúvida ainda sobre a questão dos XSDs que a receita disponibiliza: Tinha gente falando disso, mas era
lá por meados de 2009. Enfim… vocês que já estão mais avançados no desenvolvimento, poderiam me
informar se os XSDs da receita estão corretos e se funciona certinho utilizar os plugins que convertem
os XSDs nas classes pra montar XML ??
Pergunto isso porque eu vejo que muitos estão montando tudo na mão.
Valeuu
tchê…
os xsd no meu cas utilizo só para validar os xmls que anteriormente montei.
os xsds junto com uma biblioteca que citaram por ai nesse topico ajuda voce a criar os beans nescessários ara gerar os xmls da nota e de outros serviços…
eu particularmente fiz todos beans no braço!!!
nao usei biblioteca…
achei que fcaria muito amarrado aquela biblioteca…
eu uso aqui no sistema os beans que gerei no braço e a biblioteca XStream para criar os xmls…
e esses xmls eu valido coms os xsds…
acho que respondi sua pergunta… ou não…hehe
certo… é que tem um framework chamado JAXB que faz exatamente isso… voce passa o XSD e ele monta os beans
talvez fosse mais fácil fazer dessa forma… aí minha preocupação seria somente em passar os dados corretos da NFe, mas o XML seria montado corretamente… o problema é que eu li por aí que esses XSDs não são confiáveis… uma pergunta melhor seria: se o XML passar na validação do XSD ele vai passar na validação do WebService ???
Uma outra pergunta: eu ainda não tenho o certificado, mas li que tem um programa que a própria receita disponibiliza que assina e envia os XMLs. Então eu poderia criar os XMLs e utilizar este programa pra testar sem ter o certificado???
Valeuu
carlos.scuna , com relação aos xsd’s eu sempre validei as nfs’ com ele, e sempre que deu certo pra mim, deu certo no ws… então creio que sejam os mesmo…
com relação ao programa do governo, eu acho que mesmo nele vc precisa de um certificado, e se nao me engano depois que vc assina a nota com ele, nao da pra “exportar” pra ser enviada com outra aplicação, sugiro que faca tudo sem depender de outra aplicação, ja esta no começo do seu desenvolvimento.
Ok… muito obrigado.
Pessoal,
To com uma dúvida vocês estão utilizando o webservice de SP, pois eu estou e está acusando alguns erros estranhos.
No meu caso está aparecendo o seguinte :
<retConsReciNFe xmlns=“http://www.portalfiscal.inf.br/nfe” versao=“2.00”><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006</verAplic><nRec>351000013429091</nRec><cStat>104</cStat><xMotivo>Lote processado</xMotivo><cUF>35</cUF><protNFe versao=“2.00”><infProt><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006</verAplic><chNFe>35100362515952000103550000000100041579130563</chNFe><dhRecbto>2010-03-16T08:20:42</dhRecbto><cStat>204</cStat><xMotivo>Rejeição: Duplicidade de NF-e</xMotivo></infProt></protNFe></retConsReciNFe>
So que está nota fiscal nunca foi enviada…E eu tentei com diversos nº que tbm nunca foram enviados…
se alguem puder me ajudar…agradeço.
Pessoal estou tendo um problema…
estou tendo o seguinte retorno
Status : 297
Motivo : Rejeição: Assinatura difere do calculado
Alguém tem idéia do que pode ser ??
Valew
leonardoanselmo2007
uma coisa é certa essa nota chegou no sefaz , essas coisas ocorria comigo as vezes pq eu colocava a função q envia a nota para o sefaz e tb colocava essa funçao em um System.out.print(); para visualizar o q era envia entao tinha na execução do programa 2 envios da msm nota procura no seu codigo se nao tem algo mandando essa nota 2 vezes , ou sendo enviado em um lote que ela se repita
outra coisa tb é na formação da sua chave , pq são 9 digitos que representa sua numeração de nota no sefaz
35|10|03|62515952000103|55|000|000010004|1|57913056|3
nessa chave a nota é 000010004 verifica se por algum motivo nao se repetiu esse numero em algum teste q vc fez
sobre a duvida do guilherme_ha
é erro na assinatura do xml
exemplo no arquivo vc pode mexer em qualquer tag fora do grupo que nao é acusado nenhuma interferencia de asssinatura verifica se por algum motivo foi alterado o conteudo das tags desse grupo
no meu codigo para mandar o xml eu faço a leitura do arquivo e armazeno ele numa variavel para poder enviar nesse caso o meu xml era escrito respeitando a quebra de linha e qdo estava acumulando na variavel o que estava escrito no arquivo estava td saindo na msm linha isso dava erro de Assinatura difere do calculado
qquer coisa msm q seja um pequeno espaço no xml altera na assinatura
Evandromib o problema era esse mesmo…enviava 2 vezes, vc teve algum problema com o ipi como a mensagem de rejeição abaixo:
“Total do IPI(id:W12) difere do somatorio do valor dos itens(id:O14)”
Conferir esses 2 campos e estão exatamente com o mesmo valor…
se alguem puder me ajudar sou muito grato.
evandromib, minha função de assinatura tbm faz isso que vc faz… pega o arquivo.xml abre e assina e ja envia…
estranho que na outra versão funcionava sem problemas…
so mudei o método de envio… a minha classe que assina esta igual e nao foi alterada…
Bem vou dar mais uma procurada… se souber de mais alguma dica…!
Valew…
Pessoal estou tendo um problema…
estou tendo o seguinte retornoStatus : 297
Motivo : Rejeição: Assinatura difere do calculadoAlguém tem idéia do que pode ser ??
Valew
Isso geralmente acontece quando tem dois ou mais espacos entre caracteres.
Se tiver uma string assim: “ABC DE” a assinatura vai ser diferente do calculado.
Alencar
leonardoanselmo2007, bem estranho
mais qdo vou enviar o arquivo eu leio ele assinado ja , transfiro o conteudo para uma variavel e mando usando aqueles metodos
nao assino o conteudo do xml e ja envio o processo de assinatura faço separado
mais é estranho nao funcionar provavelmente é algum espaço perdido
leonardoanselmo2007 , ja tive esse problemas sim , IPI , ICMS , que nao bate com o valor total , algumas notas estao passando mais ainda nao entendi mto bem essa soma tendo q se somo na calculadora da certo com o valor total informado , tem q ve o tipo do icms pq tem algumas condições que nao soma no valor total da nota
mais do IPI to meio perdido tb
Boa tarde pessoal,
alguém tem o método de assinatuira da NFE que esteja funcionando ? Peguei vários aqui no forum mais cada um dá um erro diferente.
O Unico que nã deu erro ficaa voltando a mesma mensagem que o ( guilherme_ha ) está tendo:
Status : 297
Motivo : Rejeição: Assinatura difere do calculado
o Estranho é que eu faço o XML começando assim : <?xml version="1.0" encoding="UTF-8" ?>
Mais quando olho o arquivo assinado o começo tá assim: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
Alguém pode ajudar ?
Obrigado,
Dankshit
cara faz isso aqui que esse Standalone não aparece mais
doc.setXmlStandalone(true);
Fala pessoal,
Blz evandromib , consegui resolver esse problema do STANDALONE,
mais continuo com o mesmo problema de :
Status : 297
Motivo : Rejeição: Assinatura difere do calculado
Se alguem tiver algum metodo de assinatura funcionando, agradeço a ajuda.
Tbm ainda estou com esse problema…
retirei todos os espaços em branco duplos… mas mesmo assim da o erro…
Já nao sei mais o que fazer…
alguem ja passou desse ponto :???
Pessoal, o miolo do método de assinatura está abaixo.
Notem que as variáveis locais devem ser carregadas conforme seu gosto, tipo usarToken para mim é
um boolean que informa o uso de A3, etc…
Espero que entendam.
Qualquer coisa, mandem msg em pvt.
Alencar
// previne contra &, < e >
xml = Utils.caracterToHTML(xml);
try {
// gera o DOM XMLSignatureFactory que sera usado para gerar o
// envelope
// com.sun.org.apache.xalan.internal.xsltc.DOM
String providerName = System.getProperty("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
fac = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance());
// cria uma referencia ao envelope e define o algoritmo SHA1
Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null, null);
// cria o SignedInfo que sera assinado
SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref));
// gera o KeyInfo
X509Certificate certif;
if (!usarToken) {
certif = (X509Certificate) this.getCertificateFromFile(file, alias, senhaContainer);
} else {
certif = (X509Certificate) this.getCertificateFromToken(senhaContainer);
}
KeyInfoFactory kif = fac.getKeyInfoFactory();
List x509Content = new ArrayList();
x509Content.add(certif.getSubjectX500Principal().getName());
x509Content.add(certif);
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
// instancia o documento a ser assinado
ByteArrayInputStream xmlSource = new ByteArrayInputStream(xml.getBytes("UTF-8"));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
doc = docBuilder.parse(xmlSource);
// cria o DOMSignContext informando a private key
DOMSignContext dsc = new DOMSignContext(pk, doc.getDocumentElement());
// cria a assinatura do xml
XMLSignature signature = fac.newXMLSignature(si, ki);
// assina o xml
signature.sign(dsc);
return XMLUtils.DocumentToString(doc);
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
Cola ai o trecho do codigo que vc le o arquivo e manda para transmitir ?
Cara meu esquema de assinar esta igual ao seu… e mesmo assim esta retornando assinatura difere do calculado!!
Fala pessoal,
Estou com uma duvida, com este codigo acima a TAG ficou fora do tá certo isso ?
O final do meu arquivo ficou assim:
Eu estou montando o arquivo XML assim:
<?xml version="1.0" encoding="UTF-8"?>
<msgDados>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe35100307206673000141550010001842031003051087" versao="2.00">
<ide> ......
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"></Signature>
</NFe>
</msgDados>
Se eu não colocar a TAG sempre da erro na hora do envio do XML ao WebService. ( Unexpected subelement NFe )
Carrego o XML para envio assim:
public String getXmlContent(String xmlFile) {
String retorno = "";
try {
BufferedReader reader = new BufferedReader(new FileReader(xmlFile));
String aux = null;
while ((aux = reader.readLine()) != null) {
retorno += aux;
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return retorno;
}
public String enviarNFeWebService(String caminhoXML, String cod_uf, String tpAmb) {
String retRecepcao = null;
// Carrega o arquivo XML
String nfeDadosMsg = getXmlContent(caminhoXML);
try {
NfeCabecMsg nfeCabec = new NfeRecepcao2Stub.NfeCabecMsg();
nfeCabec.setCUF(cod_uf);
nfeCabec.setVersaoDados("2.00");
NfeCabecMsgE nfeCabecE = new NfeRecepcao2Stub.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
NfeRecepcao2Stub.NfeDadosMsg nfeDados = new NfeRecepcao2Stub.NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString);
nfeDados = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(XML);
NfeRecepcao2Stub nfeStub = new NfeRecepcao2Stub();
NfeRecepcaoLote2Result res = nfeStub.nfeRecepcaoLote2(nfeDados, nfeCabecE);
retRecepcao = res.getExtraElement().toString();
} catch (Throwable e1) {
e1.printStackTrace();
return null;
}
System.out.print(retRecepcao);
return retRecepcao;
}
dankshit , sua assinatura deve começar dpois da tag
</infNFe>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
e terminar desta forma abaixo
</Signature>
</NFe>
</enviNFe>
Fala Pessoal,
evandromib
Mudei o meu XML da maneira que vc orientou, realmente fica melhor, acabou ficando assim:
<?xml version="1.0" encoding="UTF-8" ?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<NFe xmlns="http://www.portalfiscal.inf.br/nfe" ><infNFe Id="NFe35100307206673000141550010001842141003051080" versao="2.00">
<ide><cUf>35</cUf><cNF>305108</cNF><natOp>COMPRA MAT CONSCONSDIRETONSEC</natOp><indPag>1</indPag><mod>55</mod><serie>1</serie><nNF>184214</nNF><dEmi>2010-03-16</dEmi><dSaiEnt>2010-03-16</dSaiEnt><hSaiEnt>18:10</hSaiEnt><tpNF>1</tpNF><cMunFG>3503356</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>0</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><procEmi>0</procEmi><verProc>TESTE 135</verProc></ide>
<emit><CNPJ>07206673000141</CNPJ><xNome>KBG INDUSTRIA ALIMENTICIA LTDA</xNome><xFant>MOVEIS BECHARA</xFant><enderEmit><xLgr>RUA FRANCISCO GLICERIO</xLgr><nro> 1330</nro><xCpl></xCpl><xBairro>JARDIM BRASILIA</xBairro><cMun>3503356</cMun><xMun>ARARAS</xMun><UF>SP</UF><CEP>13607300</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderEmit><IE>182166265117</IE><IM>25650</IM><CNAE>123456789</CNAE></emit>
<avulsa><CNPJ></CNPJ><xOrgao></xOrgao><matr></matr><xAgente></xAgente><fone></fone><UF></UF><nDAR></nDAR><dEmi></dEmi><vDAR></vDAR><repEmi></repEmi><dPag></dPag></avulsa>
<dest><CNPJ>57143828000205</CNPJ><xNome>CREDI FERRARI ELETRODOMESTICOS</xNome><enderDest><xLgr>AV MELVIN JONES</xLgr><nro> 04</nro><xCpl></xCpl><xBairro>CENTRO</xBairro><cMun>3550308</cMun><xMun>SAO PAULO</xMun><UF>SP</UF><CEP>13250330</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderDest><IE>382033709118</IE><ISUF></ISUF><email></email></dest>
<det nItem="1"><prod><cProd>4000</cProd><cEAN></cEAN><xProd>MDF MM</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M </uCom><qCom>2.0000</qCom><vUnCom>11.0290</vUnCom><vProd>200.0000</vProd><cEANTrib></cEANTrib><uTrib>M </uTrib><qTrib>2.0000</qTrib><vUnTrib>200.0000</vUnTrib><vFrete></vFrete><vSeg></vSeg><vDesc></vDesc><vOutro></vOutro><indTot>1</indTot><DI><nDI></nDI><dDI></dDI><xLocDesemb></xLocDesemb><UFDesemb></UFDesemb><cExportador></cExportador><adi></adi><nAdicao></nAdicao><cFabricante></cFabricante><vDescDI></vDescDI></DI><xPed></xPed><nItemPed></nItemPed></prod>
<imposto><ICMS></ICMS>
<PIS><PISNT><CST>07</CST></PISNT></PIS>
<COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS>
</imposto></det>
<det nItem="2"><prod><cProd>542</cProd><cEAN></cEAN><xProd>MDF MM X</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M </uCom><qCom>3.0000</qCom><vUnCom>0.0000</vUnCom><vProd>50.0000</vProd><cEANTrib></cEANTrib><uTrib>M </uTrib><qTrib>3.0000</qTrib><vUnTrib>50.0000</vUnTrib><vFrete></vFrete><vSeg></vSeg><vDesc></vDesc><vOutro></vOutro><indTot>1</indTot><DI><nDI></nDI><dDI></dDI><xLocDesemb></xLocDesemb><UFDesemb></UFDesemb><cExportador></cExportador><adi></adi><nAdicao></nAdicao><cFabricante></cFabricante><vDescDI></vDescDI></DI><xPed></xPed><nItemPed></nItemPed></prod>
<imposto><ICMS></ICMS>
<PIS><PISNT><CST>07</CST></PISNT></PIS>
<COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS>
</imposto></det>
<det nItem="3"><prod><cProd>806</cProd><cEAN></cEAN><xProd>MDF MM X</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M </uCom><qCom>5.0000</qCom><vUnCom>0.0000</vUnCom><vProd>30.0000</vProd><cEANTrib></cEANTrib><uTrib>M </uTrib><qTrib>5.0000</qTrib><vUnTrib>30.0000</vUnTrib><vFrete></vFrete><vSeg></vSeg><vDesc></vDesc><vOutro></vOutro><indTot>1</indTot><DI><nDI></nDI><dDI></dDI><xLocDesemb></xLocDesemb><UFDesemb></UFDesemb><cExportador></cExportador><adi></adi><nAdicao></nAdicao><cFabricante></cFabricante><vDescDI></vDescDI></DI><xPed></xPed><nItemPed></nItemPed></prod>
<imposto><ICMS></ICMS>
<PIS><PISNT><CST>07</CST></PISNT></PIS>
<COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS>
</imposto></det>
<total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vBCST>0.00</vBCST><vST>0.00</vST><vProd>0.00</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>0.00</vPIS><vCOFINS>0.00</vCOFINS><vOutro>0.00</vOutro><vNF>0.00</vNF></ICMSTot><ISSQNtot><vServ>0.00</vServ><vBC>0.00</vBC><vISS>0.00</vISS><vPIS></vPIS><vCOFINS></vCOFINS></ISSQNtot></total>
</infNFe>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"></Signature>
</NFe>
</enviNFe>
Mais continuo recebendo a mensagem de :
Status : 297
Motivo : Rejeição: Assinatura difere do calculado
Agora será que estou carregando o arquivo XML gravado em disco corretamente, você poderia mandar um exemplo de como vc carrega o XML na variável String
para enviar no NfeMsgDados. Estou fazendo assim, sera que é a melhor maneira ??
String caminhoXML = "c:\nfe.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File(caminhoXML));
doc.setXmlStandalone(true);
ByteArrayOutputStream os = new ByteArrayOutputStream();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
trans.transform(new DOMSource(doc), new StreamResult(os));
nfeDadosMsg = os.toString();
No teu caso, o c:\nfe.xml já está assinado?
Se sim, então:
public static String readFile(String file) throws IOException, FileNotFoundException {
StringBuffer buffer = new StringBuffer();
BufferedReader in = new BufferedReader(new FileReader(file));
String str;
while ((str = in.readLine()) != null) {
buffer.append(str);
}
in.close();
return buffer.toString();
}
Fala pessoal,
Li em um dos posts que não pode ter espaços em branco no XML, ai fiquei na duvida como que fica a situação de um campo de texto
por exemplo:
posso mandar a descrição do produto desta forma ?
Desculpe a pergunta, mais já estou ficando pirado.
Obrigado
Fala pessoal,Li em um dos posts que não pode ter espaços em branco no XML, ai fiquei na duvida como que fica a situação de um campo de texto
por exemplo:posso mandar a descrição do produto desta forma ?
Desculpe a pergunta, mais já estou ficando pirado.
Obrigado
Não pode ter mais de um espaço entre caracteres. Um de cada vez pode.
Alencar
Fala pessoal,
To chatiado com o erro da assinatura diferente do calculado, lendo vi que tem
que fazer uma validação do arquivo xml , eu não estou fazendo a validação,
gero o XML, assino e envio, será que tem alguma coisa a ver ?
Obrigado,
Fala pessoal,To chatiado com o erro da assinatura diferente do calculado, lendo vi que tem
que fazer uma validação do arquivo xml , eu não estou fazendo a validação,
gero o XML, assino e envio, será que tem alguma coisa a ver ?Obrigado,
A validação diz respeito ao uso do Schema para verificar a estrutura do xml.
O uso ou não deste teste não influencia na assinatura.
O teu problema está na leitura e manipulação do txt assinado do disco para
a memória (variável String). É ai que deve estar modificando alguma coisa e
fazendo com que o digest-value dê diferente do momento da assinatura.
Alencar
senhor, eu juro que um dia eu leio essa thread
Ps.: desculpa o span, mas é que todo dia vejo esse post subir, e ainda não li nada dele =[ T_T
dankshit, conforme o philler postou anteriormente eu uso quase igual a ele
ficou um pouco diferente do dele pq agora nesse novo webservice2 se agente nao adicionar uma tag ex:
antes de todo o conteudo a ser enviado da erro na transmissão entao uso o BufferedReader e para ler o conteudo e adicionar a variavel
para ficar exatamente como foi escrito e assinado e adiciono a tag
BufferedReader in = new BufferedReader(new FileReader(caminho));
while (in.ready()) {
ind ++;
arq_xml += in.readLine() + "\n";
if(ind == 1){
int ind2 = 0;
ind2 = arq_xml.indexOf("?>");
StringBuffer frase = new StringBuffer(arq_xml);
frase.insert(ind2 + 2 , "<nfeDadosMsg>"); // insere a palavra 'Java'
arq_xml = "";
arq_xml += frase;
}
}
in.close();
int ind3 = 0;
ind3 = arq_xml.indexOf("</enviNFe>");
StringBuffer frase2 = new StringBuffer(arq_xml);
frase2.insert(ind3 + 10 , "</nfeDadosMsg>"); // insere a palavra 'Java'
arq_xml = "";
arq_xml += frase2;
Fala pessoal,
evandromib, mudei para o seu metodo de carregaar o arquivo e continuo com o mesmo erro,
vou postar aqui o metodo que uso para gravar o XML após ele ter sido assindo, será que posso estar gravando de forma errada tmabém ?
Depois que faço a assinatura do arquivo, uso este metodo para gravar a String XML em disco.
public boolean GravaRetorno(String xmlFile, String conteudo) {
try {
FileOutputStream file = new FileOutputStream(xmlFile, false);
file.write(conteudo.getBytes());
file.close();
} catch (FileNotFoundException e) {
getErro().setErro(e);
return false;
} catch (IOException e) {
getErro().setErro(e);
return false;
}
return true;
}
Como você faz a gravação da sua String em disco ?
Desde já agradeço
Pessoal, estou postando o meu XML assinado, sera que alguem consegue ver alguma coisa errada nele ?
se conseguirem me avisem por favor…
Agraadeço.
<?xml version="1.0" encoding="UTF-8"?><enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><NFe><infNFe Id="NFe35100307206673000141550010001842931003051084" versao="2.00"><ide><cUf>35</cUf><cNF>305108</cNF><natOp>COMPRA MAT CONS-CONS.DIRETO-NSEC.</natOp><indPag>1</indPag><mod>55</mod><serie>1</serie><nNF>184293</nNF><dEmi>2010-03-17</dEmi><dSaiEnt>2010-03-17</dSaiEnt><hSaiEnt>10:22</hSaiEnt><tpNF>1</tpNF><cMunFG>3503356</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>4</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><procEmi>0</procEmi><verProc>TESTE 135</verProc></ide><emit><CNPJ>07206673000141</CNPJ><xNome>KBG INDUSTRIA ALIMENTICIA LTDA.</xNome><xFant>MOVEIS BECHARA</xFant><enderEmit><xLgr>RUA FRANCISCO GLICERIO</xLgr><nro>1330</nro><xCpl/><xBairro>JARDIM BRASILIA</xBairro><cMun>3503356</cMun><xMun>ARARAS</xMun><UF>SP</UF><CEP>13607300</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderEmit><IE>182166265117</IE><IM>25650</IM><CNAE>123456789</CNAE></emit><avulsa><CNPJ/><xOrgao/><matr/><xAgente/><fone/><UF/><nDAR/><dEmi/><vDAR/><repEmi/><dPag/></avulsa><dest><CNPJ>57143828000205</CNPJ><xNome>CREDI FERRARI ELETRODOMESTICOS</xNome><enderDest><xLgr>AV. MELVIN JONES</xLgr><nro>04</nro><xCpl/><xBairro>CENTRO</xBairro><cMun>3550308</cMun><xMun>SAO PAULO</xMun><UF>SP</UF><CEP>13250330</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderDest><IE>382033709118</IE><ISUF/><email/></dest><det nItem="1"><prod><cProd>4000</cProd><cEAN/><xProd>MDF 15MM</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M2</uCom><qCom>2.0000</qCom><vUnCom>11.0290</vUnCom><vProd>200.0000</vProd><cEANTrib/><uTrib>M2</uTrib><qTrib>2.0000</qTrib><vUnTrib>200.0000</vUnTrib><vFrete/><vSeg/><vDesc/><vOutro/><indTot>1</indTot><DI><nDI/><dDI/><xLocDesemb/><UFDesemb/><cExportador/><adi/><nAdicao/><cFabricante/><vDescDI/></DI><xPed/><nItemPed/></prod><imposto><ICMS/><PIS><PISNT><CST>07</CST></PISNT></PIS><COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS></imposto></det><det nItem="2"><prod><cProd>542</cProd><cEAN/><xProd>MDF 15MM 2</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M2</uCom><qCom>3.0000</qCom><vUnCom>0.0000</vUnCom><vProd>50.0000</vProd><cEANTrib/><uTrib>M2</uTrib><qTrib>3.0000</qTrib><vUnTrib>50.0000</vUnTrib><vFrete/><vSeg/><vDesc/><vOutro/><indTot>1</indTot><DI><nDI/><dDI/><xLocDesemb/><UFDesemb/><cExportador/><adi/><nAdicao/><cFabricante/><vDescDI/></DI><xPed/><nItemPed/></prod><imposto><ICMS/><PIS><PISNT><CST>07</CST></PISNT></PIS><COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS></imposto></det><det nItem="3"><prod><cProd>806</cProd><cEAN/><xProd>MDF 15MM (1,84X2,75)</xProd><NCM>99</NCM><CFOP>155601</CFOP><uCom>M2</uCom><qCom>5.0000</qCom><vUnCom>0.0000</vUnCom><vProd>30.0000</vProd><cEANTrib/><uTrib>M2</uTrib><qTrib>5.0000</qTrib><vUnTrib>30.0000</vUnTrib><vFrete/><vSeg/><vDesc/><vOutro/><indTot>1</indTot><DI><nDI/><dDI/><xLocDesemb/><UFDesemb/><cExportador/><adi/><nAdicao/><cFabricante/><vDescDI/></DI><xPed/><nItemPed/></prod><imposto><ICMS/><PIS><PISNT><CST>07</CST></PISNT></PIS><COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS></imposto></det><total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vBCST>0.00</vBCST><vST>0.00</vST><vProd>0.00</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>0.00</vPIS><vCOFINS>0.00</vCOFINS><vOutro>0.00</vOutro><vNF>0.00</vNF></ICMSTot><ISSQNtot><vServ>0.00</vServ><vBC>0.00</vBC><vISS>0.00</vISS><vPIS/><vCOFINS/></ISSQNtot></total></infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"/><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35100307206673000141550010001842931003051084"><Transforms><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>UHo550Cc34zWOK0XtA2GXvct3tU=</DigestValue></Reference></SignedInfo><SignatureValue>nxLWm6vvwjc60Dq+gU/dE13AIdlTPHZncCwWOkveSAyd0Lo2Ey/HxiUZ7SM2pL+xrrmyssRfI8PQ
iljBCcvfnT/9aT9b0Eg4OqzLm3RasVw0+xj64ZEpId7YvyC01U1qu7sJP2OGupcE7tLyn671qwio
57CLFji+/sKTmJOL7H4=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIGLTCCBRWgAwIBAgIIB+QG8EuLBUcwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCQlIxEzAR
BgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwg
djEwHhcNMDkxMTExMTYwNTM2WhcNMTAxMTExMTYwNTM2WjCB6zELMAkGA1UEBhMCQlIxEzARBgNV
BAoTCklDUC1CcmFzaWwxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDA3
MDIwMjMxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UE
CxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNP
KTEpMCcGA1UEAxMgSyBCIEcgSU5EVVNUUklBIEFMSU1FTlRJQ0lBIExUREEwgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBALtWCa0WPQcKRNVilynWQVxehjXBs13WhLDyQBxpYeD1oa8FfU5NCQ8v
7dY/xiSOQcdW7NCVIv+/w9XV4ZubtfJt8eYNyUvJFIKRR1ASBpP1rbCrzdje6N3okTUfJv3v3sv0
QbyzCu7gYZTLLElr7S2LqofbrDazYrhdtJ0ZMHHNAgMBAAGjggL1MIIC8TAOBgNVHQ8BAf8EBAMC
BeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFLdgqFv5sqauAO10
69VKyZZoZvVcMIG4BgNVHREEgbAwga2BFktCR0FSQVJBU0BURVJSQS5DT00uQlKgOAYFYEwBAwSg
LxMtMDMxMjE5NTI3NzQwOTMzNzgzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoCUGBWBMAQMC
oBwTGkFOVE9OSU8gUk9CRVJUTyBHSElSQUxESU5JoBkGBWBMAQMDoBATDjA3MjA2NjczMDAwMTQx
oBcGBWBMAQMHoA4TDDAwMDAwMDAwMDAwMDBXBgNVHSAEUDBOMEwGBmBMAQIBBjBCMEAGCCsGAQUF
BwIBFjRodHRwOi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvcmVwb3NpdG9yaW8vZHBj
MIHwBgNVHR8EgegwgeUwSaBHoEWGQ2h0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5i
ci9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwQ6BBoD+GPWh0dHA6Ly9sY3IuY2VydGlm
aWNhZG9zLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwU6BRoE+GTWh0dHA6
Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2EvcmVwb3NpdG9yaW8vbGNy
L3NlcmFzYWNkdjEuY3JsMIGXBggrBgEFBQcBAQSBijCBhzA8BggrBgEFBQcwAYYwaHR0cDovL29j
c3AuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9zZXJhc2FjZHYxMEcGCCsGAQUFBzAChjtodHRw
Oi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvY2FkZWlhcy9zZXJhc2FjZHYxLnA3YjAN
BgkqhkiG9w0BAQUFAAOCAQEAFFyu834lK6QpZBB/lZ2oysNeMe/ra4RWRTT7fSi4LxOEtSJerTLF
BIQMxi9X+dPq85mVl39MlG8z/iPQRPDBZQuulwJk72mUts6u/YJ36RO+whs90Q7vTepqujLwRtYN
ERGGec38I5ZRQXlr31KA/3sTYOkrh0nyNlEckuXfW4XWmrtNS8zmZRV+I4MzECtG9gERRAvMlwux
QCMsX3au9/0iLOe+Z1JYrkx1/VuwKezME2g35EgZvDLocfLP1J1ccN92U6qMHhsWHI0bLU5tXm2a
wY2Z9hpeDB+oTNQv0DKt7mVifQisrceZtaOWc0UKOvVyseGQ7Xuxo9BKej7dAw==</X509Certificate></X509Data></KeyInfo></Signature></NFe></enviNFe>
bom aqui dpois que assino o conteudo informado uso este metodo aqui
String caminhoXmlNovo = “C:\nfe_assinada.xml”;
OutputStream os = new FileOutputStream(caminhoXmlNovo);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
trans.transform(new DOMSource(doc), new StreamResult(os));
Fala pessoal,
Consegui resolver o meu problema, na verdade estava montando o XML errado, vou explicar para ajudar quem possa estar com esse problema tbm…
Quando eu gerava meu XML, eu já colocava a TAG de assinatura após o , portanto meu XML antes da ssinatura já estava assim:
</infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"></Signature></NFe></enviNFe>
E percebi que o metodo de assinatura, colocava a TAG <Signature novamente, isso fazer ficar o arquivo errado. portanto meu arquivo XML antes de ser assinado
tá assim agora:
</infNFe></NFe></enviNFe>
Assim passa certinho, não dá mais o erro de Assinatura Diferente do Calculado.
QUE BURRICE A MINHA, desde o dia 13/03/2010 com esse problema, mais serve de experiencia.
Espero ajudar alguem…
Fala galera… alguem pode me dar uma luz…
tenho minha nfe no arquivo xml… e qdo importo ela pra minha msg soap, todos os lugares que tem o namespace “xmlns” fica vazio…
ou seja fica assim :
<enviNFe xmlns="" versao="2.00>
1
e assim por diante…
alguem tem ideia do que possa estar causando isso ??
Opa dankshit blz heim
é os erros mais chatos sempre são os de simples solução rsrs sempre passo por isso tb rsrs
aproveitando que ta todo mundo já conseguindo emitir a Nota para sefaz , queria saber o que vcs usam para gerar o DANFE
como eu desenvolvo um sistema ERP WEB entao o danfe é em HTML ( chato de fazer manutenção)
ai resolvi ver se fica mais pratico usando o IRerport
alguem ja usa essa feramentas para gerar o DANFE tem alguma dica ?
desde ja
obrigado
flw
Ae galera… consegui enviar OBAAA
Para aqueles que por ventura passar pelo mesmo que eu, não esquecam de que quando forem fazer o DocumentFactory setar o setNamespaceAware(true);
valew pela atencao pessoal…!!
Fla pessoal,
É sempre assim evandromib, é sempre uma besteira que enrosca…
mais vamos para o proximo erro…
To nesse agora:
Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes
parece estar tudo certo, mais qualquer coisa é mehor que o da assinatura…uahuahauhauh
Fla pessoal,É sempre assim evandromib, é sempre uma besteira que enrosca…
mais vamos para o proximo erro…To nesse agora:
Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes
parece estar tudo certo, mais qualquer coisa é mehor que o da assinatura…uahuahauhauh
Esta realmente parece ser mais fácil.
Pegue as informações que estão nas tags correspondentes e concatene eleas em um editor.
Não esqueca de colocar os zeros a esquerda e tals…
Dae é só comparar pra ver em que detalhe esta o furo.
Alencar
hehe
dankshit essa ai pelo menos é mais tranquilo de resolver
verifica se os dados da sua chave bate com o estipulado no manual
UF ano/mes cnpj mod serie nº da NF forma emissão cod numerico Digito verificador
35| 1003 |60393873000133|55 |001 |000000720| 1 |02059899 | 8
qquer coisa ta no novo manual é que mudaram a concatenação em relação ao manual antigo
evandromib, vc perguntou sobre ferramenta de geracao de relatorio pra web
tenho uma ferramenta que pode te atender…!!
se interessar me mande MP
+++++++
Aproveitando…
alguem sabe me dizer se o ano que vai no ID do xml de inutilizacao é o ano atual, ou o ano que a nfe que eu quero inutilizar foi gerado/usado/etc ??
guilherme_ha , entao to estudando o uso do Ireport mais para agilisar na manutenção do que ja existe aqui , mais ja vejo com vc isso sim
em relação a sua duvida é o ano atual sim
funciona assim a inutilização vc esta emitindo as notas 1,2,3 dpois emitiu a 6,7,8,9 no mes de janeiro as notas 4, 5 tem que ser inutilizada até 15 dias do mes de fevereiro da data da ultima nota emitida no mes de janeiro para poder inutilizar a numeração 4,5
para não voltar rejeição
nao entendi qdo vc fala " até 15 dias do mes de fevereiro da data da ultima nf emitida"
mas onde esta essa informação que eu nao encontrei em lugar algum…!??
se não me engano no portal nfe tem essas informações vou achar aqui o local e te passo
o exemplo é que sua ultima nota emitida em janeiro vamos supor qque foi a nota numero 9 , entao vc tem se nao me engano de 10 a 15 dias subsequentes do proximo mes para inutilizar a nota 4 e 5 , pq se vc fechar o mes foram emitidas 9 notas no mes de janeiro as notas 4 e 5 tem esse prazo pois as notas 10,11 ja serao referentes a fevereiro
Ahh ta… entendi …
li e re-li e agora entendi…rs
Valew pela explicação…!!
Pessoal, o miolo do método de assinatura está abaixo. Notem que as variáveis locais devem ser carregadas conforme seu gosto, tipo usarToken para mim é um boolean que informa o uso de A3, etc...Espero que entendam.
Qualquer coisa, mandem msg em pvt.Alencar
// previne contra &, < e > xml = Utils.caracterToHTML(xml); try { // gera o DOM XMLSignatureFactory que sera usado para gerar o // envelope // com.sun.org.apache.xalan.internal.xsltc.DOM String providerName = System.getProperty("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI"); fac = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance()); // cria uma referencia ao envelope e define o algoritmo SHA1 Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null, null); // cria o SignedInfo que sera assinado SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref)); // gera o KeyInfo X509Certificate certif; if (!usarToken) { certif = (X509Certificate) this.getCertificateFromFile(file, alias, senhaContainer); } else { certif = (X509Certificate) this.getCertificateFromToken(senhaContainer); } KeyInfoFactory kif = fac.getKeyInfoFactory(); List x509Content = new ArrayList(); x509Content.add(certif.getSubjectX500Principal().getName()); x509Content.add(certif); X509Data xd = kif.newX509Data(x509Content); KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd)); // instancia o documento a ser assinado ByteArrayInputStream xmlSource = new ByteArrayInputStream(xml.getBytes("UTF-8")); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder docBuilder = dbf.newDocumentBuilder(); doc = docBuilder.parse(xmlSource); // cria o DOMSignContext informando a private key DOMSignContext dsc = new DOMSignContext(pk, doc.getDocumentElement()); // cria a assinatura do xml XMLSignature signature = fac.newXMLSignature(si, ki); // assina o xml signature.sign(dsc); return XMLUtils.DocumentToString(doc); } catch (Exception e) { e.printStackTrace(); throw new Exception(e.getMessage()); }
Aí galera... to tendo problemas com essa parte nesse código:
String providerName = System.getProperty("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
fac = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance());
Está me retornando: java.lang.ClassNotFoundException: org.jcp.XML.dsig.internal.dom.XMLDSigRI
Mas eu já vi que essa classe existe no rt.jar.
Alguém sabe me explicar se é preciso pegar a classe de alguma outra biblioteca, ou se tem alguma outra configuração que eu deixei passar???
Obrigado
A classe está no pacote appserv-rt.jar.
Alencar
Bom dia Pessoal,
vamos lá dinovo, estou com este erro que não estou entendendo.
<cStat>999</cStat><xMotivo>Rejeição: Erro não catalogado (não foi possível recuperar o detalhe do erro)</xMotivo>
Ontem passei a tarde arrumando vários errinhos na validação da Nota, tipo… IE inválida, Total do ICMS…consertei vários deles,
mais ai depois que arrumei o ultimo erro no transportador, começou a dar essa mensagem. Se eu tirar a TAG do Transportador
começa a dar a mesagem:
Rejeição: CNPJ do Transportador inválido CNPJ do
Se eu tirar volta a dar a mensagem acima, o cstat 999.
alguém passou por isso ?
Desde já agradeço.
dankshit, pegue seu xml e tente validar no site do sefaz de RS…
la ele aponta os erros, e da a posicao do xml onde se encontra esse erro.
Talvez possa te ajudar na validação mais rapidamente
Fala pessoal,
guilherme_ha, você me salvou dinovo, muito obigado mesmo, o XML ainda tinha alguns acertos a serem feitos, e no validador do site, me deu certinho o que era.
Agora consegui enviar e autorizar o uso da NF-e.
Valeu....
Boa tarde pessoal,
já li muita coisa aqui no GUJ e resolvemos muitos problemas, mas tem um que não consegui resolver. Se puderem me dar um help agradeço!
Vamos aos fatos:
- Meu equipamento de leitura é o OMNIKEY 3021
- O Certificado é um A3
- Tenho o PIN e já estamos cadastrados na SEFAZ correspondente
- Já resolvemos a parte de XML, validação e tal…
- Nosso servidor é Linux (Ubuntu)
- Liguei para o pessoal da Certisign para tirar duvidas e disseram que NÃO EXISTE SUPORTE PARA LEITURA DE CARTÕES EM LINUX, SOMENTE EM WINDOWS. (Acho isto um absurdo, mas…)
O problema é:
- Apesar de conseguirmos nos comunicar com o equipamento, não estamos conseguindo fazer a assinatura do XML para o envio. Ou seja, não estamos conseguindo fazer uma comunicação com o cartão.
Gostaria de saber quais os passos (ou onde tem), quais os Frameworks (só JavaCard resolve?), etc… para que eu possa realizar a assinatura de um XML.
Lembrando que utilizando LINUX, para isto.
Desde já, agradeço pelas dicas…
Meu
Não seria o caso de usar um HSM (Hardware Security Module)?
Alencar
AGAraujo , eu uso a leitura do cartao no windows… acredito que deva ser o mesmo codigo pra linux, ja que estamos falando de java…!!
tente isso…!!
Provider p = new sun.security.pkcs11.SunPKCS11(this.cfg);
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, "senha".toCharArray());
esse this.cfg é uma string que tem o caminho de um arquivo.cfg que contem o seguinte
name=nf-eSerasa
library=c:\windows\System32\aetpkss1.dll
attributes = compatibility
essa dll taves tenho algo pro linux. já que com o so e o cartao se comunicam
espero ter ajudado…
boa sorte
Abraco
Olhe neste endereço: http://www.smartcardfocus.com/ilp/id~114/p/readers.shtml
“Standard PC/SC drivers for Windows 98, ME, NT, 2000 and XP with every product. We also offer Linux and Mac OS X drivers for the 3021. Synchronous API drivers are also available for many of the same operating systems from the Omnikey website.”
Alencar
Pois é!! Já estamos tentando isto e POR ALGUM motivo não estamos conseguindo!
Onde consigo material sobre este arquivo de configuração? Talvez seja algo que esteja faltando ou estamos errando!! (Suposição 1).
Dou resposta sobre o avanço!!
esse site me parece que tem uma versao pra linux…
de uma olhada…
Fala pessoal,
Pegando carona no assunto do Certificado A3, alguém sabe se é obrigado a usar o JKS para fazer funcionar o certificado A3 (Cartão),
ou só é necessário gerar o JKS para usar com o Certificado A1 (.pfx)
Value pessoal.
Nao é obrigatorio nao…
eu por exemplo nao uso JKS,
uso somente o .pfx
Fala pessoal,Pegando carona no assunto do Certificado A3, alguém sabe se é obrigado a usar o JKS para fazer funcionar o certificado A3 (Cartão),
ou só é necessário gerar o JKS para usar com o Certificado A1 (.pfx)
Value pessoal.
Como já disse o colega, não é obrigatório. Inclusive da menos trabalhos fazer direto.
Mas eu prefiro sempre importar o certificado e toda a sua cadeia dentro de um JKS
por motivos de segurança.
Neste caso, o cliente não corre o risco do certificado ser copiado facilmente.
Alencar
alguem ja colocou o header nfeCabecMsg num SOAP usando JAX-WS ?
Olá pessoal...
estou com um problema na geração do arquivo xml "NFe.xml"
Estou fazendo o seguinte:
Gerei meus bens através das instruções deste site utilizando JAXB.
depois eu faço um "teste" eu pego o arquivo xml de exemplo que está disponivel no blog da receita neste site
ai eu faço assim:public static void main(String[] args) {
try {
NFe retorno = JAXB.unmarshal("C:\\NFe.xml", NFe.class); // do xml de exemplo da receita, eu passo para os beans gerados pelo meu JAXB
toXML(retorno); // depois eu faço o processo inverso de novo, para ve se meus beans gerados, foram gerados corretamente...
} catch (JAXBException e) {
e.printStackTrace();
}
}
public static void toXML(NFe root) throws JAXBException {
JAXBContext ctx = JAXBContext.newInstance(NFe.class);
Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, new File("D://NFe.xml"));
System.out.println("Arquivo gerado com sucesso!");
}
<?xml version="1.0" encoding="utf-8"?>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe"> // a tag NFe
<infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10">
<ide>...
...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
<infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10">
<ide>...
...
Com o nFe minusculo na hora de eu validar no site da receita da erro....
o que pode está acontecendo para o meu xml está saindo diferente?
aparece aquele "xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" tambem no meu...
mas eu soh alterando o nFe para NFe e boto para validar.. jah diz que o arquivo está certo...
alguem tem idéia do que pode ser??
Olá pessoal...estou com um problema na geração do arquivo xml "NFe.xml"
Estou fazendo o seguinte:
Gerei meus bens através das instruções deste site utilizando JAXB.
depois eu faço um "teste" eu pego o arquivo xml de exemplo que está disponivel no blog da receita neste site
ai eu faço assim:Porem o que acontece é que no arquivo xml exemplo da receita nesta parte do código em xml está assim:public static void main(String[] args) { try { NFe retorno = JAXB.unmarshal("C:\\NFe.xml", NFe.class); // do xml de exemplo da receita, eu passo para os beans gerados pelo meu JAXB toXML(retorno); // depois eu faço o processo inverso de novo, para ve se meus beans gerados, foram gerados corretamente... } catch (JAXBException e) { e.printStackTrace(); } } public static void toXML(NFe root) throws JAXBException { JAXBContext ctx = JAXBContext.newInstance(NFe.class); Marshaller marshaller = ctx.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(root, new File("D://NFe.xml")); System.out.println("Arquivo gerado com sucesso!"); }no meu arquivo sai assim:<?xml version="1.0" encoding="utf-8"?> <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> // a tag NFe <infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10"> <ide>... ...<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <nFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"> <infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10"> <ide>... ...Com o nFe minusculo na hora de eu validar no site da receita da erro....
o que pode está acontecendo para o meu xml está saindo diferente?aparece aquele "xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" tambem no meu...
mas eu soh alterando o nFe para NFe e boto para validar.. jah diz que o arquivo está certo...alguem tem idéia do que pode ser??
quando vc gera os beans pelo JAXB aconte esses rolos, ele adiciona esse ns2 e esse problema de nomeação com algumas tags, por isso decidi fazer os beans todos na mão porque esse xml ai de exemplo nem contem todos os campos que se utiliza na NFe, pois tem varias formas de se emitir uma NFe tributações aliquotas pins cofins redução de impostos e toda esse m. do governo, por isso optei em fazer os beans no braço seguindo a risca o manual do contribuinte e usando as annotation do JAXB para construir meu xml, quando dou unmarshall não tenho problema algum, os beans são populados corretamente e pra qualquer tipo de nota fiscal gerada esta conforme o padrão da receita, ai vai um exemplo, pra solução do ns2 tem varios posts aqui que ensinam como remover, abraços.
@XmlRootElement(name = "NFe")
@XmlAccessorType(XmlAccessType.FIELD)
public class NFe {
public NFe() {
xmlns = "http://www.portalfiscal.inf.br/nfe";
}
@XmlElement(name = "infNFe")
private InfNFe infNFe;
@XmlAttribute(name = "xmlns")
private String xmlns;
@XmlElement(name = "Signature")
private Signature signature;
public InfNFe getInfNFe() {
return infNFe;
}
public void setInfNFe(InfNFe infNFe) {
this.infNFe = infNFe;
}
public Signature getSignature() {
return signature;
}
public void setSignature(Signature signature) {
this.signature = signature;
}
niguem ???
não acredito que ninguem tenha implementado usando JAX-WS ???
Fala pessoal, to apanhando um monte com o certificado A3, será que alguém me ajuda…
Com o certificado A1 ( com o arquivo.pfx) eu já consegui mandar a nota blz, mais com o cartão não tá dando, to fazendo assim:
o Arquivo Token tá ssim:
name = SafeSign
library = C:/WINDOWS/system32/aetpkss1.dll
// para setar a segurança
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Provider p = new sun.security.pkcs11.SunPKCS11(configuracaoToken);
Security.addProvider(p);
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStorePassword", senhaToken);
depois para fazer a assinatura to fazendo assim:
// Load the KeyStore and get the signing key and certificate.
KeyStore ks = null;
boolean token = true;
Provider p = new sun.security.pkcs11.SunPKCS11(configuracaoToken);
Security.addProvider(p);
ks = KeyStore.getInstance("PKCS11");
ks.load(null, senha.toCharArray());
Enumeration aliasesEnum = ks.aliases();
String alias = "";
while (aliasesEnum.hasMoreElements()) {
alias = (String) aliasesEnum.nextElement();
if (ks.isKeyEntry(alias)) {
// System.out.println(alias);
break;
}
}
KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias,
new KeyStore.PasswordProtection(senha.toCharArray()));
X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
// Create the KeyInfo containing the X509Data.
KeyInfoFactory kif = fac.getKeyInfoFactory();
List x509Content = new ArrayList();
x509Content.add(cert);
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
Assina blz tbm, mais na hora de enviar a nota pelo web service me da esse erro:
PKIX path building failed:
unable to find valid certification path to requested target
Se alguém puder dar uma luz…
Desde já agradeço.
Fala pessoal, to apanhando um monte com o certificado A3, será que alguém me ajuda…Com o certificado A1 ( com o arquivo.pfx) eu já consegui mandar a nota blz, mais com o cartão não tá dando, to fazendo assim:
o Arquivo Token tá ssim:
name = SafeSign library = C:/WINDOWS/system32/aetpkss1.dll// para setar a segurança
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Provider p = new sun.security.pkcs11.SunPKCS11(configuracaoToken); Security.addProvider(p); System.setProperty("javax.net.ssl.keyStoreType", "PKCS11"); System.setProperty("javax.net.ssl.keyStore", "NONE"); System.setProperty("javax.net.ssl.keyStorePassword", senhaToken);depois para fazer a assinatura to fazendo assim:
// Load the KeyStore and get the signing key and certificate. KeyStore ks = null; boolean token = true; Provider p = new sun.security.pkcs11.SunPKCS11(configuracaoToken); Security.addProvider(p); ks = KeyStore.getInstance("PKCS11"); ks.load(null, senha.toCharArray()); Enumeration aliasesEnum = ks.aliases(); String alias = ""; while (aliasesEnum.hasMoreElements()) { alias = (String) aliasesEnum.nextElement(); if (ks.isKeyEntry(alias)) { // System.out.println(alias); break; } } KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(senha.toCharArray())); X509Certificate cert = (X509Certificate) keyEntry.getCertificate(); // Create the KeyInfo containing the X509Data. KeyInfoFactory kif = fac.getKeyInfoFactory(); List x509Content = new ArrayList(); x509Content.add(cert); X509Data xd = kif.newX509Data(x509Content); KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));Assina blz tbm, mais na hora de enviar a nota pelo web service me da esse erro:PKIX path building failed: unable to find valid certification path to requested targetSe alguém puder dar uma luz…
Desde já agradeço.
parece que ele não encontrou seu certificado
ai vai uma classe de exemplo
public static String assinarRaiz(String xml, String certificado, String keyStorePass, boolean token) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
// Document docs = builder.parse(new File(
// "c:/xml/430802017886010001735500000000010000030371-nfe.xml"));
Document doc = factory.newDocumentBuilder().parse(
new ByteArrayInputStream(xml.getBytes()));
doc.getDocumentElement().removeAttribute("xmlns:ns2");
// NodeList elements = doc.getElementsByTagName("infNFe");
Node element = doc.getDocumentElement().getFirstChild();//.getNextSibling();
// elements.getLength();
Element el = (Element) element;
// Element el =
// doc.getDocumentElement().getFirstChild().getChildNodes();
String id = el.getAttribute("Id");
// Create a DOM XMLSignatureFactory that will be used to
// generate the enveloped signature.
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
// Create a Reference to the enveloped document (in this case,
// you are signing the whole document, so a URI of "" signifies
// that, and also specify the SHA1 digest algorithm and
// the ENVELOPED Transform.
ArrayList transformList = new ArrayList();
TransformParameterSpec tps = null;
Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED,
tps);
Transform c14NTransform = fac.newTransform(
"http://www.w3.org/TR/2001/REC-xml-c14n-20010315", tps);
transformList.add(envelopedTransform);
transformList.add(c14NTransform);
// Load the KeyStore and get the signing key and certificate.
KeyStore ks = null;
if (token) { //AQUI SE FOR TOKEN(A3)
Provider p = new sun.security.pkcs11.SunPKCS11("c:\\nfe\\certificados\\token.cfg");
Security.addProvider(p);
ks = KeyStore.getInstance("PKCS11");
ks.load(null, keyStorePass.toCharArray());
} else {
ks = KeyStore.getInstance("PKCS12");
FileInputStream fis = new FileInputStream(certificado);
//load the keystore
ks.load(fis, keyStorePass.toCharArray());
}
String alias = ks.aliases().nextElement();
KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(keyStorePass.toCharArray()));
X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
// Create the KeyInfo containing the X509Data.
KeyInfoFactory kif = fac.getKeyInfoFactory();
List x509Content = new ArrayList();
// x509Content.add(cert.getSubjectX500Principal().getName());
x509Content.add(cert);
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
// doc.getDocumentElement().removeAttribute("xmlns:ns2");
// ((Element)
// doc.getDocumentElement().getElementsByTagName("NFe").item(0))
// .setAttribute("xmlns", "http://www.portalfiscal.inf.br/nfe");
// Create a DOM XMLSignatureFactory that will be used to
// generate the enveloped signature.
Reference ref = fac.newReference("#" + id, fac.newDigestMethod(
DigestMethod.SHA1, null), transformList, null, null);
// Create the SignedInfo.
SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(
CanonicalizationMethod.INCLUSIVE,
(C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
Collections.singletonList(ref));
// Create the XMLSignature, but don't sign it yet.
XMLSignature signature = fac.newXMLSignature(si, ki);
// Marshal, generate, and sign the enveloped signature.
// Create a DOMSignContext and specify the RSA PrivateKey and
// location of the resulting XMLSignature's parent element.
DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(), doc.getDocumentElement());
signature.sign(dsc);
// Output the resulting document.
ByteArrayOutputStream os = new ByteArrayOutputStream();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
trans.transform(new DOMSource(doc), new StreamResult(os));
return os.toString();
}
e o arquivo token.cfg apontando pra essa dll
name = SmartCard
library = C:\WINDOWS\system32\aetpkss1.dll
e quem me ajuda no lance do JAX-WS pra passar o nfeCabecMsg no header do SOAP ???
Fala pessoal,
Ainda estou com o problema de envio da nfe com o certificado A3, será que estou fazendo alguma coisa errada na parte das propriedades,
porque assina a nota sem erros, mais na hora do envio da nfe da o erro pra mim.
PKIX path building failed
unable to find valid certification path to requested target
Queria fazer funcionar sem usar o JKS.
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Provider p = new sun.security.pkcs11.SunPKCS11(configuracaoToken);
Security.addProvider(p);
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStorePassword", senhaToken);
Obrigado
Fala pessoal,Ainda estou com o problema de envio da nfe com o certificado A3, será que estou fazendo alguma coisa errada na parte das propriedades,
porque assina a nota sem erros, mais na hora do envio da nfe da o erro pra mim.PKIX path building failed
unable to find valid certification path to requested target
Queria fazer funcionar sem usar o JKS.
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Provider p = new sun.security.pkcs11.SunPKCS11(configuracaoToken); Security.addProvider(p); System.setProperty("javax.net.ssl.keyStoreType", "PKCS11"); System.setProperty("javax.net.ssl.keyStore", "NONE"); System.setProperty("javax.net.ssl.keyStorePassword", senhaToken);Obrigado
brother
unable to find valid certification path to requested target
incapaz de encontrar o caminho válido de destino do certificado solicitado
a classe que passei acima não resolve ? porque testei aqui com o A3 e funciona blz, abraços.
Fala pessoal,
aix , peguei a sua classe para testar, mais ela assinou meu XML fora da TAG , ai peguei somente a parte do certificado e colei na minha classe de assinatura,
mais recebi o mesmo erro.
Você que já passou por esse problema, sabe me dizer se tenho que fazer mais alguma coisa para instalar o cartão.
To com um cartão do Serasa modelo PERTO, que peguei com o cliente, segui o passo a passo do site www.certificado digital.com.br. Olho no programinha do cartão
e ele está como “operacional”. Não sei se deve fazer mais alguma coisa.
Desde já agradeço.
Fala pessoal,
aix , peguei a sua classe para testar, mais ela assinou meu XML fora da TAG , ai peguei somente a parte do certificado e colei na minha classe de assinatura,
mais recebi o mesmo erro.Você que já passou por esse problema, sabe me dizer se tenho que fazer mais alguma coisa para instalar o cartão.
To com um cartão do Serasa modelo PERTO, que peguei com o cliente, segui o passo a passo do site www.certificado digital.com.br. Olho no programinha do cartãoe ele está como “operacional”. Não sei se deve fazer mais alguma coisa.
Desde já agradeço.
Duas possibilidades para este erro:
- No seu cartao nao tem toda a cadeia certificadora;
- No jks, nao existe a cadeia certificadora do emissor do certificado da receita que voce esta acessando.
Para nao poluir demais este forum, podemos trocar algumas msg em pvt e quando resolver, posta o resultado, falo?
Alencar
Pessoal, os clientes de vocês tem adquirido certificado A3 da CEF?
Pergunto pois os certificados emitidos por esta AC tem validde máxima
até domingo, 30 de outubro de 2011 20:59:00.
Isto se deve ao certificado raiz ICP-Brasil (não o v1) que vence um mes
depois.
Portanto, mesmo sendo A3, o certificado emitido pela AC CAIXA PJ terá
no máximo 1 ano e alguns meses de validade.
Interessante como a ICP ainda não tomou providências, se é que pode.
Alencar
dankshit , verifique se toda a cadeia do cartão esta presente.
Eu tbm tenho um cartão desse modelo “PERTO” e consegui funcionar utilizando aquela classe que postei semana passada, verifique se vc tem aquela dll no c:\windows, e claro, verifique se o caminho esta certo, pois varia de acordo com o windows. por exemplo
c:\winnt… (windows 200)
c:\windows… (Windows xp)
sei que parece tonteira, mas agente sempre erra as coisas mais fáceis…!!
Aí galera… estou com o mesmo problema aí de muitos, não conseguindo utilizar o certificado que está no cartão A3 para assinar a conexão com o Web Service.
O certificado está correto, já verifiquei. Inclusive a assinatura dos XMLs já está correta.
Meu leitor é aquele do Serasa, e o cartão é o e-CNPJ.
Meu código está assim:
public static void signature() {
char pin[] = "123456".toCharArray();
String config = "./token.cfg";
Provider pr = new sun.security.pkcs11.SunPKCS11(config);
java.security.Security.addProvider(pr);
System.out.println(pr.getName());
try
{
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
KeyStore ks = ks = KeyStore.getInstance("pkcs11");
ks.load(null, pin);
KeyStore.PrivateKeyEntry keyEntry = null;
for (Enumeration e = ks.aliases(); e.hasMoreElements();)
{
keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry((String) e.nextElement(),
new KeyStore.PasswordProtection(pin));
}
X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
System.out.println(" ------->>>>>> " + ks.getCertificateAlias(cert));
KeyInfoFactory kif = fac.getKeyInfoFactory();
ArrayList x509Content = new ArrayList();
x509Content.add(cert);
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
}
catch (KeyStoreException e){
e.printStackTrace();
}catch (NoSuchAlgorithmException e){
e.printStackTrace();
}catch (CertificateException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}catch (UnrecoverableEntryException e){
e.printStackTrace();
}
}
public static void main(String[] args)
throws XMLStreamException, RemoteException
{
System.setProperty("javax.net.debug", "ssl");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
//System.setProperty("javax.net.ssl.trustStoreType", "JKS");
//System.setProperty("javax.net.ssl.trustStore", "./nfe1.jks");//caminho do arquivo criado pelo o InstallCert no caso o jssecacerts
//System.setProperty("javax.net.ssl.trustStorePassword", "123456");
//System.setProperty("javax.net.ssl.trustStoreAlias", "nfeKey");
System.setProperty("javax.net.ssl.trustStore", "NONE");//caminho do arquivo criado pelo o InstallCert no caso o jssecacerts
System.setProperty("javax.net.ssl.trustStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SafeSign");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");
A3.signature();
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
NfeStatusServico2Stub.NfeDadosMsg dados = new NfeStatusServico2Stub.NfeDadosMsg();
String s = "<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>2</tpAmb>" + "<cUF>43</cUF>" + "<xServ>STATUS</xServ>" + "</consStatServ>";
OMElement el = AXIOMUtil.stringToOM(s);
dados.setExtraElement(el);
NfeStatusServico2Stub.NfeCabecMsg cab = new NfeStatusServico2Stub.NfeCabecMsg();
cab.setVersaoDados("2.00");
cab.setCUF("43");
NfeStatusServico2Stub.NfeCabecMsgE cabE = new NfeStatusServico2Stub.NfeCabecMsgE();
cabE.setNfeCabecMsg(cab);
System.out.println(stub.nfeStatusServicoNF2(dados, cabE).getExtraElement());
}
O erro que me retorna são esses:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 49 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
... 55 more
Alguém saberia como resolver isso???
Alguns sugerem utilizar a trustStore, mas não entendi se realmente é necessário e/ou como devo pegar esse arquivo.
Obrigado
Aí galera… estou com o mesmo problema aí de muitos, não conseguindo utilizar o certificado que está no cartão A3 para assinar a conexão com o Web Service.O certificado está correto, já verifiquei. Inclusive a assinatura dos XMLs já está correta.
Meu leitor é aquele do Serasa, e o cartão é o e-CNPJ.
Vamos la, por partes:
Você afirmou que o seu problema não é assinar, ok?
Então o galho está na verificação do certificado do site de destino, o que não tem nada a ver com assinatura.
Para isso, você deve (pelo menos foi o que fiz e utilizo sem problemas) definir o truststore onde o certificado do site (SEFAZ) será validado.
Fiz assim:
// configura o acesso dos certificados de validacao
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", pathV);
System.setProperty("javax.net.ssl.trustStoreAlias", aliasV);
System.setProperty("javax.net.ssl.trustStorePassword", passV);
onde:
pathV é uma String que indica o jks que contém todos os certificados de todas as ACs do brasil;
aliasV é o aliasV tenho setado como “serpro”, mas pra te dizer a verdade, não serve pra nada;
passV é a senha do jks.
como este JKS contém todos os certificados das ACs do brasil, qualquer certificado que o site use será validado.
Com isso e com o seu smartcard contendo também toda a cadeia de certificação do seu certificado, a conexão é garantida.
Caso precise, posso lhe disponibilizar o meu jks. Mande msg em pvt.
Alencar
Alguém ja montou a NFe do destinátario??
eu montei a nfe do destinatário , mas quando valido da um erro loco…
org.xml.sax.SAXParseException: Identity Constraint error: identity constraint "KeyRef@1d15445" has a keyref which refers to a key or unique that is out of scope.
se alguém tiver alguma dica…
alguem sabe de algum validador para o layout 2?
abraco
Alguém ja montou a NFe do destinátario??
eu montei a nfe do destinatário , mas quando valido da um erro loco…
org.xml.sax.SAXParseException: Identity Constraint error: identity constraint "KeyRef@1d15445" has a keyref which refers to a key or unique that is out of scope.
se alguém tiver alguma dica…
alguem sabe de algum validador para o layout 2?abraco
Pergunto: o que seria a NFe do destinatário? Algo como a " Distribuição da NF-e para o Destinatário", pg 105 do manual?
Você mesmo pode fazer um validador usando os schemas disponíveis pelo pacote em uso, hoje na versão PL005d.
A partir de abril/2010, versão PL006c (creio que seja a ultima).
Se quiser uma ajuda nisso, mande uma msg em pvt.
Alencar
Alguém ja montou a NFe do destinátario??
eu montei a nfe do destinatário , mas quando valido da um erro loco…
org.xml.sax.SAXParseException: Identity Constraint error: identity constraint "KeyRef@1d15445" has a keyref which refers to a key or unique that is out of scope.
se alguém tiver alguma dica…
alguem sabe de algum validador para o layout 2?abraco
Pergunto: o que seria a NFe do destinatário? Algo como a " Distribuição da NF-e para o Destinatário", pg 105 do manual?
Você mesmo pode fazer um validador usando os schemas disponíveis pelo pacote em uso, hoje na versão PL005d.
A partir de abril/2010, versão PL006c (creio que seja a ultima).
Se quiser uma ajuda nisso, mande uma msg em pvt.Alencar
então philler… é bem essa página mesmo…
mas consegui arrumar… na verdade eu estava usando o pacote de schema PL_006preC ai baixei o PL_006e e ai foi na boa…
pq no 6e não tem essa chave de referencia que tem no 6c…
acho que os caras tinham meio q se perdido com o schema e o layout…
mas valeo pela ajuda…
Aí galera… estou com o mesmo problema aí de muitos, não conseguindo utilizar o certificado que está no cartão A3 para assinar a conexão com o Web Service.O certificado está correto, já verifiquei. Inclusive a assinatura dos XMLs já está correta.
Meu leitor é aquele do Serasa, e o cartão é o e-CNPJ.
Vamos la, por partes:
Você afirmou que o seu problema não é assinar, ok?
Então o galho está na verificação do certificado do site de destino, o que não tem nada a ver com assinatura.Para isso, você deve (pelo menos foi o que fiz e utilizo sem problemas) definir o truststore onde o certificado do site (SEFAZ) será validado.
Fiz assim:// configura o acesso dos certificados de validacao System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore", pathV); System.setProperty("javax.net.ssl.trustStoreAlias", aliasV); System.setProperty("javax.net.ssl.trustStorePassword", passV);onde: pathV é uma String que indica o jks que contém todos os certificados de todas as ACs do brasil; aliasV é o aliasV tenho setado como “serpro”, mas pra te dizer a verdade, não serve pra nada; passV é a senha do jks.como este JKS contém todos os certificados das ACs do brasil, qualquer certificado que o site use será validado.
Com isso e com o seu smartcard contendo também toda a cadeia de certificação do seu certificado, a conexão é garantida.
Caso precise, posso lhe disponibilizar o meu jks. Mande msg em pvt.Alencar
Aí… consegui resolver. Já testei tudo certinho com o Web Service de consulta de Status, tudo funcionou perfeito.
Consegui resolver depois de ler essa página: http://blogs.sun.com/andreas/entry/no_more_unable_to_find
O que faltava era importar os certificados da receita, os que são retornados para mim quando tento estabelecer uma conexão ssl com eles.
Porque se eu não tiver estes certificados marcados como confiáveis, a conexão não é estabelecida.
Nesse tutorial aí do link o cara passa um programa chamado InstallCert, que até já foi falado aqui no fórum.
Você tem que passar a URL da receita pro programa, no meu caso foi a de SP: homologacao.nfe.fazenda.sp.gov.br
O programa vai gerar um arquivo com o nome de jssecacerts
É este o arquivo que deve ser configurado lá nas propriedades do java, antes de fazer a conexão com o Web Service:
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
// setando a armazenagem de certificados confiáveis
System.setProperty("javax.net.ssl.trustStore", "./jssecacerts");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
// setando a armazenagem do certificado com a chave privada
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SafeSign");
// conexão com o web service via o stub
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
NfeStatusServico2Stub.NfeDadosMsg dados = new NfeStatusServico2Stub.NfeDadosMsg();
String s = "<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>2</tpAmb>" + "<cUF>43</cUF>" + "<xServ>STATUS</xServ>" + "</consStatServ>";
OMElement el = AXIOMUtil.stringToOM(s);
dados.setExtraElement(el);
NfeStatusServico2Stub.NfeCabecMsg cab = new NfeStatusServico2Stub.NfeCabecMsg();
cab.setVersaoDados("2.00");
cab.setCUF("43");
NfeStatusServico2Stub.NfeCabecMsgE cabE = new NfeStatusServico2Stub.NfeCabecMsgE();
cabE.setNfeCabecMsg(cab);
System.out.println(stub.nfeStatusServicoNF2(dados, cabE).getExtraElement());
Aí funcionou.
Obrigado a todos os que tiram um tempo pra contribuir aqui no fórum. É por isso que Java é f*** demais, hehehehh
Fala pessoal,
Alguém esta com problemas para consulta de recibos de envio de lotes de NF-e em ambiente de homologação SP ?
Toda vez que consulta um lote que fiz a partir de hj dia 30/03/2010, me retorna a mensagem
225 - Falha no Schema XML do lote de Nfe.
Se eu consultar um lote que foi feito anteriormente, consulta tudo certinho…
Desde já agradeço.
Boa tarde pessoal!
Depois de alguns dias de luta estamos recebendo a seguinte exception :
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:808)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1139)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(HttpsURLConnectionOldImpl.java:200)
at org.springframework.ws.transport.http.HttpUrlConnection.getRequestOutputStream(HttpUrlConnection.java:81)
at org.springframework.ws.transport.AbstractSenderConnection$RequestTransportOutputStream.createOutputStream(AbstractSenderConnection.java:101)
at org.springframework.ws.transport.TransportOutputStream.getOutputStream(TransportOutputStream.java:41)
at org.springframework.ws.transport.TransportOutputStream.write(TransportOutputStream.java:60)
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1217)
at org.springframework.ws.soap.saaj.Saaj13Implementation.writeTo(Saaj13Implementation.java:292)
at org.springframework.ws.soap.saaj.SaajSoapMessage.writeTo(SaajSoapMessage.java:165)
at org.springframework.ws.transport.AbstractWebServiceConnection.send(AbstractWebServiceConnection.java:45)
at org.springframework.ws.client.core.WebServiceTemplate.sendRequest(WebServiceTemplate.java:586)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:549)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502)
... 5 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:333)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789)
... 23 more
Lembrando que estou setando algumas propriedades da seguinte maneira:
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, “root.jks”); //Caminho do trustStore
Alguém poderia dar um help?
obrigado
dankshit ESTOU COM O MESMO PROBLEMA!!
QUEBREI A CABEÇA E AGORA PERCEBO QUE O ERRO DEVE SER DOS KRAS LAH!
DA LICENÇA!!!
REVISEI TOOODA MINHA ESTRUTURA KRA…
PERDI MAIOR TEMPO E O ERRO 225 - FALHA DE SCHEMA CONTINUA…
DEVE SER O PROBLEMA DELES LÁ , NÃO É POSSÍVEL, AQUI TA TUDO CERTO E PAROU DE ENVIAR DIA 30 TBM!
Fala pessoal,
kanalha, da uma validada no seu XML aqui ó :
http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
porque eu vi que tava com erro no meu XML, tava mandando a DVX-6789
e devemos passar sem o traço assim: DVX6789
Ai tudo voltou ao normal.
valeu
HUMM vlw dank!
o problema eh que aqui eh SP…
Não sei se tem essa funcionalidade na receita de sp para validar o conteúdo…
O engraçado eh que antes do dia 30 ia tudo normal, o mesmo conteúdo após dia 30 não ta indo…
estranho…
kanalha, estou tendo exatamente o mesmo problema que você, também na homologação de SP durante o processo de Retorno de Recepção. Acho que é lá mesmo. Pior é que amanhã começa a bagaça ! A mensagem de erro é a 225 que tem a ver com lote e RetRecepcao nem informação de lote tem. O problema é lá mesmo.
Pessoal, quanto a data de inicio (01/04/2010), não creio que os web services atuais, assim como os
esquemas do pacote PL005d saiam do ar.
No manual diz que o PL005d fica valendo até o dia 30/09/2010. Não especifica quanto aos ws, mas
deixa implícito.
Alguém do grupo tem alguma informação mais oficial?
Liguei pro 0800-bosta da NFe e me deram o grande retorno que eu tinha que ver com a Sefaz do
meu estado. Vê se pode.
Alencar
Fala pessoal,
Kanalha, não tem problema cara, pode validar o arquivo blz no RS, que valida o SCHEMA XML normal, eu também estou enviando pelo ambiente de homologação SP.
Só para validar o xml funciona normal, pode validar que vai ter ajudar.
t+
Fala pessoal,Kanalha, não tem problema cara, pode validar o arquivo blz no RS, que valida o SCHEMA XML normal, eu também estou enviando pelo ambiente de homologação SP.
Só para validar o xml funciona normal, pode validar que vai ter ajudar.
t+
Funciona mesmo, aliás, aquela validaçãodo RS é bem útil. Coloquei mer arquivo de Consulta de Recido lá e validou direitinho, o problema é lá mesmo.
Pessoal, quanto a data de inicio (01/04/2010), não creio que os web services atuais, assim como os
esquemas do pacote PL005d saiam do ar.
No manual diz que o PL005d fica valendo até o dia 30/09/2010. Não especifica quanto aos ws, mas
deixa implícito.
Alguém do grupo tem alguma informação mais oficial?
Liguei pro 0800-bosta da NFe e me deram o grande retorno que eu tinha que ver com a Sefaz do
meu estado. Vê se pode.
Alencar
Alencar, você tem razão, acho que os dois serviços devem rodar em paralelo até setembro.
Anderson
!!
dankshit Vlw pela ajuda!
Funciona mesmo! eheh
Engraçado né? antes do dia 30 não validavam algumas coisas!
Abraço!
afortaleza consigui arrumar meus erros, e agora retornou aprovado pra mim!
deu certo pra vc ai??
afortaleza consegui arrumar meus erros, e agora retornou aprovado pra mim!deu certo pra vc ai??
Pessoal, to com problemas de conexão com a Sefaz RS.
Retorna: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
Testei usando um token e um A1. Mesma bronca.
Parece que é algum problema local (minha máquina) pois meus clientes estão operando normalmente.
Alguma dica, por favor?
Alencar
Pessoal, to com problemas de conexão com a Sefaz RS.
Retorna: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
Testei usando um token e um A1. Mesma bronca.
Parece que é algum problema local (minha máquina) pois meus clientes estão operando normalmente.Alguma dica, por favor?
Alencar
Eu mesmo me respondo, com a ajuda do link abaixo:
É só desinstalar o update 6.19 que volta a funcionar.
Alencar
afortaleza consigui arrumar meus erros, e agora retornou aprovado pra mim!deu certo pra vc ai??
kanalha, ainda não testei e to saindo desse emprego aqui hoje, acho que não vou ter tempo de testar não.
[]s
Anderson
Fala pessoal,
alguém sabe aonde conseguir os WSDLs de Produção para o ambiente de SP ? no site
só tem para homologação.
Se algué puder ajudar agradeço.
Fala pessoal,alguém sabe aonde conseguir os WSDLs de Produção para o ambiente de SP ? no site
só tem para homologação.Se algué puder ajudar agradeço.
Tá tudo aqui:
http://www.nfe.fazenda.gov.br/PORTAL/WebServices.aspx
Abraço.
ola alguem ja tece esse erro ?
Server was unable to read request. ---> There is an error in XML document (1, 615). ---> The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type.
com.sun.xml.internal.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:175)
com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:94)
com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:240)
com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210)
com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
$Proxy30.nfeStatusServicoNF2(Unknown Source)
meu código esta assim, uso jax-ws:
public abstract Object call() throws Problem;
@SuppressWarnings("static-access")
protected Object callSefaz(Object bean, String versaoDoDados) throws Problem {
// String dadosMsgString = getStringFromBean(bean);
NfeCabecMsg nfeCabecMsg = new NfeCabecMsg();
nfeCabecMsg.setVersaoDados(versaoDoDados);
nfeCabecMsg.setCUF("43");
String s = "<nfeDadosMsg>"+"<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"+"<tpAmb>2</tpAmb>"+"<cUF>43</cUF>"+"<xServ>STATUS</xServ>"+"</consStatServ>"+"</nfeDadosMsg>";
// String nfeCabecMsgString = getStringFromBean(nfeCabecMsg);
String nfeCabecMsgString = "<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">"+"<versaoDados>2.00</versaoDados>"+"<cUF>43</cUF>"+"</nfeCabecMsg>";
NfeDadosMsg nfeDadosMsg = new NfeDadosMsg();
nfeDadosMsg.getContent().add(nfeCabecMsgString);
nfeDadosMsg.getContent().add(s);//add(getStringFromBean(bean));
String trustStoreName;
// if (uf.equals("RS")) {
trustStoreName = "homologacao_nfe_sefaz_rs_gov_br";
// }
// else {
// trustStoreName = "nfe_fazenda_pr_gov_br";
// }
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", getNomeDoArquivoCertificado());
System.setProperty("javax.net.ssl.keyStorePassword", getSenhaDoCertificado());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", caminhoRaiz + "/ssl/" + trustStoreName);
return getResponse(nfeDadosMsg);
}
@Override
protected Object getResponse(NfeDadosMsg nfeDadosMsg) throws Problem {
NfeStatusServicoNF2Result nfeStatusServicoNF2Result = null;
webServiceClient = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2();
System.out.println("Coletando a porta do servico: " + webServiceClient);
NfeStatusServico2Soap12 webServiceInterface = webServiceClient.getNfeStatusServico2Soap12();
System.out.println("Porta SOAP que esta sendo invocada: " + webServiceInterface);
System.out.println("***");
System.out.println( "Dados: " + nfeDadosMsg.getContent().toString());
System.out.println("***");
System.out.println();
nfeStatusServicoNF2Result = webServiceInterface.nfeStatusServicoNF2(nfeDadosMsg);
System.out.println("Resposta do servico: " + nfeStatusServicoNF2Result);
String xmlRetConsStatServ = null;
ae galera…
alguém sabe onde eu posso encontrar os XSDs para as versões 2.00 do SEFAZ SP ???
Quando tento consultar o retorno de uma nota enviada, só recebo:
<retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_006</verAplic>
<nRec />
<cStat>239</cStat>
<xMotivo>Rejeição: Cabeçalho - Versão do arquivo XML não suportada</xMotivo>
<cUF>35</cUF>
</retConsReciNFe>
estão me retornando esse XML como versao=“2.00”, mas não encontrei XSD pra nenhum documento com versão 2.00
no máximo 1.10
valeu!!!
ae galera…alguém sabe onde eu posso encontrar os XSDs para as versões 2.00 do SEFAZ SP ???
[/code]
estão me retornando esse XML como versao=“2.00”, mas não encontrei XSD pra nenhum documento com versão 2.00
no máximo 1.10
alguem esta tendo problema com os webservices de produção SP ainda na versao 3 do manual de integração , até sexta estava funcionando agora nao estou mais conseguindo acessar serviço , e tento no ambiente de homologação consigo consultar
galera como faço pra validar os XML gerados de acordo com os xsd??
de presente essa
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package nfe;
/**
* @author dilnei cunha
* Classe para Validacao XML x XSD.
*/
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.w3c.dom.Document;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class XMLXSDValidate implements ErrorHandler {
private String xmlInput;
private String xsdInput;
public XMLXSDValidate(String xmlInput, String xsdInput) {
this.xmlInput = xmlInput;
this.xsdInput = xsdInput;
}
public String getXmlInput() {
return xmlInput;
}
public void setXmlInput(String xmlInput) {
this.xmlInput = xmlInput;
}
public String getXsdInput() {
return xsdInput;
}
public void setXsdInput(String xsdInput) {
this.xsdInput = xsdInput;
}
private void validate() throws Exception {
try {
//Setting Xerces-J parser because the standard parser not recognize <import ...>
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
// Parse an XML document em um DOM tree.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false);
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(new File(xmlInput));
// Cria um SchemaFactory capaz de compreender WXS schemas.
SchemaFactory schemaFactory = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
// carrega um WXS schema, representada por uma instacia Schema.
Source schemaFile = new StreamSource(new File(xsdInput));
Schema schema = schemaFactory.newSchema(schemaFile);
// Cria um objeto Validator que pode ser usado para validar
// uma instancia document.
Validator validator = schema.newValidator();
validator.setErrorHandler(this);
// Valida o Dom tree
validator.validate(new DOMSource(document));
} catch (ParserConfigurationException e) {
throw new Exception(e.getMessage());
} catch (SAXException e) {
throw new Exception(e.getMessage());
} catch (IOException e) {
throw new Exception(e.getMessage());
}
}
@Override
public void error(SAXParseException exception) throws SAXException {
System.out.println("ERROR: " + exception.getMessage());
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
System.out.println("FATAL: " + exception.getMessage());
}
@Override
public void warning(SAXParseException exception) throws SAXException {
System.out.println("WARNING: " + exception.getMessage());
}
public static void main(String[] args) {
XMLXSDValidate validate = new XMLXSDValidate("res/00034929-env-lot.xml",
"Schema/enviNFe_v1.10.xsd");
try {
System.out.println("Starting parse..");
validate.validate();
System.out.println("File '"+validate.getXmlInput()+"' validate sucessfull...");
} catch (Exception ex) {
System.out.println("File '"+validate.getXmlInput()+"' validate fail...");
ex.printStackTrace();
}
}
}
ola alguem ja tece esse erro ?Server was unable to read request. ---> There is an error in XML document (1, 615). ---> The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type. com.sun.xml.internal.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:175) com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:94) com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:240) com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210) com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103) $Proxy30.nfeStatusServicoNF2(Unknown Source)
Pocha pessoal, eu não acredito que ninguem tenha usado o JAX-WS, não acredito que ninguem possa me judar a resolver o problema que stou enfrentando, alguem ajuda ai, JAX-WS é a melhor API pra webservices, o que posso estar fazendo de errado ??? por favor, ja perdi o prazo de entrega, não posso perder mais que o prazo.
Abre teu XML na coluna 615. verifica qual é a tag.
Ele não esta conseguindo realizar o parse. Investiga lá o que pode estar errado…
Abre teu XML na coluna 615. verifica qual é a tag.
Ele não esta conseguindo realizar o parse. Investiga lá o que pode estar errado…
Amigo obrigado por responder, meu xml não vai até o 615 vai até o 500, preciso ver o log do SOAP uso o netbeans e JAX-WS, como servidor uso tomcat, como posso fazer para habilitar o log e ver o conteudo do SOAP ?
Aix, o JAXWS, assim como todas as implementações da Sun, usam o JUL (Java Util Logging ou JDK Logging) para fazer logging das informações.
Não sei se você tem tempo de ler bem sobre o JDK Logging, mas o site onde você encontra todas as informações é: http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html
Basicamente o logging é dividido em categorias e níveis. Você configura o nivel para cada categoria, e ela exibe ou não as mensagens de logging. Desconheço qual a categoria do JAXWS, porém acho que é algo como javax.ws ou talvez com.sun.xml.
Pesquisando um pouco na documentação do JAXWS achei o seguinte parametro na inicialização da classe, caso você esteja rodando standalone, mas você pode usar no Tomcat também. Se não me engano para usar no Tomcat precisa ir no catalina.sh (ou catalina.bat no windows).
-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=“true”
Segundo a documentação será gerado um dump do envelope no console padrão.
Dê uma analisada em um artigo no dev.java.net sobre como monitorar SOAP: http://weblogs.java.net/blog/ramapulavarthi/archive/2006/08/monitoring_soap.html
:thumbup:
Não esqueça de reportar o resultado aqui depois.
erro ao tentar validar o xml:
Exception in thread “main” javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:129)
at nfe.XMLXSDValidate.validate(XMLXSDValidate.java:63)
at nfe.XMLXSDValidate.main(XMLXSDValidate.java:112)
Fala pessoal,
fafb, vc encontra essa classe no package xercesImpl-2.6.2.jar por exemplo.
nao, nao!!
peguei aki no forum mesmo nesses mesmo topico aki, olha ai na pagina 35 q tem ele lah.
vlw galera, ja resolvi o problema !!
Bom aix, engalhei no mesmo problema quando estava tentando implementar com o jax-ws e logo ajustei para usar o axis2, como o projeto esta bem desacoplado, a alteração das das classes stubs não causa muito impacto. Porém fiquei desapontado com a quantidade de jars que precisarei incorporar no meu projeto para usar o axis2, e tentei novamente trabalhar com o jax-ws.
Dessa vez fui um pouco mais longe, consegui enviar os dados para o webservice da receita, porém, como para estes novos schemas o jax-ws cria classes wrappers para manipular os dados, é necessário usar os mecanismos de Marshaller e Unmarshaller para converter os objetos em String e vice e versa, e é nesse momento que tive problemas, pois não consegui remover os namespaces e recebi uma rejeição da receita: >Rejeicao: Uso de prefixo de namespace nao permitido<.
Aparentemente é possível de se resolver, mas não tenho tempo para fazer isso, pois estou saindo da empresa que estou atualmente e não posso perder tempo nisso pois estou trabalhando em outras coisas, vou deixar aqui os passos que fiz até então e espero que você tenha alguma progresso.
String nfeDadosMsg = "<nfeDadosMsg><consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>2</tpAmb>" + "<cUF>35</cUF>"
+ "<xServ>STATUS</xServ>" + "</consStatServ></nfeDadosMsg>";
NfeStatusServico2 nfeStatusServico = new NfeStatusServico2(new URL("https://hom.sefazvirtual.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx"));
JAXBContext jaxbContext = JAXBContext.newInstance(NfeDadosMsg.class);
Unmarshaller unMarshaller = jaxbContext.createUnmarshaller();
JAXBElement<NfeDadosMsg> element = (JAXBElement<NfeDadosMsg>) unMarshaller.unmarshal(new StreamSource(new ByteArrayInputStream(nfeDadosMsg.getBytes())), NfeDadosMsg.class);
NfeDadosMsg cteDadosMsg = element.getValue();
nfeStatusServico.setHandlerResolver(new HandlerResolver() {
public List<Handler> getHandlerChain(PortInfo portInfo) {
List<Handler> handlers = new ArrayList<Handler>();
handlers.add(new br.com.ksisolucoes.nfe.ws.conf.NfeStatusServico2Handler());
return handlers;
}
});
NfeStatusServicoNF2Result result = nfeStatusServico.getNfeStatusServico2Soap12().nfeStatusServicoNF2(cteDadosMsg);
StringWriter ret = new StringWriter();
Marshaller m = jaxbContext.createMarshaller();
m = jaxbContext.createMarshaller();
m.marshal(result, ret);
System.out.println(ret);
Classe NfeStatusServico2Handler
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
/**
*
* @author klaus
*/
public class NfeStatusServico2Handler implements SOAPHandler<SOAPMessageContext> {
public boolean handleMessage(SOAPMessageContext messageContext) {
try {
if (messageContext.getMessage().getSOAPPart().getEnvelope().getHeader() == null) {
SOAPHeader header = messageContext.getMessage().getSOAPPart().getEnvelope().addHeader();
SOAPHeaderElement headerElement = header.addHeaderElement(new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", "nfeCabecMsg", "nfeCabecMsg"));
SOAPHeaderElement headerCUF = header.addHeaderElement(new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", "cUF"));
headerCUF.setValue("35");
SOAPHeaderElement headerVersaoDados = header.addHeaderElement(new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", "versaoDados"));
headerVersaoDados.setValue("2.00");
headerElement.addChildElement(headerCUF);
headerElement.addChildElement(headerVersaoDados);
}
} catch (SOAPException ex) {
Logger.getLogger(NfeStatusServico2Handler.class.getName()).log(Level.SEVERE, null, ex);
}
return true;
}
public Set<QName> getHeaders() {
return new TreeSet<QName>();
}
public boolean handleFault(SOAPMessageContext messageContext) {
return true;
}
public void close(MessageContext context) {
}
}
Abraço…
Galera, galera…
estou com um problema…
Meu aplicativo funciona com os certificados .PFX (arquivo) e com o Token(cartao), porem com o token que é USB nao…
alguem sabe o “pulo gato”, a diferença ?
Valew
Bom aix, engalhei no mesmo problema …
Ola Klaus, darei seguimento sim, assim que conseguir posto aqui a solução vlw pelo iteresse em ajudar, abraços.
Galera, galera…
estou com um problema…Meu aplicativo funciona com os certificados .PFX (arquivo) e com o Token(cartao), porem com o token que é USB nao…
alguem sabe o “pulo gato”, a diferença ?Valew
Entre smartcard e token é praticamente o driver a ser instalado.
Para cartão, tem a leitora e o provider do fabricante do cartão.
Para o token, deve ter um pacote a ser instalado.
No mais, segue o mesmo padrão.
Alencar
e ai Galera blz
Na hora de validar um XML , tem como os retornos de erros estar vindo em portugues ?
e ai galera ninguem tem ideia de como retornar em portugues os erros da validação do xml , no caso ficar igual ao programa ASSINADOR RS , volta os msm erros só q na minha aplicação esta td em ingles
Pessoal, a atualização do JRE para versão 1.6.0_19 está trazendo problemas de
exceção.
Voltando para a versão _18 tudo volta a funcionar.
Alguém sabe de alguma coisa, além do que já saiu no site da NFe?
Como ajustar as classes para não dar este erro caso o usuário atualize seu java?
Grato
Alencar
Pessoal…
A receita disponibiliza algum certificado para teste?
ou para mim ter acesso aos serviços deles eu tenho que comprar um certificado digital??
Pessoal…
A receita disponibiliza algum certificado para teste?ou para mim ter acesso aos serviços deles eu tenho que comprar um certificado digital??
os de testes quando eu testei servia só pra assinar a nota e testar localmente, mas para consumir os webservices tive que usar o certificado quente, abraços.
Pessoal…
A receita disponibiliza algum certificado para teste?ou para mim ter acesso aos serviços deles eu tenho que comprar um certificado digital??
os de testes quando eu testei servia só pra assinar a nota e testar localmente, mas para consumir os webservices tive que usar o certificado quente, abraços.
Onde eu consigo o certificado para teste?
na verdade é exatamente isso que preciso fazer agora, adiconar a assinatura no arquivo…
do meu estado esta aqui, abraços:
https://homologacao.nfe.sefaz.rs.gov.br/
e ai pessoal blz
entao ninguem tem ideia de como validar uma NFe e a resposta vir em portugues ? se o programa Assinador retorna td traduzido deve ter alguma maneira ou nao neh rs ?
e ai pessoal blzentao ninguem tem ideia de como validar uma NFe e a resposta vir em portugues ? se o programa Assinador retorna td traduzido deve ter alguma maneira ou nao neh rs ?
Bem que eu gostaria também… Mas creio ser na base do if/else/…
Alencar
e ai pessoal blzentao ninguem tem ideia de como validar uma NFe e a resposta vir em portugues ? se o programa Assinador retorna td traduzido deve ter alguma maneira ou nao neh rs ?
quando vc faz a validação vc bate os xsd com o teu xml certo ? mas vc usa uma lib pra isso certo ?, acho que teria que tratar os erros os reescrever alguma classe da lib responsavel pela validação, mas acho uma perda de tempo, pois o importante é mostrar a tag que possui o erro, abraços.
aix tb concordo
é que qdo implementei isso aqui na empresa ( eu achei bom ) mais as criaturas q usam a nota nao entenderam o erro
tb acho q que tratar o erro e traduzir é perca total de tempo
mais blz valeu
aix tb concordo
é que qdo implementei isso aqui na empresa ( eu achei bom ) mais as criaturas q usam a nota nao entenderam o erro
tb acho q que tratar o erro e traduzir é perca total de tempo
mais blz valeu
Evandro e demais: sempre que desenvolvemos algum sistema que vá interagir com pessoas, temos que levar em
consideração que estes usuários finais não tem o conhecimento técnico que nós possuimos.
Vejam uma mensagem de erro de parser. Além de ser em inglês, é totalmente técnica.
Na minha modesta opinião, a tradução destas msgs para algo claro aos olhos “comuns”, trariam benécias do tipo
menos suporte, mais velocidade na solução de problemas e por ai vai.
Pretendo sim fazer algo parecido com o site da receita e convido a quem quiser ajudar, a criar mensagems traduzidas
para as diversas situações de erros de parser.
Poderiamos carregar algum Map onde a key é parte da msg original e o value a mensagem traduzida.
Assim com uns maps pra cá e outros pra lá, juntariamos tudo e todos teriamos as traduções com pouco esforço.
Fica a sugestão.
Alencar
aix tb concordo
é que qdo implementei isso aqui na empresa ( eu achei bom ) mais as criaturas q usam a nota nao entenderam o erro
tb acho q que tratar o erro e traduzir é perca total de tempo
mais blz valeuEvandro e demais: sempre que desenvolvemos algum sistema que vá interagir com pessoas, temos que levar em
consideração que estes usuários finais não tem o conhecimento técnico que nós possuimos.
Vejam uma mensagem de erro de parser. Além de ser em inglês, é totalmente técnica.
Na minha modesta opinião, a tradução destas msgs para algo claro aos olhos “comuns”, trariam benécias do tipo
menos suporte, mais velocidade na solução de problemas e por ai vai.Pretendo sim fazer algo parecido com o site da receita e convido a quem quiser ajudar, a criar mensagems traduzidas
para as diversas situações de erros de parser.
Poderiamos carregar algum Map onde a key é parte da msg original e o value a mensagem traduzida.
Assim com uns maps pra cá e outros pra lá, juntariamos tudo e todos teriamos as traduções com pouco esforço.Fica a sugestão.
Alencar
Acho interessante a idéia. Mesmo porque vou precisar fazer isso também, ou ao menos traduzir as exceções mais comuns.
philler acho mto boa essa ideia sim montar essa estrutura podem contar comigo
na minha frase anterior qdo eu disse essas as criaturas q usam a nota nao entenderam o erro
nao foi uma critica aos usuarios nao
é o dpto tecnico aqui da empresa que efetua os teste no software( eles ja conhecem maioria dos termos tecnnicos)
Bom galera consegui resolver o probleminha citado acima dos parse em ingles , ficou da seguite forma
na API xerces-2_9_1 procura o arquivo xercesImpl.jar dentro dele acesse \org\apache\xerces\impl\msg\XMLSchemaMessages.properties faça uma copia desse arquivo , dentro desse arquivo estão as mensagem do parse todas ingles
altere o conteudo do arquivo ex:
cvc-complex-type.2.4.b = cvc-complex-type.2.4.b: O conteudo do Elemento ‘’{0}’’ is not complete. One of ‘’{1}’’ is expected.
para cvc-complex-type.2.4.b = cvc-complex-type.2.4.b: O conteudo do Elemento ‘’{0}’’ nao esta completo. Um dos ‘’{1}’’ e esperado.
ao terminar salve o arquivo XMLSchemaMessages.properties como XMLSchemaMessages_pt_BR.properties
coloque esse arquivo de volta no xercesImpl.jar deixando os arquivos XMLSchemaMessages_pt_BR.properties e XMLSchemaMessages.properties no JAR
na aplicação substitua o
por
o LocalizedMessage se encarrega de procurar o arquivo com o que contem a tradução caso ele nao encontre joga como default o arquivo que esta em ingles
bom aqui funcionou legal só preciso de coragem para traduzir todo o arquivo
espero q ajude
flw
Ai que eu digo! Mandou legal…
Parabéns pela iniciativa.
Alencar
Melhor ainda. heheh
Valeu por ter postado.
Abraço.
Aí galera… esse tópico tá batendo recordes!!!
Seguinte… pra variar to tendo os erros cabulosos e inexplicáveis, vejam só:
Tenho um método que interage com o Web Service de recepção de notas, e em alguns momentos ele me retorna:
e em outros:
Para testar o porque deste comportamento, estou pegando sempre o MESMO xml e trocando somente os dados das tags
<infNFe Id="..." versao="1.10">
<cNF>...</cNF>
<nNF>...</nNF>
e gerando sempre um lote novo na tag <idLote>, e fico iterando num while(true) da vida pra ir gerando um monte de vezes
a resposta (que eu consulto pelo NfeRetRecepcao, é claro).
O algoritmo que estou usando pra calcular o dígito verificador é o seguinte:
public static String calcDVChaveAcesso(String chaveAcesso) {
int dv = 0;
int soma = 0;
int multiplicador = 2;
for (byte b = 42; b >= 0; b--) {
soma += Character.digit(chaveAcesso.charAt(b),10) * multiplicador;
multiplicador++;
if (multiplicador > 9)
multiplicador = 2;
}
int auxDV = 11 - soma % 11;
if (auxDV >= 10)
dv = 0;
else
dv = auxDV;
return Integer.toString(dv);
}
Sinceramente não faço idéia do porque deste comportamento "aleatório" no processamento lá na receita.
Alguém sabe o que pode estar acontecendo???/
Obrigado
O que eu fiz foi pegar um XML que eu sei que está válido de acordo com o XSD
Creio que vc nao esteja alterando o conteudo da tag com o o novo
digito verificador.
Alencar
Nooooooooooossa… piazei valendo!!! Que marcada.
Vou testar aqui… mas valeu mesmo!!
e ai galera blz
vim trazer mais algumas questoes intrigrantes kk
alguem usa o ireport para gerar o DANFE ?
Acho que se for seguir algum modelo que seja milimétricamente dinâmico, é melhor usar o iText direto. o IReport não é 100% fiel à medidas…
e ai galera blzvim trazer mais algumas questoes intrigrantes kk
alguem usa o ireport para gerar o DANFE ?
qual é o rolo ?
entao atualmente o meu danfe é em HTML to tentando mudar ele pq a manutenção eh bem complicada qdo alguem pede para colocar mais coisa no danfe tenho até friu na barriga kkk
ja tenho o layout praticamente metade do DANFE pronto no ireport mais como nao manjo mto dele to tendo algumas dificuldade em relação a formatação de alguns campos e a exibição das informações complementares qdo o conteudo dela tem 5 mil caracteres ser exibido em outras folhas , e como é como se consegue puxar todos os impostos dos produtos sendo q cada produto varia e o xpath setado nao funciona setando apenas a tag imposto
entao gr_marco , usando esse itext vai ficar quase igual ao que tenho em html
no ireport é só arrastar o campo o setar a tag
e ai galera blzvim trazer mais algumas questoes intrigrantes kk
alguem usa o ireport para gerar o DANFE ?
eu uso, dá muito problema, mas funciona
zoren , como vc faz para carregar todos os tipos de impostos
como fica sua xpath ?
Eu não faço com xml
eu pego o xml e transformo em objeto com o jax
ai eu uso um tipop de datasource q vc coloca listas de hash maps pra colocar os produtos no DANFE e o resto eu coloco como parametro
Pessoal, bom dia.
Alguém pode dar uma dica de como gerar o JKS a partir do Certificado A3 (Cartão token) do cliente.
Tenho somente o A3 do cliente, e gostaria de gerar o jks para produção e não esta dando certo, se alguém tiver alguma dica eu agradeço.
Obrigado,
Dankshit
Bom dia, alguém esta tendo problema para envio das NFe ?
Estou tendo este problema:
First Element must contain the local name, Envelope , but found html
Ontem estava tudo normal…
Pessoal, bom dia.
Alguém pode dar uma dica de como gerar o JKS a partir do Certificado A3 (Cartão token) do cliente.
Tenho somente o A3 do cliente, e gostaria de gerar o jks para produção e não esta dando certo, se alguém tiver alguma dica eu agradeço.
Obrigado,
Dankshit
Se bem entendi, você quer importar o certificado e a PK em um JKS?
Se sim, não é possível extrair a PK do A3.
Eu uso um jks somente para validar a cadeia certificadora de terceiros.
Se não lhe entendi, por favor, nos forneça mais detalhes.
Alencar
galera alguem ta com problemas quanto a versao do java ??
em na versao 6.19 pra cima da pau… se for anterior funciona…
o sefaz emitiu uma nota tecnica falando que eles corrigiram o problema, porém no emisor deles…
que será que ta pegando heim ??
galera alguem ta com problemas quanto a versao do java ??
em na versao 6.19 pra cima da pau… se for anterior funciona…o sefaz emitiu uma nota tecnica falando que eles corrigiram o problema, porém no emisor deles…
que será que ta pegando heim ??
Ja saiu a correção para 1.6.0_20. A anterior tava bugada mesmo.
Alencar
mas a 6.20 tbm ta dando pau…!!
Ops, esta eu nao tinha testado 
Voltando para a .18. Se alguem precisar do JRE da 1.6.0_18, eu tenho.
Desinstala todo o java que existe e reinstala este que funciona.
ftp://ns.philler.com.br/java_6_18.exe
Alencar
Galera consegui resolver…!
pelo menos funcionou na 6.19…
antes da conexão coloquei o seguinte parâmetro:
java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
Vou continuar testando/pesquisando, pois não sei se essa é a solução mais correta…!
Valew
Estou com problema par receber o retorno do NfeStatusServicoNF2Result.
Utilizo o Nb 6.8 e jax-ws.
try { // Call Web Service Operation
br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2 service = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2();
br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2Soap12 port = service.getNfeStatusServico2Soap12();
// TODO initialize WS operation arguments here
br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeDadosMsg nfeDadosMsg = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeDadosMsg();
// Dados do cab
br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeCabecMsg nfeCabecMsg = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeCabecMsg();
nfeCabecMsg.setCUF("35");
nfeCabecMsg.setVersaoDados("2.00");
// add na nfeDadosMsg
nfeDadosMsg.getContent().add(new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.ObjectFactory().createNfeCabecMsg(nfeCabecMsg));
// TODO process result here
br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServicoNF2Result result = port.nfeStatusServicoNF2(nfeDadosMsg);
System.out.println("Result = "+result);
System.out.println("Resposta = "+Arrays.toString(result.getContent().toArray()));
} catch (Exception ex) {
System.out.println("Erro "+ex);
// TODO handle custom exceptions here
}
Ele retorna:
Result = br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServicoNF2Result@bc5596
Resposta = [[retConsStatServ: null], ]
Alguém tem aí o xml de uma nfe para mim testar, pois estou gerando e está dando erro para validar… então queria saber se é o validador que está dando erro ou é o meu xml… estou usando o leiautenfe_v2.00.xsd para validar… e o código de validação usei o que foi postado aqui na pagina 35
Mas sempre aparece a mesma msg
mudo o xml de tudo que é jeito mas sempre aparece essa msg
Document is invalid: no grammar found.
Line=2: Document root element "TNFe", must match DOCTYPE root "null"
Descobri…era o meu xml que estava sendo gerado errado…
Mas agora apareceu outro erro… eu achei ele, mas não sei como resolver…
To usando o jaxb para gerar o xml… o problema é que na tag NFe ele deveria gerar assim…
Mas não sei porque ele está gerando isso…
porque será?
Bom estou usando NetBeans, gerei os códigos a partir do Axis2 e estou acessando o WebService do RS
O Status Serviço esta funcionando sem mistério, então fui fazer o Consulta Cadastro.
Eu obtenho retorno porem vem com o seguinte : 516Rejeicao: Falha no schema XML ? inexiste a tag raiz esperada para a mensagem
Já passaram por isso ?
É enviado :
Retorno:
Bom estou usando NetBeans, gerei os códigos a partir do Axis2 e estou acessando o WebService do RSO Status Serviço esta funcionando sem mistério, então fui fazer o Consulta Cadastro.
Eu obtenho retorno porem vem com o seguinte : 516Rejeicao: Falha no schema XML ? inexiste a tag raiz esperada para a mensagem
Já passaram por isso ?
É enviado :
Retorno:
Resolvido
Estava mandando para o endereço errado.
Estou tendo problemas em enviar o arquivo do lote de nota fiscal eletrônica para a Sefaz-SP (versão 2.00).
Na realidade eu consigo enviar, porém obtenho como resposta na consulta:
“Rejeição: Falha no schema XML”
Eu não acho que o erro esteja no XML da mensagem (tag <enviNFe…) pois eu testei esse XML no site da Sefaz-RS e não mostrou nenhuma mensagem de erro.
O problema pode estar na mensagem enviada pelo AXIS2:
><?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2" soapenv:mustUnderstand="false">
<cUF>35</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soapenv:Header>
<soapenv:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2">
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<idLote>1413</idLote>
<NFe>....
O que notei de diferente nesse XML, com o XML do manual de integração é a existencia da propriedade soapenv:mustUnderstand=“false”.
Não sei se é esse o problema, mas alguém sabe como retirar essa propriedade?
Já tentei com:
no construtor da classe NfeRecepcao2Stub, porém não funcionou. O mustUnderstand continua no XML.
Não sei também se tem algum problema, mas na mensagem enviada pela minha aplicação está:
soapenv: no lugar de soap12:
Reparei também que antes de enviar o XML, o AXIS envia um "f9c"!?
13/05/2010 11:28:35 DEBUG [main] httpclient.wire.content - >> "f9c[\r][\n]"
13/05/2010 11:28:35 DEBUG [main] httpclient.wire.content - >> "<?xml version=‘1.0’ encoding=‘UTF-8’?><soapenv:Envelope…>
Consegui tirar o soapenv:mustUnderstand=“false” do XML do AXIS (se alguém preicisar posso postar o código), porém, continuo obtendo: Rejeição: Falha no schema XML.
Falta apenas a questão do soapenv: que o AXIS está gerando ao invés de gerar soap12:
Alguém sabe se isso pode ser a causa da rejeição?
Resolvido: o problema estava na consulta do recibo da NFe, e não no envio.
Estava gerando o XML da consulta com ConsReciNFe (c em maiúsculo - bobeira).
E não estava conseguindo consultar pela chave de acesso no site da Sefaz-SP pois recebi como resposta: “Rejeição: Total do Produto / Serviço difere do somatório dos itens”.
Galera estou com problemas para usar o certificado A3 Pendrive, pra ser mais exato o Ikey 2032
Alguem tem alguma dica ??
O Visualizado so abre o arquivo de distribuição da NFe (procNFe se não me engano), se tentar abrir o arquivo de envio (enviNFe) ele dá este erro.
Estou tentando fazer a consulta do status versao 2.0 porem não estou obtendo sucesso ...
String XML = "<?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>"
+ "<sceCabecMsg xmlns=\"http://www.portalfiscal.inf.br/sce/wsdl/SCERecepcaoRFB\">"
+ "<versaoDados>2.00</versaoDados>"
+ "<cUF>53</cUF>"
+ "</sceCabecMsg>"
+ "</soap12:Header>"
+ "<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>53</cUF>"
+ "<xServ>STATUS</xServ>"
+ "</consStatServ>"
+ "</nfeDadosMsg>"
+ "</soap12:Body>"
+ "</soap12:Envelope>";
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:\\keystore\\nfe.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "123");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\keystore\\rs.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
NfeStatusServico2 service = new NfeStatusServico2();
NfeDadosMsg nfeDadosMsg = new NfeDadosMsg();
nfeDadosMsg.getContent().add(XML);
try {
NfeStatusServico2Soap12 nfeStatus = service.getNfeStatusServico2Soap12();
System.out.println(nfeStatus.nfeStatusServicoNF2(nfeDadosMsg));
} catch (Throwable e1) {
e1.printStackTrace();
}
da a seguinte exceção:
javax.xml.ws.soap.SOAPFaultException: Server was unable to read request. ---> There is an error in XML document (1, 1063). ---> The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type.
at com.sun.xml.internal.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:175)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:94)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:240)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
at $Proxy30.nfeStatusServicoNF2(Unknown Source)
estou meio perdido alguém poderia me dizer o que estou fazendo de errado e se possivel postar um exemplo?
galera utilizando o axis2 as classes geradas a partir dos wsdl sao essas, mas vendo aki no forum as q vii sao outras, minha duvia eh: tenho q utilizar o axis1 em vez de axis2??
NfeStatusServicoNF2Result.java
NfeStatusServico2Skeleton.java
NfeStatusServico2MessageReceiverInOut.java
NfeDadosMsg.java
NfeCabecMsg0.java
NfeCabecMsg.java
ExtensionMapper.java
galera utilizando o axis2 as classes geradas a partir dos wsdl sao essas, mas vendo aki no forum as q vii sao outras, minha duvia eh: tenho q utilizar o axis1 em vez de axis2??NfeStatusServicoNF2Result.java
NfeStatusServico2Skeleton.java
NfeStatusServico2MessageReceiverInOut.java
NfeDadosMsg.java
NfeCabecMsg0.java
NfeCabecMsg.java
ExtensionMapper.java
Eu utilizo o Axis2 para gerar as classes, funciona normal, mas o nome da segunda e da terceira estão estranhos
Alguém ja fez a integração com o sistema de NFS-e da prefeitura de SP?
Estou enfrentando um problema que é justamente na parte da assinatura do XML, pois os xml’s de consulta não tem ID para usar para assinar o XML, alguém sabe como proceder?
Tenho o seguinte XML:
<?xml version="1.0" encoding="UTF-8"?><p1:PedidoConsultaNFePeriodo xmlns:p1=“<a href="http://www.prefeitura.sp.gov.br/nfe">http://www.prefeitura.sp.gov.br/nfe</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>”>
04642554000143
04642554000143
31000000
2007-01-01
2007-01-31
1
</p1:PedidoConsultaNFePeriodo>
E o mesmo deve ficar assim:
<?xml version="1.0" encoding="UTF-8"?><p1:PedidoConsultaNFePeriodo xmlns:p1=“<a href="http://www.prefeitura.sp.gov.br/nfe">http://www.prefeitura.sp.gov.br/nfe</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>”>
04642554000143
04642554000143
31000000
2007-01-01
2007-01-31
1
MLNPmnDg+TdeC9jdIp0ldJOVQGI=
VWCYdIxH+IXmlCuNcYy/Z8CN/fDWs/koDaezE2T942WY1YWJMG7p4OvUDR2uwZlUIwZxqKvtY9CRaa15kMlbyPiQ5gd95qUHObHp8gLEYQhOq7PFq9hL6dehVyxibbWlPMTpGp2EtHob8Xo7X81XwEVu1zJIMwaFc6N5F6A8xQQ=
MIIFUzCCBDugAwIBAgIQSUJS8pELZyjasDkgGzKm0TANBgkqhkiG9w0BAQUFADBuMQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgLSBTUkYxHDAaBgNVBAMTE0FDIENlcnRpU2lnbiBTUkYgVjMwHhcNMDYwNzE5MDAwMDAwWhcNMDkwNzE4MjM1OTU5WjCB1DELMAkGA1UEBhMCQlIxEzARBgNVBAoUCklDUC1CcmFzaWwxKjAoBgNVBAsTIVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsLVNSRjETMBEGA1UECxQKU1JGIGUtQ05QSjELMAkGA1UECBMCUkoxFzAVBgNVBAcUDlJJTyBERSBKQU5FSVJPMUkwRwYDVQQDE0BUSVBMQU4gQ09OU1VMVE9SSUEgRSBTRVJWSUNPUyBFTSBJTkZPUk1BVElDQSBMVERBOjA0NjQyNTU0MDAwMTQzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCx86LAoJRVmtQMzmtdWpyNgKy200+bwjtz/TuywNcTjvfw7qHFGIgTjipmuZ3zhX28CgYLYXp3tj1Dfh2B7EhjHdLJPfvoF4MgbN/dQGXmGpMpF5cNxYusOGCZiyASvI7Gqt/xE4xLSIalNr6kF6CaPLkpFgTNNe+WQkG0fMqsQQIDAQABo4ICCDCCAgQwgbEGA1UdEQSBqTCBpqA/BgVgTAEDBKA2DDQyNDA3MTk3NjA3MTM4NTM3Nzg2MDAwMDAwMDAwMDAwMDAwMDAwOTI5OTA2MjFDTkggIFJKoB8GBWBMAQMCoBYMFEZFUk5BTkRPIFNJTFZBIEJSQUdBoBkGBWBMAQMDoBAMDjA0NjQyNTU0MDAwMTQzoBEGBWBMAQMHoAgMBjIzOTU0OIEUZmJyYWdhQHRpcGxhbi5jb20uYnIwCQYDVR0TBAIwADBiBgNVHR8EWzBZMFegVaBThlFodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpU2lnblNSRlYzL0xhdGVzdENSTC5jcmwwHwYDVR0jBBgwFoAU9p1ZXf6/xXLN3c7ELmYbLu4Iz3YwDgYDVR0PAQH/BAQDAgXgMFUGA1UdIAROMEwwSgYGYEwBAgMGMEAwPgYIKwYBBQUHAgEWMmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIwDQYJKoZIhvcNAQEFBQADggEBAC5w/CBXAykvPSbBGf+u0UPcWVJATL2ix0hCfNUVtHaCjMz8hRjgYqmhpefzDm2LCTvoCPzG6XQBYxAmnDhX1f/gyjHz+E1xJg451qtqcyCJ9861o9R2bHd4zR0DuyxCNGOTiYJ4Gc/Xa4xqECorAx5ktkk1T/HOc1K/ntRGpdL+llsO/jqSRmTOnRgdeNHcKkyXsOgL5BwxxgGNuIyqirgGXW0by4Io1GnSXtixxfvEOnqOicxBY6AcVS9HHuhmOBYiK9skAUp0Sm2v41hpsC8uIkfUeRxsJIp2CNZ4DjoyfmKwNLMCRZQAKpwMXyyHZlX1a4o/9iGTszNeeShw61g=
</p1:PedidoConsultaNFePeriodo>
Se alguém souber, na documentação só diz para se basear pelo xmldsig-core-schema_v01.xsd que não trás detalhes algum de como fazer.
[ ]'s
Giuseppe Lopes
Se o manual não indica nenhuma Id em específico, ou vc cria uma ID e indica ele no método de assinatura, ou fornece uma string vazia ("").
Nos 3 padrões que desenvolvemos (Nota Control, DSF e Abrasf) não haviam Id, mas era necessário seguir o procedimento que mencionei acima, de outra forma a assinatura não era validada.
zoren, qual a versao do seu Axis2?? a minha eh a axis2 - 1.5.1!
Usa -Dsun.security.ssl.allowUnsafeRenegotiation=true para iniciar
Achei ai:
salve galera
alguem ja consegue importar uma NFe - versão 2.0 no programa Emissor de Nfe do governo , para mim esta dando erro de versão invalida 2.0
Tem como setar em variavel de ambiente o parametro
-Dsun.security.ssl.allowUnsafeRenegotiation=true ?
Alencar
Alguem pode me dar um help…
Qual os campos obrigatórios ao preenchimento de uma NFe?
Obrigado
Voce deve olhar no manual, la onde define as tags, tem uma coluna “Ocorrência”.
Se o valor estiver 1-1 ou 1-N, é obrigatória.
Se estiver 0-1, não é obrigatória.
Alencar
Voce deve olhar no manual, la onde define as tags, tem uma coluna “Ocorrência”.
Se o valor estiver 1-1 ou 1-N, é obrigatória.
Se estiver 0-1, não é obrigatória.Alencar
Saberia me dizer em qual página encontro isso?
Sinceramente, entender e ler aquele manual é uma complicação ( u.Û )
Obrigado…
Att. Jonas
Outra coisa, como eu sei qual o layout que devo me basear?
Tem uns 2 manual de integração lá… com schemas diferentes…
O schema é o Schema XML: nfe_v99.99.xsd
para layout da NFe ?
Ou eu devo usar nfe_v1.10.xsd ??
Você deve ver nas primeiras páginas, os layouts e suas datas.
Por exemplo: o layout 1.10 é válido até 30/09/2010.
Mas sugiro já partir pro desenvolvimento do novo layout 2.00
Alencar
Pergunta sobre utilização do AXIS SSL para se comunicar com o SEFAZ…
eu preciso utilizar o System.setProperty para configurar os certificados para o axis assim:
System.setProperty("javax.net.ssl.keyStoreType",pkcs);
System.setProperty("javax.net.ssl.keyStorePassword", certificadoSenha);
System.setProperty("javax.net.ssl.trustStoreType","JKS");
System.setProperty("javax.net.ssl.trustStore","C:/TSCerts");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
O meu sistema roda em um escritorio de contabilidade é multi-thread enviando notas de diversas empresas ao mesmo tempo, como eu faço???
Alguem sabe se tem como configurar essas properties para o SSL sem ser via System.property?
Valeu
Estranho, fiz pelo wizard e tbm deu certo…
olha so como fiz:String[] aUrl = {"homologacao.sefaz.mt.gov.br","/nfews/NfeStatusServico2"}; String sUf = "51"; // MT ok /* conecao segura */ NfeStatusServico2Stub nfe = new NfeStatusServico2Stub("https://" + aUrl[0] + aUrl[1]); NfeCabecMsgE nfeCabecMsg1 = new NfeCabecMsgE(); NfeCabecMsg param = new NfeCabecMsg(); param.setCUF(sUf); param.setVersaoDados("2.00"); nfeCabecMsg1.setNfeCabecMsg(param); OMElement ome = AXIOMUtil.stringToOM( "<consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">" + " <tpAmb>2</tpAmb>" + " <cUF>" + sUf + "</cUF>" + " <xServ>STATUS</xServ>" + "</consStatServ>"); NfeDadosMsg nf2 = new NfeDadosMsg(); nf2.setExtraElement(ome); NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf2, nfeCabecMsg1); System.out.println("Resposta : \n" + resp.getExtraElement().toString());Tente isso… abraco
show de bola mano! já tinha um esquema para a NFe antiga atraves do AXIS … tava pelejando pra fazer igual na 2.0 mas nao funfava nem a pau … olhando teu exemplo… putz funfou na hora … vlw d + !
Saudações galera!
é o seguinte, ja li essa thead inteira e não resolvi meu problema
quando tento conecta ao serviços da receita, minha conexão é recusada
erro 403
utilizando o SmartCard eu não conseguia acessar diretamente a pagina do WSDL
por exemplo https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL
após instalar no browser os certificados ACCAIXA.cer, ACCAIXAPJ.cer, ACCAIXAPF.cer e acraiz.cer
que estão disponiveis em https://icp.caixa.gov.br/asp/certificados.asp
o IE passou a se conectar normalmente à pagina do wsdl, o que demonstra que o SmartCard esta OK (lista os aliases e solicita o PIN)
e em seguida conecta
para o meu código, gerei o JKS com os certificados que mencionei acima
mais os obtidos no site homologacao.nfe.sefazvirtual.rs.gov.br, utilizando o programa InstallCert.java da Sun
mesmo com todos esses procedimentos gera a seguinte exeption
Mensagem de Erro:
java.io.IOException: Server returned HTTP response code: 403 for URL: <a href="https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL">https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL</a>
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getInputStream(HttpsURLConnectionOldImpl.java:204)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:482)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
at java.lang.Thread.run(Thread.java:619)
segue o meu codigo
String tokenConfigFile = "/Users/Robson/Documents/Trabalho/Lethus/nfe/certificado/token.cfg";
String certsConfigFile = "/Users/Robson/Documents/Trabalho/Lethus/nfe/certificado/caixa/jssecacerts";
String password = "password";
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.debug", "all");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
KeyStore pks;
Provider p = new SunPKCS11(tokenConfigFile);
Security.addProvider(p);
char[] pin = password.toCharArray();
Security.addProvider(new sun.security.pkcs11.SunPKCS11(tokenConfigFile));
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-smartCard");
System.setProperty("javax.net.ssl.keyStoreType", "pkcs11");
pks = KeyStore.getInstance("pkcs11");
pks.load(null, pin);
System.setProperty("javax.net.ssl.keyStorePassword", password);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", certsConfigFile);
String nfestatusservico = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL";
String pack = "nfestatusservico";
WSDL2Java.main(new String[]{nfestatusservico, "-o", "src", "-p",
"org.duo.nfe.service." + pack});
System.out.println("*** Geração concluída ***");
/*Mensagem de Erro:
java.io.IOException: Server returned HTTP response code: 403 for URL: https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getInputStream(HttpsURLConnectionOldImpl.java:204)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:369)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:420)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:482)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
at java.lang.Thread.run(Thread.java:619)
*/
Já não sei mais o que fazer, se alguém puder ajudar
agradeço!
abraços!
Importe os certificados ACCAIXA.cer, ACCAIXAPJ.cer e acraiz.cer dentro do cartão eCNPJ através do software
de administração do token.
O ACCAIXAPF.cer não se faz necessário.
Aproveitando a mensagem, observou que o certificado emitodo pela CEF, mesmo A3, tem validade até 30/10/2011?
Isso se deve a cadeia certificadora da CEF está sob o certificado ACRaiz.cer e não sob o ACRaizv1.cer
Alencar
Blz Philler, importei os certificados para o cartão e funcionou perfeitamente
muito obrigado!
Pessoal, estou com dificuldades no uso de Token Aladdin com conexão via Claro 3G.
Da o seguiinte erro:
nested exception is:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error
constructing implementation (algorithm: Default, provider: SunJSSE, class: com.s
un.net.ssl.internal.ssl.DefaultSSLContextImpl)
Em duas ocasiões ocorreram o mesmo erro, com Win 7 e Win XP.
Alguma idéia?
Grato pela atenção.
Alencar
Pessoal, estou com dificuldades no uso de Token Aladdin com conexão via Claro 3G.
Da o seguiinte erro:nested exception is:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error
constructing implementation (algorithm: Default, provider: SunJSSE, class: com.s
un.net.ssl.internal.ssl.DefaultSSLContextImpl)Em duas ocasiões ocorreram o mesmo erro, com Win 7 e Win XP.
Alguma idéia?Grato pela atenção.
Alencar
Só complementando, parece que não é problema com o 3G em si.
Em outro lugar, com cartão Safeweb, windows XP 32 bits, o mesmo erro.
Então, com Win 7 ou XP, token ou SmartCard, somente em alguns clientes…
Quero minha mãe!!!
Aguardo alguma luz dos amigos da lista.
Alencar
Pessoal, estou com dificuldades no uso de Token Aladdin com conexão via Claro 3G.
Da o seguiinte erro:nested exception is:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error
constructing implementation (algorithm: Default, provider: SunJSSE, class: com.s
un.net.ssl.internal.ssl.DefaultSSLContextImpl)Em duas ocasiões ocorreram o mesmo erro, com Win 7 e Win XP.
Alguma idéia?Grato pela atenção.
Alencar
Só complementando, parece que não é problema com o 3G em si.
Em outro lugar, com cartão Safeweb, windows XP 32 bits, o mesmo erro.
Então, com Win 7 ou XP, token ou SmartCard, somente em alguns clientes…Quero minha mãe!!!
Aguardo alguma luz dos amigos da lista.
Alencar
Caro philler, tivemos um problema parecido com o seu aqui, não conseguimos fazer rodar com Win 7, somente no XP funcionou, em máquinhas onde era Win 7, sem chance…e pelo q vimos era algo relacionado ao próprio certificado, é só vc entrar no site (http://www.certisign.com.br/suporte/central-de-verificacao-de-certificados) e lá tem como vc checar se é valido ou não…e ao lado tem uma observação sobre Win 7.
Mas aproveitando, hj estou apanhando com um certificado A1, preciso fazer ele funcionar para o estado de RN, ele aponta para o SVAN, certo?
Pois até hj só tive aplicações rodando com o estado de SP, tem algum macete, algum arquivo, q eu precise pegar baixar, configurar, pois faço o esquema tradicional, e uso um arquivo .keystore que gerei a partir do .cer do cliente, este .cer foi gerado baseado no arquivo .pfx que o cliente forneceu…enfim, segue o código abaixo…qq dica, informação…eu agradeço…
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStore", BaseLib.daoSisfatur.getString("dircerthom").trim());//arquivo (.pfx) fornecido pelo cliente
System.setProperty("javax.net.ssl.keyStorePassword", "senha");//Aqui a senha deste certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "meuArquivo.keystore");//Aqui vem o arquivo criado através do comando keytool no passo 3
O erro que tenho é o seguinte…
Saudações galera!é o seguinte, ja li essa thead inteira e não resolvi meu problema
quando tento conecta ao serviços da receita, minha conexão é recusada
erro 403utilizando o SmartCard eu não conseguia acessar diretamente a pagina do WSDL
por exemplo https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL
após instalar no browser os certificados ACCAIXA.cer, ACCAIXAPJ.cer, ACCAIXAPF.cer e acraiz.cer
que estão disponiveis em https://icp.caixa.gov.br/asp/certificados.asp
o IE passou a se conectar normalmente à pagina do wsdl, o que demonstra que o SmartCard esta OK (lista os aliases e solicita o PIN)
e em seguida conectapara o meu código, gerei o JKS com os certificados que mencionei acima
mais os obtidos no site homologacao.nfe.sefazvirtual.rs.gov.br, utilizando o programa InstallCert.java da Sunmesmo com todos esses procedimentos gera a seguinte exeption
Mensagem de Erro:
java.io.IOException: Server returned HTTP response code: 403 for URL: https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx?WSDL
atsun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313)…segue o meu codigo …
Já não sei mais o que fazer, se alguém puder ajudar
agradeço!abraços!
Cara, acredito que você deve estar passando pelo menos problema que experimentei a um tempo atrás.
Se ainda não tiver resolvido. Olha esse post:
valeu alexegidio, na verdade ja resolvi
nao tinha os certificados instalados no cartão
ja ate postei a solução
mas mesmo assim obrigado
Alguém aqui conseguiu consumir os WS do Paraná com o Axis2?
Eu consigo acessar apenas o de Status do serviço, os outros dá erro. Para os outros estados funciona perfeitamente
org.apache.axis2.databinding.ADBException: Unexpected subelement nfeRetRecepcaoResult
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement nfeRetRecepcaoResult
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
Galera,
Estou usando o netbeans para consumir os wsdl’s da receita. Quando mando gerar o codigo automatico esta assim:
private static NfeRetRecepcao2Result nfeRetRecepcao2(com.teste.retrecepcao.NfeDadosMsg nfeDadosMsg) {
com.teste.retrecepcao.NfeRetRecepcao2 service = new com.teste.retrecepcao.NfeRetRecepcao2();
com.teste.retrecepcao.NfeRetRecepcao2Soap port = service.getNfeRetRecepcao2Soap12();
return port.nfeRetRecepcao2(nfeDadosMsg);
}
Por onde passa agora as informaçoes desse negocio? Estava bom do jeito que estava. Sempre o governo tem que dar uma ferradinha na nossa vida!!!
A transportadora possui algum campo que torna alguma parte do Item Volume obrigatória de preencher ?
Zim!!!
Que campo seria este?
pode informar para nós…
valeu
modFrete e vol
O que nao estou entendendo é o seguinte, vou mandar o meu xml que gero ou vou ter que refazer o meu codigo XMl todo de novo?
Att
refazer pq?
modFrete e vol ??
como assim
Eu nao estou entendendo mais nada. Eu queria apenas ver como que faco para usar o codigo que postei acima.
Simples, sem complicacao gente!!!
snif snif!!!
Alguem ja consegue importar a NF-e versão 2.00 para o programa Emissor de NF-e do SEFAZ , fica emitindo erro de versao 2.00 errada
Se for o arquivo TXT, eu ouvi (veja bem só ouvi pode ser boato) mas ouvi de uma fonte confiavel de um professor de SPED de uma grande escola de São Paulo, que o software da receita não irá ter TXT na versão 2.00. Agora se eles vão manter o txt na versao 1.10 e com ele gerar as notas na versão 2.00 ou se quem usa TXT vai ter que se virar pra passar a gerar XML, isso eu ja não sei.
estou usando XML ja
sei que ja adiaram o prazo para uso da versão 2.00 mais ate agora nao sei qdo o emissor vai aceitar o novo layout
Olá pessoal, seguindo as instruções de vcs eu consegui gerar o stub com o axis2 mas está dando o seguinte erro:
java.lang.NoSuchMethodError: nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.addAnonymousOperations()V
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.populateAxisService(NfeStatusServico2Stub.java:43)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:84)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:73)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:129)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:120)
at xpro.xmanager.web.webservices.nfe.NFeSoapFactory.getNfeStatusServico2Soap(NFeSoapFactory.java:115)
at xpro.xmanager.logic.impl.logistica.notafiscaleletronica.NotaFiscalEletronicaImpl.queryStatusService2(NotaFiscalEletronicaImpl.java:417)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy69.queryStatusService2(Unknown Source)
at xpro.xmanager.modelo.logistica.notafiscaleletronica.NotaFiscalEletronicaTest.nfeStatusServicoTest(NotaFiscalEletronicaTest.java:628)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
indo dentro do stub, este método está sendo chamado de dentro do método populateAxisService (como mostra a trace), mas o método addAnonymousOperations e da Classe Stub, mas pq será que quando tento acessar o WS ele não encontra esse método?
Heeeelp 
já vasculhei a net e achei várias pessoas que tiveram esse problema, mas ninguem postou a solução. :?
Boa Tarde a todos…
Gostaria de saber se vocês coneguiram pegar a Impressão digital ou (thumbprint) de um certificado A3.
Estou precisando dessa informação para evitar que usuário envie uma NF-e usando o certificado de outra empresa (ex Filial enviar com Certificado da Matriz) ?
Gostaria de armazenar essa informação para fazer a comparação.
Desde já Obrigado
Miguel
Boa Tarde a todos…
Gostaria de saber se vocês coneguiram pegar a Impressão digital ou (thumbprint) de um certificado A3.
Estou precisando dessa informação para evitar que usuário envie uma NF-e usando o certificado de outra empresa (ex Filial enviar com Certificado da Matriz) ?
Gostaria de armazenar essa informação para fazer a comparação.
Eu uso o alias do certificado para este fim. Caso o usuário colocar o token/cartão errado, o alias não será encontrado e um erro ocorrerá na assinatura.
Outra informação: Se o CNPJ base das duas empresas são iguais, o cliente poderá assinar notas da filial com o certificado da matriz.
Alencar
Alencar,
O Alias do certificado ele tem um tamanho maximo de caracteres? Estou perguntando pois amazenarei essa informação no BD, e não quero mais tarde ter surpresas com alias maiores que o previsto.
Obrigado
Miguel
Boa tarde pessoal,
Estou tentando acessar o WS de status da nfe 2 mas estáq dando o seguinte erro
java.lang.NullPointerException
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:293)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.getService(NfeStatusServico2Stub.java:2719)
at xpro.xmanager.logic.impl.logistica.notafiscaleletronica.NotaFiscalEletronicaImpl.queryStatusService2(NotaFiscalEletronicaImpl.java:435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy69.queryStatusService2(Unknown Source)
at xpro.xmanager.modelo.logistica.notafiscaleletronica.NotaFiscalEletronicaTest.nfeStatusServicoTest(NotaFiscalEletronicaTest.java:628)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
meu codigo é o seguinte :
XMLStreamReader dado = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(consultaStatus.toString()));
NfeDadosMsg parse = NfeDadosMsg.Factory.parse(dado);
System.out.println(soap.getService(parse, cabecalhoE).getExtraElement());
NfeStatusServicoNF2Result result = soap.getService(parse, cabecalhoE).getExtraElement();
sendo que o null pointer vem de dentro do nfeStatusServicoNF2 a seguinte variável está null, e não deveria _messageContex
alguem sabe o que poderia ser?
pessoal problema resolvido…fiz algumas consistências na classe gerada pelo stub, e parece que agora está ok
Alencar,
O Alias do certificado ele tem um tamanho maximo de caracteres? Estou perguntando pois amazenarei essa informação no BD, e não quero mais tarde ter surpresas com alias maiores que o previsto.Miguel
Não sei lhe afirmar, mas por padrão, String deve ir até 255.
Alencar
Pessoal meu XML gerado está ficando assim, mas não passa
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header>
<ns1:nfeCabecMsg xmlns:ns1="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"
soapenv:mustUnderstand="false">
<cUF xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
31</cUF>
<versaoDados xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
2.00</versaoDados>
</ns1:nfeCabecMsg>
</soapenv:Header>
<soapenv:Body>
<ns1:nfeDadosMsg xmlns:ns1="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>
</ns1:nfeDadosMsg>
</soapenv:Body>
</soapenv:Envelope>
não sei se pode ser, mas quando gera o envelope dentro do Stub, os campos do header está ficando preenchido com o xmlns, ai dá o seguinte o erro:
java.lang.AbstractMethodError: nfe.impl.homologacao.statusservico.NfeStatusServico2Stub$NfeDadosMsg$1.serialize(Ljavax/xml/stream/XMLStreamWriter;)V
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:738)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:966)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:995)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:254)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:242)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:995)
at org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:486)
at org.apache.axis2.transport.http.SOAPOverHTTPSender$AxisSOAPRequestEntity.handleOMOutput(SOAPOverHTTPSender.java:190)
at org.apache.axis2.transport.http.SOAPOverHTTPSender$AxisSOAPRequestEntity.writeRequest(SOAPOverHTTPSender.java:232)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:541)
at org.apache.axis2.transport.http.SOAPOverHTTPSender.send(SOAPOverHTTPSender.java:119)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:335)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:204)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:674)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:237)
at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:202)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:219)
at nfe.impl.homologacao.statusservico.NfeStatusServico2Stub.getService(NfeStatusServico2Stub.java:2789)
at xpro.xmanager.logic.impl.logistica.notafiscaleletronica.NotaFiscalEletronicaImpl.queryStatusService2(NotaFiscalEletronicaImpl.java:432)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy69.queryStatusService2(Unknown Source)
at xpro.xmanager.modelo.logistica.notafiscaleletronica.NotaFiscalEletronicaTest.nfeStatusServicoTest(NotaFiscalEletronicaTest.java:628)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
alguém vê amis alguma coisa que possa estar errado?
Galera,
Tenho duas dúvidas:
1º Ja gerei o xml, assinei e validei, mas como eu consigo gerar os wsdls no net beans para fazer a comunicação? Eu tento aqui mas não estou consegundo, alguém tem um descritivo?
2ºGerei o xml através de outro programa, como vocês fizeram através do xsd? Podem me explicar como?
não. vc pega o wsdl no site, e enta utilizando o axis vc extrai as classes, tem alguns tópicos aqui no forum sobre isso.
Orlando,
estou com wsdl todos aqui, já tentei através do jaxb mas não estou consgeundo, estou meio perdido, já tentei com esse axis mas não entendi absolutamente nada.
essa parte de envio é desktop!
Pessoal consegui instanciar as classes e tudo só que estou com um erro
Exception in thread "main" com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:135)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:142)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:88)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at com.sun.xml.ws.client.Stub.process(Stub.java:248)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:134)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:244)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:224)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:117)
at $Proxy30.nfeStatusServicoNF2(Unknown Source)
at envionfe.Main.main(Main.java:70)
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:179)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:199)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:365)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:832)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(HttpsURLConnectionOldImpl.java:200)
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:123)
... 13 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Provider.java:1245)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
at com.sun.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:147)
at com.sun.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:121)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.<init>(HttpsURLConnectionOldImpl.java:61)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Handler.java:34)
at java.net.URL.openConnection(URL.java:992)
at com.sun.xml.ws.api.EndpointAddress.openConnection(EndpointAddress.java:208)
at com.sun.xml.ws.transport.http.client.HttpClientTransport.createHttpConnection(HttpClientTransport.java:312)
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:119)
... 13 more
Caused by: java.security.NoSuchProviderException: no such provider: Safenetikey2032
at sun.security.jca.GetInstance.getService(GetInstance.java:66)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.Security.getImpl(Security.java:662)
at java.security.KeyStore.getInstance(KeyStore.java:632)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:145)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
... 26 more
Java Result: 1
Abaixo meu código:
package envionfe;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.*;
import java.security.Provider;
import java.security.Security;
import javax.swing.JOptionPane;
/**
*
* @author felipe
*/
public class Main
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
// TODO code application logic here
try
{
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Provider p = new sun.security.pkcs11.SunPKCS11("token.cfg");
Security.addProvider(p);
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-Safenetikey2032");
System.setProperty("javax.net.ssl.keyStoreAlias", "Safenetikey2032");
System.setProperty("javax.net.ssl.keyStorePassword", "******");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "nfe.keystore");
NfeStatusServico2 service = new NfeStatusServico2();
NfeCabecMsg cabecMsg = new ObjectFactory().createNfeCabecMsg();
cabecMsg.setCUF("35");
cabecMsg.setVersaoDados("2.00");
NfeDadosMsg dadosMsg = new ObjectFactory().createNfeDadosMsg();
dadosMsg.getContent().add(cabecMsg);
NfeStatusServico2Soap12 nfeStatus = service.getNfeStatusServico2Soap12();
NfeStatusServicoNF2Result nfeResult = new ObjectFactory().createNfeStatusServicoNF2Result();
System.out.println("Status: " + nfeStatus.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Alguem sabe o que está errado ou tem um exemplo? estou usando o netbeans!
Estou tendo o mesmo problema reportado em: http://www.guj.com.br/posts/list/570/72325.java pelo leandro.bernardo1
[[retConsStatServ: null]]
Alguém tem a solução, como consigo obter os dados da resposta?
Obrigado!
Opa… eae pessoal !!!Em relação ao tempo… depende muito…
Se vc for fazer a nota fiscal para serviços eh até que rápido (20 dias)… mas a de produtos eh um inferno… tem informação pra caramba… tantas que teremos que adicionar novos campos no sitema aki…Para agilizar é possível dividir em três etapas…
- Criar os XML;
- Desenvolver os processos de envio e retorno;
- Fazer um controle de log, o que foi e o que nao foi… arquivar etc… parte mais trabalhosa do que dificil.
No momento estamos fechando a geração dos XML’s de acordo com o manual de integração da SEFAZ (espero ser esse mesmo o manual)…
Em paralelo estamos desenvolvenfo as classes de envio e controle…Assim que terminar os XML, pode se usaro programa da SEFAZ para fazer testes… importar o XML para ele e ver erros de layout…
Se vc for usar o sistema da SEFAZ para transmitir… ai eh so se preocupar em gerar os XML… e pronto… todo controle de envio e log ficam por conta deste software que eh disponibilizado pela SEFAZ. (http://www.emissornfehom.fazenda.sp.gov.br/download.html)
Tem duas versões esse software… uma para Homologação e outra de Produção… fora ser uma boa referência para definir campos, layout’s e informações… pois o mesmo vem com help.
Fui !!
Sem querer “sugar” código, mas será que poderia me ajudar em como gerar essas classes (webservices) para o envio?
Já tenho o XML pronto e validado (pelo menos no SEFAZ do RS validou com sucesso) com um certificado de testes, portanto ainda estou no ambiente de homologação.
Acho muito confusas essas versões do layout da nota, do status do serviço, cada parte tem uma versão diferente, extremamente confuso.
Saberia me dizer como gero essas classes no Netbeans? (é um sistema em Swing).
Obrigado
Pessoal, bom dia!
Seguinte, alguém já passou por isso?
2SVRS20100811185009226Rejeicao: Codigo da UF do Emitente diverge da UF autorizadora4343100707164980000107550010000000111182919315
segue meu código:
public static void main(String[] args) {
String nfeDadosMsg = "<nfeDadosMsg><consSitNFe versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\">"
+ "<xServ>CONSULTAR</xServ><tpAmb>2</tpAmb><chNFe>43100707164980000107550010000000111182919315</chNFe>"
+ "</consSitNFe></nfeDadosMsg>";
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "*****);
System.setProperty("javax.net.ssl.keyStorePassword", "*****");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "*****");
try{
br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg nfeCabec = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg();
nfeCabec.setCUF("43");
nfeCabec.setVersaoDados("2.00");
br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE nfeCabecE = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg nfeDados = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString);
nfeDados = br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg.Factory.parse(XML);
NfeConsulta2Stub nfeStub = new NfeConsulta2Stub();
System.out.println(nfeStub.nfeConsultaNF2(nfeDados, nfeCabecE).getExtraElement());
} catch (Throwable e){
e.printStackTrace();
}
}
Gerei meu client com o Axis2.
Pessoal, bom dia!Seguinte, alguém já passou por isso?
2SVRS20100811185009226Rejeicao: Codigo da UF do Emitente diverge da UF autorizadora4343100707164980000107550010000000111182919315
segue meu código:
public static void main(String[] args) { String nfeDadosMsg = "<nfeDadosMsg><consSitNFe versao=\"2.00\"" + " xmlns=\"http://www.portalfiscal.inf.br/nfe\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\">" + "<xServ>CONSULTAR</xServ><tpAmb>2</tpAmb><chNFe>43100707164980000107550010000000111182919315</chNFe>" + "</consSitNFe></nfeDadosMsg>"; System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); System.setProperty("javax.net.ssl.keyStore", "*****); System.setProperty("javax.net.ssl.keyStorePassword", "*****"); System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore", "*****"); try{ br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg nfeCabec = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg(); nfeCabec.setCUF("43"); nfeCabec.setVersaoDados("2.00"); br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE nfeCabecE = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE(); nfeCabecE.setNfeCabecMsg(nfeCabec); br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg nfeDados = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg(); ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes()); XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString); nfeDados = br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg.Factory.parse(XML); NfeConsulta2Stub nfeStub = new NfeConsulta2Stub(); System.out.println(nfeStub.nfeConsultaNF2(nfeDados, nfeCabecE).getExtraElement()); } catch (Throwable e){ e.printStackTrace(); } }Gerei meu client com o Axis2.
Estou tendo um problema similar, Alguém poderia me ajudar…
Bom, trabalho em uma empresa que está desenvolvendo um projeto para a emissão de nota fiscal eletrônica já em sua versão 2.00. A princípio eu estou tentando enviar um lote de nota fiscal eletrênica ao sefaz de são Paulo https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRecepcao2.asmx?WSDL.
Até ai tudo certo eu consigo enviar e o lote é recebido com sucesso, só que quando eu efetuo a consulta do lote o sefaz me informa que a nota foi rejeitada. Resposta abaixo:
Pelo que entendi, o erro me informa que a chave de acesso da nota ?NFe35100810752305000103550010000000071001241174?[color=darkred] [/color][color=red] [/color], não corresponde a concatenação dos campos: cUF, AAMM ,CNPJ, mod, serie, nNF , tpEmis , cNF , cDV(calculo que também já fiz) mas está, segue a nota abaixo:
<?xml version="1.0" encoding="utf-8"?> [b]35[/b] [b]00124117[/b] 2 0 [b]55[/b] [b]1[/b] [b]7[/b] [b]2010-08-18[/b] 2010-08-18 16:00:00 1 3541000 1 [b]1[/b] 0 2 1 0 1.0 [b]10752305000103[/b] nomeEmpresa nomeEmpresa Rua 164 ........Pessoal, bom dia!Seguinte, alguém já passou por isso?
2SVRS20100811185009226Rejeicao: Codigo da UF do Emitente diverge da UF autorizadora4343100707164980000107550010000000111182919315
segue meu código:
public static void main(String[] args) { String nfeDadosMsg = "<nfeDadosMsg><consSitNFe versao=\"2.00\"" + " xmlns=\"http://www.portalfiscal.inf.br/nfe\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\">" + "<xServ>CONSULTAR</xServ><tpAmb>2</tpAmb><chNFe>43100707164980000107550010000000111182919315</chNFe>" + "</consSitNFe></nfeDadosMsg>"; System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); System.setProperty("javax.net.ssl.keyStore", "*****); System.setProperty("javax.net.ssl.keyStorePassword", "*****"); System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore", "*****"); try{ br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg nfeCabec = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg(); nfeCabec.setCUF("43"); nfeCabec.setVersaoDados("2.00"); br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE nfeCabecE = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE(); nfeCabecE.setNfeCabecMsg(nfeCabec); br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg nfeDados = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg(); ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes()); XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString); nfeDados = br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg.Factory.parse(XML); NfeConsulta2Stub nfeStub = new NfeConsulta2Stub(); System.out.println(nfeStub.nfeConsultaNF2(nfeDados, nfeCabecE).getExtraElement()); } catch (Throwable e){ e.printStackTrace(); } }Gerei meu client com o Axis2.
Provavelmente o cara que emitiu esta nota, emitiu para o sefaz errado…
Pessoal, bom dia!Seguinte, alguém já passou por isso?
2SVRS20100811185009226Rejeicao: Codigo da UF do Emitente diverge da UF autorizadora4343100707164980000107550010000000111182919315
segue meu código:
public static void main(String[] args) { String nfeDadosMsg = "<nfeDadosMsg><consSitNFe versao=\"2.00\"" + " xmlns=\"http://www.portalfiscal.inf.br/nfe\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\">" + "<xServ>CONSULTAR</xServ><tpAmb>2</tpAmb><chNFe>43100707164980000107550010000000111182919315</chNFe>" + "</consSitNFe></nfeDadosMsg>"; System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); System.setProperty("javax.net.ssl.keyStore", "*****); System.setProperty("javax.net.ssl.keyStorePassword", "*****"); System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore", "*****"); try{ br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg nfeCabec = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsg(); nfeCabec.setCUF("43"); nfeCabec.setVersaoDados("2.00"); br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE nfeCabecE = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeCabecMsgE(); nfeCabecE.setNfeCabecMsg(nfeCabec); br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg nfeDados = new br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg(); ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes()); XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString); nfeDados = br.com.imdt.nfe.ws.nfeconsulta.wsdl.NfeDadosMsg.Factory.parse(XML); NfeConsulta2Stub nfeStub = new NfeConsulta2Stub(); System.out.println(nfeStub.nfeConsultaNF2(nfeDados, nfeCabecE).getExtraElement()); } catch (Throwable e){ e.printStackTrace(); } }Gerei meu client com o Axis2.
Estou tendo um problema similar, Alguém poderia me ajudar…
<?xml version="1.0" encoding="utf-8"?> 2 SP_NFE_PL_006e 351000019435078 104 Lote processado 35 2 SP_NFE_PL_006e 35100810752305000103550010000000071001241174 2010-08-18T18:12:19 502 [b]Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes[/b][color=red] [/color]
Bom, trabalho em uma empresa que está desenvolvendo um projeto para a emissão de nota fiscal eletrônica já em sua versão 2.00. A princípio eu estou tentando enviar um lote de nota fiscal eletrênica ao sefaz de são Paulo https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRecepcao2.asmx?WSDL.
Até ai tudo certo eu consigo enviar e o lote é recebido com sucesso, só que quando eu efetuo a consulta do lote o sefaz me informa que a nota foi rejeitada. Resposta abaixo:Pelo que entendi, o erro me informa que a chave de acesso da nota ?NFe35100810752305000103550010000000071001241174?[color=darkred] [/color][color=red] [/color], não corresponde a concatenação dos campos: cUF, AAMM ,CNPJ, mod, serie, nNF , tpEmis , cNF , cDV(calculo que também já fiz) mas está, segue a nota abaixo:
<?xml version="1.0" encoding="utf-8"?> [b]35[/b] [b]00124117[/b] 2 0 [b]55[/b] [b]1[/b] [b]7[/b] [b]2010-08-18[/b] 2010-08-18 16:00:00 1 3541000 1 [b]1[/b] 0 2 1 0 1.0 [b]10752305000103[/b] nomeEmpresa nomeEmpresa Rua 164 ........
RESOLVIDO
Nossa realmente acabei viajando mesmo eu tinha esquecido de alterar o valor da tag <cDV>0</cDV> para <cDV>4</cDV> e por este motivo estava dando erro de concatenação. Fata de atenção minha!!!
valew pela força tbm gilmaslima, estava a algum tempo já tentando encontrar o problema…
[quote=andre.luiz.kbca]
Pessoal, bom dia!Seguinte, alguém já passou por isso?
2SVRS20100811185009226Rejeicao: Codigo da UF do Emitente diverge da UF autorizadora4343100707164980000107550010000000111182919315
Passei por isso dias atras.
No meu caso, era o código da UF que são os dois primeiros digitos da chave de acesso que estavam zerado.
Mas também pode ser o cUF diferente da SEFAZ de destino.
Alencar
Consegui tirar o soapenv:mustUnderstand=“false” do XML do AXIS (se alguém preicisar posso postar o código), porém, continuo obtendo: Rejeição: Falha no schema XML.
Falta apenas a questão do soapenv: que o AXIS está gerando ao invés de gerar soap12:
Alguém sabe se isso pode ser a causa da rejeição?
Olá,
Por favor, poderia postar o código para remover o atributo soapenv:mustUnderstand=“false”?
Se alguem mais souber como posso remover este atributo do XML do Axis, eu agradeço.
Abraços
Diogo
Pessoal… estou com um problema e não achei a solução ainda…
Utilizei o JaxB pra gerar as classes
Estou tentando enviar uma nfe… acho que o webservice mesmo que gera o xml para envio…então incluo um objeto TNFe no msgDados em vez da String com o xml… o problema é que na hora de enviar ele cria um monte de prefix namespace …tipo ns2 ns3 e assim vai…
Olha o meu código
public static void enviar(){
System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
ajustaSslCertificadoA1();//ajusta os certificados do cliente e do sefaz
//cria a mensagem de dados
NfeDadosMsg nfeDadosMsg = createNfeDadosMsg(arquivoNfe);
//cria o cabeçalho
Holder<NfeCabecMsg> nfeCabecMsg = new Holder<NfeCabecMsg>(createNfeCabecMsg());
NfeRecepcao2Soap12 consulta = new NfeRecepcao2().getNfeRecepcao2Soap12();
//envia e retorna a mensagem de resposta
NfeRecepcaoLote2Result result = consulta.nfeRecepcaoLote2(nfeDadosMsg,nfeCabecMsg);
}
private static NfeDadosMsg createNfeDadosMsg(File arquivoNfe) {
NfeDadosMsg dadosMsg = new NfeDadosMsg();
LeitorXML leitor = new LeitorXML();
TNFe tnfe = leitor.lerNFe(arquivoNfe);
dadosMsg.getContent().add(tnfe);
return dadosMsg;
}
private static NfeCabecMsg createNfeCabecMsg() {
NfeCabecMsg cabecMsg = new NfeCabecMsg();
cabecMsg.setCUF( "43");
cabecMsg.setVersaoDados("2.00");
return cabecMsg;
}
Ele cria os dados tudo certo o tnfe também gera correto… mas na hora de criar o soap de envio com a linha NfeRecepcaoLote2Result result = consulta.nfeRecepcaoLote2(nfeDadosMsg,nfeCabecMsg);
ele gera esses xmlns:ns2 e xmlns:ns3 malditos… com isso dá rejeição lá no webService…
alguém já passou por isso?
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2" xmlns:ns2="http://www.portalfiscal.inf.br/nfe" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
<cUF>43</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</S:Header>
<S:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2" xmlns:ns2="http://www.portalfiscal.inf.br/nfe" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
<ns2:NFe>
.... Dados pertinentes da nfe
</ns2:NFe>
</nfeDadosMsg
></S:Body>
</S:Envelope>
Já tentei formar o cabeçalho em forma de string pra tentar acertar, mas na hora de enviar ele gera denovo os ns2, ns3…
Oi leopoldof,
tive o mesmo problema, e resolvi dessa forma:
Na classe NfeRecepcao2Stub, procure por “ns2” e “ns3” (com aspas) e deixe “” (aspas duplas vazia).
Veja o exemplo:
public static class NfeDadosMsg implements
org.apache.axis2.databinding.ADBBean {
public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
"http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2",
"nfeDadosMsg", ""); // ns1
Obrigado…resolvido!
Pessoal estou com uma dúvida sobre a tag indTot dos produtos…
No manual diz "0 se não compõe o total do valor da nfe e 1 se compõe o total"
A dúvida é…
se eu adiconar 1 no indTot de um ítem , o valor da nota será o valor do ítem? isto é…que o ítem representa o valor total da nota;;;;
ou se somar todos os ítens que tiverem a tag 1 terá que dar automaticamente o valor da nfe?
Alguem conseguiu consultar o cadastro versao layout 2.0 (CadConsultaCadastro2) através do webservice do RS ? Se sim, como fez, o que ferramenta usou, axis ? Não estou conseguindo…
Ok, finalmente consegui, estava pasando o formato da msg errada. Segue a forma correta caso alguem tenha o mesmo problema…
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<ns1:nfeDadosMsg xmlns:ns1=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2\">"
+ "<ConsCad xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">"
+ "<infCons>"
+ "<xServ>CONS-CAD</xServ>"
+ "<UF>RS</UF>"
+ "<CNPJ>xxxxxxxxxxxxxx</CNPJ>"
+ "</infCons>"
+ "</ConsCad>"
+ "</ns1:nfeDadosMsg>";
Estranho, fiz pelo wizard e tbm deu certo... olha so como fiz:Olá, como estou completamente perdido nessa etapa de verificar o status do serviço na homologação, usei seu código como exemplo, veja como ficou o meu e veja a exceção que recebo, se puder me apontar alguma coisa que estou fazendo errado, por favor eu ficaria muito agradecido.Tente isso.. abracoString[] aUrl = {"homologacao.sefaz.mt.gov.br","/nfews/NfeStatusServico2"}; String sUf = "51"; // MT ok /* conecao segura */ NfeStatusServico2Stub nfe = new NfeStatusServico2Stub("https://" + aUrl[0] + aUrl[1]); NfeCabecMsgE nfeCabecMsg1 = new NfeCabecMsgE(); NfeCabecMsg param = new NfeCabecMsg(); param.setCUF(sUf); param.setVersaoDados("2.00"); nfeCabecMsg1.setNfeCabecMsg(param); OMElement ome = AXIOMUtil.stringToOM( "<consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">" + " <tpAmb>2</tpAmb>" + " <cUF>" + sUf + "</cUF>" + " <xServ>STATUS</xServ>" + "</consStatServ>"); NfeDadosMsg nf2 = new NfeDadosMsg(); nf2.setExtraElement(ome); NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf2, nfeCabecMsg1); System.out.println("Resposta : \n" + resp.getExtraElement().toString());
NFe.setPropriedadesCertificado();
String cUF = "35"; // SP
String tipoAmbiente = "1"; //1=homologacao, 2=producao
String versao = "2.00";
String nfeDadosMsg = ""
+ "<nfeDadosMsg>"
+ " <consStatServ versao=\""+versao+"\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ " <tpAmb>"+tipoAmbiente+"</tpAmb>"
+ " <cUF>"+cUF+"</cUF>"
+ " <xServ>STATUS</xServ>"
+ " </consStatServ>"
+ "</nfeDadosMsg>";
NfeStatusServico2Stub nfe = new NfeStatusServico2Stub("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx");
NfeCabecMsgE nfeCabecMsg1 = new NfeCabecMsgE();
NfeCabecMsg param = new NfeCabecMsg();
param.setCUF(cUF);
param.setVersaoDados(versao);
nfeCabecMsg1.setNfeCabecMsg(param);
OMElement ome = AXIOMUtil.stringToOM(nfeDadosMsg);
NfeDadosMsg nf2 = new NfeDadosMsg();
nf2.setExtraElement(ome);
NfeStatusServicoNF2Result resp = nfe.nfeStatusServicoNF2(nf2, nfeCabecMsg1);
System.out.println("Retorno : \n" + resp.getExtraElement().toString());
org.apache.axis2.AxisFault: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at emissor.webservices.status2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:174)
at emissor.lib.NFe.statusServico(NFe.java:84)
galera utilizando o axis2 as classes geradas a partir dos wsdl sao essas, mas vendo aki no forum as q vii sao outras, minha duvia eh: tenho q utilizar o axis1 em vez de axis2??NfeStatusServicoNF2Result.java
NfeStatusServico2Skeleton.java
NfeStatusServico2MessageReceiverInOut.java
NfeDadosMsg.java
NfeCabecMsg0.java
NfeCabecMsg.java
ExtensionMapper.java
Eu utilizo o Axis2 para gerar as classes, funciona normal, mas o nome da segunda e da terceira estão estranhos
Eu também uso o Axis2, já tou ficando maluco com tantos nomes de classes diferentes, cada um que vejo está diferente do outro, e isso só o de status do serviço, quais são suas classes?
Teria um exemplo de código para verificar o status do serviço?
Obrigado.
Olá
Não sei se ajuda, mas foi lançado recentemente um livro sobre NF-e
http://www.lcm.com.br/index.php?Escolha=20&Livro=L00894
Esse trem dá trabalho mesmo!
Fala galera, há muito tempo eu desenvolvi o projeto da NFe aqui na empresa onde trabalho, recebi muita ajuda aqui do GUJ e ajudei muita gente também.
Agora infelizmente eu tive que voltar pra esse projeto para adapta-lo a versão 2 da NFe. E agora eu estou precisando da ajuda aqui do pessoal.
Já fiz as comunicações com WEB-Service e estão tudo ok (usando o AXIS 2), meu problema é o seguinte:
- Nosso sistema é WEB e trabalha com um grupo de empresas logo precisamos configuar o certificado do cliente de forma dinamica não da pra usar o System.properies.
na versão 1 do XML eu utilizava uma classe chamada: org.apache.axis.client.SSLClientAxisEngineConfig
mais ou menos assim:
axisConfig.setKeyStoreType("PKCS12");
axisConfig.setKeyStore("****");
axisConfig.setKeyStorePassword("***");
e agora no Axis 2 alguem ja utilizou isso, eu andei dando uma fuçada na classe ConfigurationContext que se passa no construtor dos Stubs mas não consegui.
Alguem pode me ajudar?
A minha ultima cartada que eu não queria dar pq vai ficar muito gambiarra seria trocar o properties do sistema através do método System.setProperties(props); para um que obtivesse os valores da Session do servidor.
Obrigado…
galera utilizando o axis2 as classes geradas a partir dos wsdl sao essas, mas vendo aki no forum as q vii sao outras, minha duvia eh: tenho q utilizar o axis1 em vez de axis2??NfeStatusServicoNF2Result.java
NfeStatusServico2Skeleton.java
NfeStatusServico2MessageReceiverInOut.java
NfeDadosMsg.java
NfeCabecMsg0.java
NfeCabecMsg.java
ExtensionMapper.java
Eu utilizo o Axis2 para gerar as classes, funciona normal, mas o nome da segunda e da terceira estão estranhos
Eu também uso o Axis2, já tou ficando maluco com tantos nomes de classes diferentes, cada um que vejo está diferente do outro, e isso só o de status do serviço, quais são suas classes?
Teria um exemplo de código para verificar o status do serviço?Obrigado.
segue um exemplo…
ConfiguraKeystore.setPropertySefaz("C:\\CertificadosHomologacao\\exportado\\");//configura os certificados
br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub stub = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub();
br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg nfeDadosMsg7= null;
// TODO : Fill in the nfeDadosMsg7 here
String nfeDadosMsg =
"<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">" +
"<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
"<tpAmb>2</tpAmb>" +
"<cUF>42</cUF>" +
"<xServ>STATUS</xServ>" +
"</consStatServ>" +
"</nfeDadosMsg>";
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
Factory factory = new Factory();
nfeDadosMsg7 = factory.parse(inputFactory.createXMLStreamReader(new StringReader(nfeDadosMsg)));
// br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsg8 = new br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE();
System.out.println("aqui 1");
NfeCabecMsgE nfeCabecMsg8 = new NfeCabecMsgE();
System.out.println("aqui 2");
// TODO : Fill in the nfeCabecMsg8 here
NfeCabecMsg cabec = new NfeCabecMsg();
cabec.setCUF("42");
cabec.setVersaoDados("2.00");
nfeCabecMsg8.setNfeCabecMsg(cabec);
NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg7, nfeCabecMsg8);
System.out.println(result.localExtraElement);
import java.io.StringReader;
import javax.xml.stream.XMLInputFactory;
import br.ConfiguraKeystore;
import br.com.mili.nfe.wssvrs2.iface.IWSStatusServico2NFe;
import br.com.mili.nfe.wssvrs2.ws.WSStatusServicoNFe2;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsg;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeStatusServicoNF2Result;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg.Factory;
Resolvido: o problema estava na consulta do recibo da NFe, e não no envio. Estava gerando o XML da consulta com ConsReciNFe (c em maiúsculo - bobeira). E não estava conseguindo consultar pela chave de acesso no site da Sefaz-SP pois recebi como resposta: "Rejeição: Total do Produto / Serviço difere do somatório dos itens".Olá, como foi que resolveu esse problema dos somatórios? Estou fazendo um teste simples com apenas uma nota fiscal (homologação), com apenas um produto/serviço e está me retornando isso, não sei mais o que fazer, já conferi todos as tags e valores, onde pode ser essa somatória?
Codigo retorno recibo...: 104
Versao leiaute SEFAZ....: 2.00
Tipo de ambiente recibo.: 2
Versao aplicativo SEFAZ.: SP_NFE_PL_006e
Numero recibo consultado: 351000021585236
Status da resposta......: Lote processado
UF que atendeu a chamada: 35
Codigo da Mensagem......: null
Mensagem................: null
ID....................: null
Tipo de ambiente......: 2
Versao aplicativo.....: SP_NFE_PL_006e
Chave de acesso.......: 35100902767116000186550010000266861020711469
Data/hora recebimento.: 2010-09-23T07:11:48
Numero do protocolo...: null
Codigo do status......: 564
Resposta..............: Rejeição: Total do Produto / Serviço difere do somatório dos itens
desculpe incomodar vocês, procurei muito e não achei.
alguém já viu ou sabe onde posso encontrar uma solução para consultar um NFe pelo site
https://www.nfe.fazenda.gov.br/PORTAL/FormularioDePesquisa.aspx?tipoconsulta=completa
digitando apenas a chave de acesso ?
abraço até mais
Ok, finalmente consegui, estava pasando o formato da msg errada. Segue a forma correta caso alguem tenha o mesmo problema…"<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<ns1:nfeDadosMsg xmlns:ns1=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2\">" + "<ConsCad xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">" + "<infCons>" + "<xServ>CONS-CAD</xServ>" + "<UF>RS</UF>" + "<CNPJ>xxxxxxxxxxxxxx</CNPJ>" + "</infCons>" + "</ConsCad>" + "</ns1:nfeDadosMsg>";</blockquote>Será que alguém teria, por favor, [color=darkblue]um exemplo de como consultar o cadastro do emitente[/color]? (as classes do webservice).
Peguei o WSDL e gerei as classes mas parece que não estão corretas (fora do padrão dos demais webservices), estou querendo consultar o cadastro na UF de SP, a classe CadConsultaCadastro2Stub que gerou para mim (com Axis2) não tem a …Result, tem uma classe chamada ConsultaCadastro2Result_type0, não achei quase nada na net sobre isso.
Minha última etapa na homologação, já tava comemorando e agora não consigo passar disso.
Estou com outro problema seríssimo, tenho 2 certificados A3 em tokens, com um acesso todos os serviços normalmente, já com o segundo está me retornando uma maldita de uma Exception que não consigo resolver, no Axis2:
org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:200)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at emissor.ws.h.status.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:173)
at emissor.lib.NFe.getStatusServico(NFe.java:457)
at emissor.ui.NotasFiscaisUI$1.run(NotasFiscaisUI.java:154)
Alguma alma bondosa poderia me ajudar a resolver isso?
Será algum problema no certificado?
Estou com outro problema seríssimo, tenho 2 certificados A3 em tokens, com um acesso todos os serviços normalmente, já com o segundo está me retornando uma maldita de uma Exception que não consigo resolver, no Axis2:
org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:200) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at emissor.ws.h.status.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:173) at emissor.lib.NFe.getStatusServico(NFe.java:457) at emissor.ui.NotasFiscaisUI$1.run(NotasFiscaisUI.java:154)Alguma alma bondosa poderia me ajudar a resolver isso?
Será algum problema no certificado?
O segundo token deve estar sem a cadeia certificadora ou até tem, mas errada.
Já tive casos em que a cadeia que constava no token não correspondia ao certificado do cliente.
Alencar
Caramba, e o que eu devo fazer?
Verifique quem (AC) emitiu o certificado do cliente, tipo CAIXAPJ, ACNOTORIAL, etc…
Importe o certificado do emitente no token, assim como todos os certificados da cadeia,
até chegar na Raiz Brasileira v1.
Pronto.
Alencar
Obrigado por tentar ajudar.
Já liguei no suporte da Certisign e fizeram um teste no site da prefeitura de SP e o certificado foi aceito.
O que tá me matando é que tenho dois, o outro (que utiliza a mesma forma de acessar o serviço) funciona e o outro não.
A pessoa da Certisign disse que se a raíz estivesse errada no site da prefeitura de SP não ia funcionar, me disse também que o token só pode ser gravado uma vez, ou seja, não tem como reinicializar e importar raíz.
Eu utilizo o programa eToken PKI Client para ver as propriedades dos certificados, segue imagens que retirei do certificado que está me dando problemas.




Infelizmente a imagem do certificado tockprint nao veio.
Por favor, vamos resolver isso por email para não tumultuar a lista, visto ser um caso particular seu.
Me envie uma msg em pvt.
Alencar
Ok, amigo muito obrigado.
Me desculpe mas não vejo onde clicar para te mandar uma mensagem em pvt. Não tem link no seu login.
Verifique quem (AC) emitiu o certificado do cliente, tipo CAIXAPJ, ACNOTORIAL, etc…
Importe o certificado do emitente no token, assim como todos os certificados da cadeia,
até chegar na Raiz Brasileira v1.
Pronto.
Alencar
Respondendo para a lista para registro e consultas futuras:
Quem emitiu o certificado da Tockprint foi a AC Certisign Multipla G3.
Mas a cadeia certificadora que consta no token é:
AC Certisign RFB G3
AC Secretaria da Rece…
Autoridade Certi…
Entendeu? O certificado AC Certisign Multipla G3 não consta na cadeia.
Importe o certificado no token, clicando com o botao direito em cima de Certificados AC.
Alencar
Prezados,
Primeria gostaria de falar que acompanho o forum a um bom tempo, e mesmo depois de procurar no forum e na internet não consegui resolver o meu problema.
Estou validando o meu xml de acordo com o xsd e aparece o seguinte erro:
Warning: validation was turned on but an org.xml.sax.ErrorHandler was not
set, which is probably not what is desired. Parser will use a default
ErrorHandler to print the first 10 errors. Please call
the 'setErrorHandler' method to fix this.
Error: URI=file:/C:/Users/Administrator/Desktop/nfe/nf2.xml Line=2: Document is invalid: no grammar found.
Error: URI=file:/C:/Users/Administrator/Desktop/nfe/nf2.xml Line=2: Document root element "NFe", must match DOCTYPE root "null".
ERROR: cvc-elt.1: Cannot find the declaration of element 'NFe'.
Ja li no proprio forum que pode ser o meu xml , mas creio que não, vou postar o começo do mesmo
<?xml version="1.0" encoding="utf-8"?>
<NFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe versao="2.00" Id="NFe31101027673876000155552341478987451825228768">
Desde já Agradeço
Primeiro, o xml está errado sim, está mostrando que não está de acordo com o xsd, segundo você precisa apenas colocar um ErrorHandler para melhorar as mensagens de erro na validação.
Crie uma innerClass nessa classe que faz a validação:// para guardar os erros no leiaute
public static String erroLeiaute = "";
...
public boolean validarXML(String arquivoEsquema, String arquivoXML) throws ParserConfigurationException, SAXException, IOException {
boolean valido = false;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", arquivoEsquema);
DocumentBuilder builder = null;
erroLeiaute = "";
try {
builder = factory.newDocumentBuilder();
builder.setErrorHandler(new SchemasErrorHandler());
} catch (ParserConfigurationException ex) {
}
org.w3c.dom.Document document;
try {
document = builder.parse(arquivoXML);
org.w3c.dom.Node rootNode = document.getFirstChild();
} catch (IOException ex) {
} catch (SAXException ex) {
}
return true;
}
class SchemasErrorHandler implements ErrorHandler {
public SchemasErrorHandler() {
}
public SchemasErrorHandler(String msg) {
}
public void error(SAXParseException ex) {
erroLeiaute += "ERRO NORMAL: " + ex.getMessage() + "\n";
}
public void fatalError(SAXParseException ex) {
erroLeiaute += "ERRO FATAL: " + ex.getMessage() + "\n";
}
public void warning(SAXParseException ex) {
erroLeiaute += "AVISO: " + ex.getMessage() + "\n";
}
}
Primeiro, o xml está errado sim, está mostrando que não está de acordo com o xsd, segundo você precisa apenas colocar um ErrorHandler para melhorar as mensagens de erro na validação.
Caro javer, ja estava tratando o erro de maneira um pouco mais grosseira, mas estava.
Porém continuoc com o mesmo erro, e não consiguo identificar o erro no xml
Uso SAX para validador, muito bom, informa linha com erro, etc
o erro SAXParseException, há um método com o getLineNumber(), ajuda bastante
Boa tarde,
Estou implementando uma solução, via Web Service, para emissão de NF-e.
O problema é que a minha empresa atua em vários estados, sendo necessário emitir notas fiscais para diferentes estados.
As minhas dúvidas são:
- É necessário baixar a Cadeia de Certificados de cada estado?
- Em caso positivo, eu necessito gerar um .keystore para cada estado?
Obrigado
Fernando Hirata Alexandre
Boa tarde,Estou implementando uma solução, via Web Service, para emissão de NF-e.
O problema é que a minha empresa atua em vários estados, sendo necessário emitir notas fiscais para diferentes estados.
As minhas dúvidas são:
- É necessário baixar a Cadeia de Certificados de cada estado?
- Em caso positivo, eu necessito gerar um .keystore para cada estado?
Eu uso um jks somente com todas as cadeias abaixo da ICP.
Caso queira, posso lhe ceder o meu cert.jks.
Informe um email para envio em pvt.
Alencar
Pessoal, alguém utiliza a consulta de cadastro da SEFAZ RS?
Para mim, a resposta vem como abaixo:
RSb20100819100210
111
Consulta cadastro com uma ocorrencia
RS
999999999
2010-11-03T00:05:06
43
999999999
999999999
RS
1
NOME DO CLIENTE
Pelo manual 4.0.1-NT2009.006, teriam outras informações, mas parece serem opcionais…
Alguma dica a respeito? Alguma outra forma de consulta de cadastro completo?
Alencar
Boa noite povo.
Seguinte comecei a implementar e tals o meu sistema de NF-e, e para começar estou tentando o status.
A parte de validar a conexão com certificado ta beleza.
O problema é o JAXB com o JAX-WS que tao batendo cabeça.
Olha o codigo main que to usando para chamada:
.... aqui seto os certificados... FUNCIONA normalNfeCabecMsg cabecMsg = new ObjectFactory().createNfeCabecMsg();
cabecMsg.setCUF("35");
cabecMsg.setVersaoDados("2.00");
TConsStatServ dadosMsg = new ObjectFactory().createTConsStatServ();
dadosMsg.setCUF("35");
dadosMsg.setTpAmb("2");
dadosMsg.setVersao("2.00");
dadosMsg.setXServ("STATUS");
NfeDadosMsg dadosMsgE = new ObjectFactory().createNfeDadosMsg();
dadosMsgE.getContent().add(dadosMsg);
NfeStatusServico2Soap12 s = service.getNfeStatusServico2Soap12();
NfeStatusServicoNF2Result r = s.nfeStatusServicoNF2(dadosMsgE, new Holder<NfeCabecMsg>(cabecMsg));
esse é o SOAP que ele gera para enviar.
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2" xmlns:ns2="http://www.portalfiscal.inf.br/nfe">
<cUF>35</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</S:Header>
<S:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2" xmlns:ns2="http://www.portalfiscal.inf.br/nfe">
<ns2:consStatServ versao="2.00">
<ns2:tpAmb>2</ns2:tpAmb>
<ns2:cUF>35</ns2:cUF>
<ns2:xServ>STATUS</ns2:xServ>
</ns2:consStatServ>
</nfeDadosMsg>
</S:Body>
</S:Envelope>
SOAP de resposta.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<cUF>35</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soap:Header>
<soap:Body>
<nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_006h</verAplic>
<cStat>404</cStat>
<xMotivo>Rejeição: Uso de prefixo de namespace não permitido</xMotivo>
<cUF>35</cUF>
<dhRecbto>2010-11-04T23:12:56</dhRecbto>
</retConsStatServ>
</nfeStatusServicoNF2Result>
</soap:Body>
</soap:Envelope>
sim eu sei que o que esta errado é ter dois namespace na mesma TAG, mas ai é que esta minha pergunta
como configuro o JAXB ou o JAX-WS para ele passar o namespace xmlns:ns2="http://www.portalfiscal.inf.br/nfe" para
a tag consStatServ, pois pelo que andei vendo pelo forum é a única diferença que encontrei com o xml do pessoal que conseguiu.
PS.: Codigos extras que utilizei
NfeCabecMsg
package br.inf.portalfiscal.nfe.wsdl.nfestatusservico2;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
/**
* <p>Java class for nfeCabecMsg complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="nfeCabecMsg">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="cUF" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="versaoDados" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* </sequence>
* <anyAttribute/>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "nfeCabecMsg", propOrder = {
"cuf",
"versaoDados"
})
@XmlRootElement(name = "nfeCabecMsg")
public class NfeCabecMsg {
@XmlElement(name = "cUF")
protected String cuf;
protected String versaoDados;
@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
// @XmlAttribute
// private String xmlnss = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2";
/**
* Gets the value of the cuf property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCUF() {
return cuf;
}
/**
* Sets the value of the cuf property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCUF(String value) {
this.cuf = value;
}
/**
* Gets the value of the versaoDados property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getVersaoDados() {
return versaoDados;
}
/**
* Sets the value of the versaoDados property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setVersaoDados(String value) {
this.versaoDados = value;
}
/**
* Gets a map that contains attributes that aren't bound to any typed property on this class.
*
* <p>
* the map is keyed by the name of the attribute and
* the value is the string value of the attribute.
*
* the map returned by this method is live, and you can add new attribute
* by updating the map directly. Because of this design, there's no setter.
*
*
* @return
* always non-null
*/
public Map<QName, String> getOtherAttributes() {
return otherAttributes;
}
}
package br.inf.portalfiscal.nfe.wsdl.nfestatusservico2;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlMixed;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <any/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
@XmlRootElement(name = "nfeDadosMsg")
public class NfeDadosMsg {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;
// @XmlAttribute
// private String xmlnss = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2";
/**
* Gets the value of the content property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the content property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getContent().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Object }
* {@link String }
*
*
*/
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
}
TConsStatServ :
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2010.11.04 at 09:16:13 AM BRST
//
package br.inf.portalfiscal.nfe;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* Tipo Pedido de Consulta do Status do Servico
*
* <p>Java class for TConsStatServ complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="TConsStatServ">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="tpAmb" type="{http://www.portalfiscal.inf.br/nfe}TAmb"/>
* <element name="cUF" type="{http://www.portalfiscal.inf.br/nfe}TCodUfIBGE"/>
* <element name="xServ" type="{http://www.portalfiscal.inf.br/nfe}TServ"/>
* </sequence>
* <attribute name="versao" use="required" type="{http://www.portalfiscal.inf.br/nfe}TVerConsStatServ" />
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlRootElement(name = "consStatServ")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TConsStatServ", propOrder = {
"tpAmb",
"cuf",
"xServ"
})
public class TConsStatServ {
@XmlElement(required = true)
protected String tpAmb;
@XmlElement(name = "cUF", required = true)
protected String cuf;
@XmlElement(required = true)
protected String xServ;
@XmlAttribute(required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
protected String versao;
// @XmlAttribute(required=true)
// protected String xmlnss = "http://www.portalfiscal.inf.br/nfe";
/**
* Gets the value of the tpAmb property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTpAmb() {
return tpAmb;
}
/**
* Sets the value of the tpAmb property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTpAmb(String value) {
this.tpAmb = value;
}
/**
* Gets the value of the cuf property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCUF() {
return cuf;
}
/**
* Sets the value of the cuf property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCUF(String value) {
this.cuf = value;
}
/**
* Gets the value of the xServ property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getXServ() {
return xServ;
}
/**
* Sets the value of the xServ property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setXServ(String value) {
this.xServ = value;
}
/**
* Gets the value of the versao property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getVersao() {
return versao;
}
/**
* Sets the value of the versao property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setVersao(String value) {
this.versao = value;
}
}
e tem dois package-info.java
o do direito nfe:/**
* Servi�o destinado � consulta do status do servi�o prestado pelo Portal da Secretaria de Fazenda Estadual.
*
*/
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.portalfiscal.inf.br/nfe", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package br.inf.portalfiscal.nfe;
e do direito nfe.wsdl.nfestatusservico2:
/**
* Servi�o destinado � consulta do status do servi�o prestado pelo Portal da Secretaria de Fazenda Estadual.
*
*/
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package br.inf.portalfiscal.nfe.wsdl.nfestatusservico2;
RA problema resolvido
TENTANDO___________________________________________
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<cUF>35</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</S:Header>
<S:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<cUF>35</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</nfeDadosMsg>
</S:Body>
</S:Envelope>___________________________________________________
RETORNANDO__________________________________________
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<cUF>35</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soap:Header>
<soap:Body>
<nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_006h</verAplic>
<cStat>107</cStat>
<xMotivo>Serviço em Operação</xMotivo>
<cUF>35</cUF>
<dhRecbto>2010-11-05T09:46:57</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
</nfeStatusServicoNF2Result>
</soap:Body>
</soap:Envelope>___________________________________________________
Serviço em Operação
rafaek, como vc resolveu esse problema do JAXB?
fiz um Handler, mais ou menos assim
package teste;
import java.util.Set;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class LogHandler implements SOAPHandler<SOAPMessageContext> {
// Initialize OtputStream (System.out) etc. ...
public boolean handleMessage(SOAPMessageContext c) {
SOAPMessage msg = c.getMessage();
boolean request = ((Boolean) c.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
try {
if (request) { // This is a request message.
// Write the message to the output stream
Element n1 = (Element)msg.getSOAPHeader().getElementsByTagName("nfeCabecMsg").item(0);
n1.removeAttribute("xmlns:ns2");
Element n = (Element)msg.getSOAPBody().getElementsByTagName("nfeDadosMsg").item(0);
n.removeAttribute("xmlns:ns2");
if ( ((Element)msg.getSOAPBody()).getElementsByTagName("consultaCadastro2").getLength() > 0) {
Element n3 = (Element)msg.getSOAPBody().getElementsByTagName("consultaCadastro2").item(0);
n3.removeAttribute("xmlns:ns2");
n = n3;
}
NodeList nl = n.getElementsByTagName("*");
for(int i = 0; i < nl.getLength(); i++) {
((Element)nl.item(i)).setPrefix("");
}
System.out.println("TENTANDO___________________________________________");
msg.writeTo(System.out);
} else { // This is the response message
System.out.println("RETORNANDO__________________________________________");
msg.writeTo(System.out);
}
System.out.println("___________________________________________________");
} catch (Exception e) {
}
return true;
}
public boolean handleFault(SOAPMessageContext c) {
SOAPMessage msg = c.getMessage();
try {
System.out.println("ERRO___________________________________________");
msg.writeTo(System.out);
System.out.println("___________________________________________________");
} catch (Exception e) {
}
return true;
}
public void close(MessageContext c) {
}
public Set getHeaders() {
// Not required for logging
return null;
}
}
e depois antes de vc usar o webservice vc tem registrar ele, assim:
BindingProvider bp = (BindingProvider) s;
//bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "");
Binding binding = bp.getBinding();
List handlerList = binding.getHandlerChain();
if (handlerList == null) {
handlerList = new ArrayList();
}
LogHandler loggingHandler = new LogHandler();
handlerList.add(loggingHandler);
binding.setHandlerChain(handlerList);
onde variavel s é o seu port
isso ta um lixo eu sei, mas é so para teste
amigo…
tem como vc dar mais algumas dicas de como usar varios certificados num mesmo sistema?
achei pouca coisa sobre SSLClientAxisEngineConfig, talves eu não esteja procurando certo…
achei este link http://wiki.apache.org/ws/FrontPage/Axis/DynamicSSLConfig mas não tive muito sucesso ainda…
abraco
- Nosso sistema é WEB e trabalha com um grupo de empresas logo precisamos configuar o certificado do cliente de forma dinamica não da pra usar o System.properies.
na versão 1 do XML eu utilizava uma classe chamada: org.apache.axis.client.SSLClientAxisEngineConfigmais ou menos assim:
axisConfig.setKeyStoreType("PKCS12"); axisConfig.setKeyStore("****"); axisConfig.setKeyStorePassword("***");
amigo…
tem como vc dar mais algumas dicas de como usar varios certificados num mesmo sistema?
achei pouca coisa sobre SSLClientAxisEngineConfig, talves eu não esteja procurando certo…
achei este link http://wiki.apache.org/ws/FrontPage/Axis/DynamicSSLConfig mas não tive muito sucesso ainda…abraco
Para NFe da versão 1 é fácil basta usar a classe SSLClientAxisEngineConfig, que é mais ou menos o código desse link q vc passou
Mas para versão 2.0 utilizando Axis2 essa classe não funciona e eu ainda não resolvi plenamente o problema.
Assim que eu resolver eu posto aqui.
Na pior das hipoteses eu vou trocar o System.properties por uma classe minha que obtenha os valores da Session (ou seja Gambiarra)
Também andei testando criar uma Factory de SSLContext e setar na classe Stub essa factory na propriedade HTTPConstants.CUSTOM_PROTOCOL_HANDLER e tambem parece ter funcionado mas ainda não terminei os testes, estou em outro projeto agora vou voltar para a NFe semana que vem.
Valeu
só mais uma pergunta …
vc teve que criar toda a parte de Locator…stub, etc na mão?
ou vc adaptou as classes geradas pelo Axis1 para usar o SSLClientAxisEngineConfig?
tipo… naquele link que eu passei mostra para criar suas próprias classes…
URL soapURL = new URL("https://myserver.com/myapp/services/mywebserviceport");
15 MyWebServiceServiceLocator locator = new MyServiceLocator(axisConfig);
16 MyWebServicePort port = locator.getMyWebServicePort(soapURL);
17 MyWebServiceBindingStub stub = (MyWebServiceBindingStub) port;
18 // make a call to the webservice (assume no params for this operation)
19 MyResultType result = stub.myoperation1();
só mais uma pergunta …
vc teve que criar toda a parte de Locator…stub, etc na mão?
ou vc adaptou as classes geradas pelo Axis1 para usar o SSLClientAxisEngineConfig?
tipo… naquele link que eu passei mostra para criar suas próprias classes…
URL soapURL = new URL("https://myserver.com/myapp/services/mywebserviceport"); 15 MyWebServiceServiceLocator locator = new MyServiceLocator(axisConfig); 16 MyWebServicePort port = locator.getMyWebServicePort(soapURL); 17 MyWebServiceBindingStub stub = (MyWebServiceBindingStub) port; 18 // make a call to the webservice (assume no params for this operation) 19 MyResultType result = stub.myoperation1();
Eu criei as classes através da ferramenta de geração do Eclipse a partir dos arquivos WSDL.
depois eu faço:
SSLClientAxisEngineConfig axisConfig = new SSLClientAxisEngineConfig();
axisConfig.setKeyStoreType(...
axisConfig.setKeyStore(...
...
e
new NfeRetRecepcaoLocator(axisConfig).getNfeRetRecepcaoSoap().nfeRetRecepcao(...
Mas não consegui fazer isso com o Axis 2 da NFe 2.0 se alguem conseguiu por favor me diga como é.
cara só para confirmar… sua aplicação roda em cima do Tomcat?
é uma aplicação Web?
cara só para confirmar… sua aplicação roda em cima do Tomcat?
é uma aplicação Web?
é WEB roda no Glassfish 3
só mais uma pergunta …
vc teve que criar toda a parte de Locator…stub, etc na mão?
ou vc adaptou as classes geradas pelo Axis1 para usar o SSLClientAxisEngineConfig?
tipo… naquele link que eu passei mostra para criar suas próprias classes…
URL soapURL = new URL("https://myserver.com/myapp/services/mywebserviceport"); 15 MyWebServiceServiceLocator locator = new MyServiceLocator(axisConfig); 16 MyWebServicePort port = locator.getMyWebServicePort(soapURL); 17 MyWebServiceBindingStub stub = (MyWebServiceBindingStub) port; 18 // make a call to the webservice (assume no params for this operation) 19 MyResultType result = stub.myoperation1();Eu criei as classes através da ferramenta de geração do Eclipse a partir dos arquivos WSDL.
depois eu faço:
SSLClientAxisEngineConfig axisConfig = new SSLClientAxisEngineConfig(); axisConfig.setKeyStoreType(... axisConfig.setKeyStore(... ... e new NfeRetRecepcaoLocator(axisConfig).getNfeRetRecepcaoSoap().nfeRetRecepcao(...Mas não consegui fazer isso com o Axis 2 da NFe 2.0 se alguem conseguiu por favor me diga como é.
Usa o JAX-WS para os webservice e o JAXB para criar as entidades é mamão com açucar, hoje consegui enviar, vizualizar, cancelar, em fim todas as operações.
WebService 2.0 da receita de SP.
Se precisa de dicas, só pedir.
só mais uma pergunta …
vc teve que criar toda a parte de Locator…stub, etc na mão?
ou vc adaptou as classes geradas pelo Axis1 para usar o SSLClientAxisEngineConfig?
tipo… naquele link que eu passei mostra para criar suas próprias classes…
URL soapURL = new URL("https://myserver.com/myapp/services/mywebserviceport"); 15 MyWebServiceServiceLocator locator = new MyServiceLocator(axisConfig); 16 MyWebServicePort port = locator.getMyWebServicePort(soapURL); 17 MyWebServiceBindingStub stub = (MyWebServiceBindingStub) port; 18 // make a call to the webservice (assume no params for this operation) 19 MyResultType result = stub.myoperation1();Eu criei as classes através da ferramenta de geração do Eclipse a partir dos arquivos WSDL.
depois eu faço:
SSLClientAxisEngineConfig axisConfig = new SSLClientAxisEngineConfig(); axisConfig.setKeyStoreType(... axisConfig.setKeyStore(... ... e new NfeRetRecepcaoLocator(axisConfig).getNfeRetRecepcaoSoap().nfeRetRecepcao(...Mas não consegui fazer isso com o Axis 2 da NFe 2.0 se alguem conseguiu por favor me diga como é.
Usa o JAX-WS para os webservice e o JAXB para criar as entidades é mamão com açucar, hoje consegui enviar, vizualizar, cancelar, em fim todas as operações.
WebService 2.0 da receita de SP.
Se precisa de dicas, só pedir.
JAXB eu ja to usando… me passa o caminho para o JAX-WS pq eu estou usando Axis
Alguém poderia me ajudar.
Estou tentando chamar o retRecepcao, mas estou recebendo um erro de Versão de Dados do cabeçalho errada.
O XML de envio está assim:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 1.10 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2 XXXXXXXXXXXXXXXXXXEstou sempre recebendo este retorno:
<?xml version="1.0" encoding="UTF-8"?> 2 SP_NFE_PL_005e XXXXXXXXXXXXXXXXXX 239 Rejeição: Cabeçalho - Versão do arquivo XML não suportada 35Se eu altero o campo versao da tag para qualquer outro valor, retorna o seguinte erro:
<?xml version="1.0" encoding="UTF-8"?> 2 SP_NFE_PL_005e 242 Rejeição: Cabeçalho - Falha no Schema XML 35Estou acessando o site do homologação de SP (https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nferetrecepcao.asmx)
Alguém pode me ajudar?
Obrigado,
Fernando Hirata Alexandre
Eu uso um jks somente com todas as cadeias abaixo da ICP.
Caso queira, posso lhe ceder o meu cert.jks.
Informe um email para envio em pvt.Alencar
Alencar,
você pode me tirar uma dúvida quanto a esse problema dos certificados por estado.
é o seguinte eu baixei o certificado publico de São Paulo e gerei o jks a partir do certificado que aparece como: AC Secretaria da Receita Federal do Brasil
quando listo meu JKS aparece:
Owner: CN=Autoridade Certificadora Raiz Brasileira v1, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR
Issuer: CN=Autoridade Certificadora Raiz Brasileira v1, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR
Serial number: 1
Valid from: Tue Jul 29 16:17:10 GMT-03:00 2008 until: Thu Jul 29 16:17:10 GMT-03:00 2021
Certificate fingerprints:
MD5: 93:F1:AD:34:0B:2B:E7:A8:54:60:E2:73:8C:A4:94:31
SHA1: 70:5D:2B:45:65:C7:04:7A:54:06:94:A7:9A:F7:AB:B8:42:BD:C1:61
Signature algorithm name: SHA1withRSA
Version: 3
está funcionando para todos os Estados e ali onde diz: “until: Thu Jul 29 16:17:10 GMT-03:00 2021” significa que eu posso ficar despreocupado com meu JKS até 2021 :shock: ? Ou pode ocorrer de o SEFAZ substituir esse certificado e eu precisar gerar novamente?
Obrigado…
só mais uma pergunta …
vc teve que criar toda a parte de Locator…stub, etc na mão?
ou vc adaptou as classes geradas pelo Axis1 para usar o SSLClientAxisEngineConfig?
tipo… naquele link que eu passei mostra para criar suas próprias classes…
URL soapURL = new URL("https://myserver.com/myapp/services/mywebserviceport"); 15 MyWebServiceServiceLocator locator = new MyServiceLocator(axisConfig); 16 MyWebServicePort port = locator.getMyWebServicePort(soapURL); 17 MyWebServiceBindingStub stub = (MyWebServiceBindingStub) port; 18 // make a call to the webservice (assume no params for this operation) 19 MyResultType result = stub.myoperation1();Eu criei as classes através da ferramenta de geração do Eclipse a partir dos arquivos WSDL.
depois eu faço:
SSLClientAxisEngineConfig axisConfig = new SSLClientAxisEngineConfig(); axisConfig.setKeyStoreType(... axisConfig.setKeyStore(... ... e new NfeRetRecepcaoLocator(axisConfig).getNfeRetRecepcaoSoap().nfeRetRecepcao(...Mas não consegui fazer isso com o Axis 2 da NFe 2.0 se alguem conseguiu por favor me diga como é.
Usa o JAX-WS para os webservice e o JAXB para criar as entidades é mamão com açucar, hoje consegui enviar, vizualizar, cancelar, em fim todas as operações.
WebService 2.0 da receita de SP.
Se precisa de dicas, só pedir.
JAXB eu ja to usando… me passa o caminho para o JAX-WS pq eu estou usando Axis
É simples, basicamente baixe os WSDL do site do SEFAZ do seu estado, no meu caso SP.
Com eles em mãos, execute wsimport -Xnocompile -keep -XaddiotionalHeaders -extension <SEU_WSDL>.wsdl
ele ira criar todas as classes necessárias para você usar o webservice, crie as entidades com o JAX-B,
abra o ObjectFactory das ENTIDADES e copie os métodos para o ObjectFactory do WEBSERVICE.
Após isto é basicamente instanciar o service e utilizar passando o NfeCabecMsg e o NfeDadosMsg.
está funcionando para todos os Estados e ali onde diz: “until: Thu Jul 29 16:17:10 GMT-03:00 2021” significa que eu posso ficar despreocupado com meu JKS até 2021 :shock: ? Ou pode ocorrer de o SEFAZ substituir esse certificado e eu precisar gerar novamente?Obrigado…
é bem isso mesmo… se a Sefaz não atualizar, vc não vai precisar gerar até 2021…
q bem na verdade é uma boa neh… esse ano, não lembro se foi a SefazRS ou PR que alterou o certificado e não tinha aviso no site…
foi uma correria… haha
Prezados,
Anteriormente alguns amigos me ajudaram com algumas dicas a respeito de validar o xml de acordo com o xsd.Resolvi um problema mas apareceu outro do qual já estou alguns dias.
O problema é que aparece as seguintes erros:
Analisando...
Erro normal: src-resolve: Cannot resolve the name 'TCodUfIBGE' to a(n) 'type definition' component.
Linha: 32
Coluna: 51
Erro normal: src-resolve: Cannot resolve the name 'TString' to a(n) 'type definition' component.
Linha: 53
Coluna: 43
Eu sei que este erro não é do xml, parece que ele não esta lendo o xsd.Alguem já passou por isso e sabe como proceder?
Desde já agradeço
Alguem mais esta com problemas para acessar o ambiente de homologação de SP hoje ( 11/11/2010)?
…
Uma dúvida,
Estou tentando assinar a NFe no ambiente de homologação de SP e está retornando Assinatura do Certificado inválida.
Segue os dados do código:
Geração do arquivo .jks (O primeiro .cer foi o arquivo gerado a partir do .pfx)@echo off
SET KS_JAVA_PATH=D:\JAVA\SDK\jdk1.6.0_12\bin
SET KS_FILENAME=D:/Certificados/nfeelucid.jks
SET KS_CERTPATH=D:/Certificados
SET KS_PASS=minha_senha
%KS_JAVA_PATH%\keytool -genkey -keyalg RSA -alias nfe -keystore %KS_FILENAME% -keypass %KS_PASS% -storepass %KS_PASS% -dname "cn=Elucid Solutions SA, ou=Elucid Solutions SA, o=Elucid Solutions SA, l=Sao Paulo, S=SP, c=BR"
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c01 -file %KS_CERTPATH%/nfeelucid.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c02 -file %KS_CERTPATH%/AC_Certisign_Multipla_G3.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c03 -file %KS_CERTPATH%/AC_Certisign_G3.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c04 -file %KS_CERTPATH%/Autoridade_Certificadora_Raiz_Brasileira_v1.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c05 -file %KS_CERTPATH%/homologacao_nfe_fazenda_sp_gov_br.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c06 -file %KS_CERTPATH%/AC_Imprensa_Oficial_SP_RFB_G2.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
%KS_JAVA_PATH%\keytool -import -noprompt -trustcacerts -alias c07 -file %KS_CERTPATH%/AC_Secretaria_da_Receita_Federal_do_Brasil.cer -keypass %KS_PASS% -keystore %KS_FILENAME% -storepass %KS_PASS%
public void assinarDocumento(String chNFe) throws Exception{
File arqNotSigned = new File("D:\\NFe\\" + chNFe + "-nfe.xml");
File arqSigned = new File("D:\\NFe\\" + chNFe + "-nfe-sign.xml");
File arqJks = new File("D:\\Certificados\\nfeelucid.jks");
String alias = "nfe";
char[] senha = "minha_senha".toCharArray();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = dbf.newDocumentBuilder().parse(new FileInputStream(arqNotSigned));
doc.setXmlStandalone(false);
XMLSignatureFactory sig = XMLSignatureFactory.getInstance("DOM", new XMLDSigRI());
ArrayList<Transform> transformList = new ArrayList<Transform>();
Transform enveloped = sig.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null);
Transform c14n = sig.newTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315",
(TransformParameterSpec) null);
transformList.add(enveloped);
transformList.add(c14n);
NodeList elements = doc.getElementsByTagName("infNFe");
org.w3c.dom.Element el = (org.w3c.dom.Element) elements.item(0);
String id = el.getAttribute("Id");
Reference r = sig.newReference("#".concat(id),
sig.newDigestMethod(DigestMethod.SHA1, null),
transformList,
null,
null);
CanonicalizationMethod cm = sig.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,
(C14NMethodParameterSpec) null);
SignatureMethod sm = sig.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
SignedInfo si = sig.newSignedInfo(cm, sm, Collections.singletonList(r));
InputStream certificado = new FileInputStream(arqJks);
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(certificado, senha);
X509Certificate cert = (X509Certificate) ks.getCertificate(alias);
cert.checkValidity();
KeyInfoFactory kif = sig.getKeyInfoFactory();
List x509Content = new ArrayList();
x509Content.add(cert);
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
Key chavePrivada = (Key) ks.getKey(alias, senha);
PrivateKey pk = (PrivateKey) chavePrivada;
DOMSignContext dsc = new DOMSignContext(pk, doc.getDocumentElement());
XMLSignature signature = sig.newXMLSignature(si, ki);
signature.sign(dsc);
OutputStream os = new FileOutputStream(arqSigned);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
trans.transform(new DOMSource(doc), new StreamResult(os));
os.flush();
os.close();
}
<?xml version="1.0" encoding="UTF-8"?><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe35101156131030000191550010000000041000003881" versao="2.00"><ide><cUF>35</cUF><cNF>00000388</cNF><natOp>VENDA DE PRODUCAO PROPRIA</natOp><indPag>1</indPag><mod>55</mod><serie>1</serie><nNF>4</nNF><dEmi>2010-11-12</dEmi><dSaiEnt>2010-11-12</dSaiEnt><hSaiEnt>00:00:00</hSaiEnt><tpNF>1</tpNF><cMunFG>3550308</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>1</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><procEmi>3</procEmi><verProc>2.0.4</verProc></ide><emit><CNPJ>56131030000191</CNPJ><xNome>ELUCID SOLUTIONS S.A.</xNome><xFant>ELUCID</xFant><enderEmit><xLgr>AVENIDA PAULISTA 12</xLgr><nro>36</nro><xCpl>4o ANDAR CONJUNTO 42/PARTE</xCpl><xBairro>CERQUEIRA CESAR</xBairro><cMun>3550308</cMun><xMun>Sao Paulo</xMun><UF>SP</UF><CEP>01311936</CEP><cPais>1058</cPais><xPais>BRASIL</xPais></enderEmit><IE>116121382113</IE><IEST>546014764113</IEST><CRT>3</CRT></emit><dest><CNPJ>48131296000106</CNPJ><xNome>CONSUMIDOR 180</xNome><enderDest><xLgr>RUA ITAPOLIS</xLgr><nro>85</nro><xCpl>10o ANDAR</xCpl><xBairro>VILA IBAR</xBairro><cMun>3539806</cMun><xMun>Poa</xMun><UF>SP</UF><CEP>08559450</CEP><cPais>1058</cPais><xPais>BRASIL</xPais></enderDest><IE>546014764113</IE><email>[email removido]</email></dest><det nItem="1"><prod><cProd>ENERLEVE</cProd><cEAN>00023222</cEAN><xProd>ENERGIA ELETRICA</xProd><NCM>11111111</NCM><CFOP>5251</CFOP><uCom>MWh</uCom><qCom>121.0000</qCom><vUnCom>100.[telefone removido]</vUnCom><vProd>12100.00</vProd><cEANTrib>00023222</cEANTrib><uTrib>MWh</uTrib><qTrib>121.0000</qTrib><vUnTrib>100.[telefone removido]</vUnTrib><indTot>1</indTot></prod><imposto><ICMS><ICMS10><orig>0</orig><CST>10</CST><modBC>1</modBC><vBC>12100.00</vBC><pICMS>18.00</pICMS><vICMS>2178.00</vICMS><modBCST>1</modBCST><vBCST>12100.00</vBCST><pICMSST>18.00</pICMSST><vICMSST>2178.00</vICMSST></ICMS10></ICMS><PIS><PISAliq><CST>01</CST><vBC>12100.00</vBC><pPIS>2.00</pPIS><vPIS>242.00</vPIS></PISAliq></PIS><PISST><vBC>0.01</vBC><pPIS>0.01</pPIS><vPIS>0.01</vPIS></PISST><COFINS><COFINSAliq><CST>01</CST><vBC>0.01</vBC><pCOFINS>0.01</pCOFINS><vCOFINS>0.01</vCOFINS></COFINSAliq></COFINS></imposto><infAdProd>Servicos de transmissao referente ao uso da Rede Basica, relativo ao mes de Novembro/2010 , conforme Resolucao Homologatoria Anee l 1021/2010</infAdProd></det><total><ICMSTot><vBC>12100.00</vBC><vICMS>2178.00</vICMS><vBCST>12100.00</vBCST><vST>2178.00</vST><vProd>12100.00</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>242.00</vPIS><vCOFINS>0.01</vCOFINS><vOutro>0.01</vOutro><vNF>14278.01</vNF></ICMSTot></total><transp><modFrete>9</modFrete></transp></infNFe></NFe>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35101156131030000191550010000000041000003881"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>ZZqu2dVfpG+6XkbsEZLxJ0yOvp0=</DigestValue></Reference></SignedInfo><SignatureValue>ULTk8lfIeCI/1PPlN9yFg0stY+iPrYHQw5mhJBhzWxsbPxgcpsNOHuJW1xma2rVFIHNOxAMtkgqa
V9IHYX0He/Wa3jcNGCRDEW6lj3fNsfhJI3IuoGQwIT31Xun6mu1zPIHQy/Wi4Vvt5mlAgrRbfv0O
U1KP4S2VTvmeuV3wBMY=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIICiTCCAfKgAwIBAgIETOQ+CDANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCQlIxCzAJBgNV
BAgTAlNQMRIwEAYDVQQHEwlTYW8gUGF1bG8xHDAaBgNVBAoTE0VsdWNpZCBTb2x1dGlvbnMgU0Ex
HDAaBgNVBAsTE0VsdWNpZCBTb2x1dGlvbnMgU0ExHDAaBgNVBAMTE0VsdWNpZCBTb2x1dGlvbnMg
U0EwHhcNMTAxMTE3MjA0MTQ0WhcNMTEwMjE1MjA0MTQ0WjCBiDELMAkGA1UEBhMCQlIxCzAJBgNV
BAgTAlNQMRIwEAYDVQQHEwlTYW8gUGF1bG8xHDAaBgNVBAoTE0VsdWNpZCBTb2x1dGlvbnMgU0Ex
HDAaBgNVBAsTE0VsdWNpZCBTb2x1dGlvbnMgU0ExHDAaBgNVBAMTE0VsdWNpZCBTb2x1dGlvbnMg
U0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ3m07Gy50CN2Yo+4L4W5SRuMVgsUL54i4/L
D6TM6MX99EhOM7e1Im5WmDtmzxHnDlQaQf8B7bfXQ42bfPfmsp96bwEyrpMISdguaEAp90VboQGP
VGVIw7xrsHUD0ARlP/TNj/k0JUHXgZgxTaeCXLfH7K0ERsZ3eWwyzMymQt3TAgMBAAEwDQYJKoZI
hvcNAQEFBQADgYEALSHPNULL9rxKHwA6Eb0E2hdpWJo80y4jFhcyScYagG3ajTBNw0Itn0hXyNTU
YXvFdioRXwHL5PHDJGEVTeqa2J42tAVauNGjy4qCSbgho39gTd26zGOy0ilnI+lBf/22qnAurhjV
JKGjzr3hbXpyvNcmO+WaPTxacAm9PF/OO3Y=</X509Certificate></X509Data></KeyInfo></Signature>
Estou pegando o arquivo com a Signature e importando pelo Emissor de NFe de SP. Ele valida o arquivo XML sem apresentar nenhum erro e transmite normalmente. O problema é que no retorno volta a mensagem de rejeição, Assinatura Inválida.
O pior de tudo não é isso.
Pegando o mesmo XML da NFe, abrindo ele para edição no Emissor de NFe, validando sem mexer em nada e gerando a assinatura ele é autenticado no site de homologação de SP.
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35101156131030000191550010000000041000003881"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>ZZqu2dVfpG+6XkbsEZLxJ0yOvp0=</DigestValue></Reference></SignedInfo><SignatureValue>oIq1WS4O3Q+QEXEDhvLI4Duv/qCnWVcedl2E0HA/3r9GV1jqqY67jaxabq1oIFup6bMFh/PjyX7D
w2QK7xlg2Ygj7j1ISoz9+K2bd5o82kcwhuB8XOtJE7PtGo8qV7RQhrIv52GbjlRNfX9SfsL51z4X
/2Mgy4iB4AspyewDY8o=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIGxjCCBa6gAwIBAgIQOSO4guhcRs3aT2uaosF/pDANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQG
EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRv
cmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aXNpZ24gTXVsdGlwbGEgRzMwHhcNMTAx
MTA1MDAwMDAwWhcNMTExMTA0MjM1OTU5WjCCAQYxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1At
QnJhc2lsMRUwEwYDVQQLFAxJRCAtIDEyMzUzMDYxODA2BgNVBAsUL0F1dGVudGljYWRvIHBvciBD
ZXJ0aXNpZ24gQ2VydGlmaWNhZG9yYSBEaWdpdGFsMRswGQYDVQQLFBJBc3NpbmF0dXJhIFRpcG8g
QTExFDASBgNVBAsUCyhFTSBCUkFOQ08pMRQwEgYDVQQLFAsoRU0gQlJBTkNPKTEcMBoGA1UEAxMT
RWx1Y2lkIFNvbHV0aW9ucyBTQTEqMCgGCSqGSIb3DQEJARYbcmFmYWVsLnBvbnRlc0BlbHVjaWQu
Y29tLmJyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7VcywSexmNuamExxxla1T7LjWmXah
yV7sGZKOIOTk4xYLcIbJK/QlvoLcgIXf4QVqJodR9HNQsVzQjOqWSr6yGVDZp0kuvmfpQefPyzkn
4SyobKo9aTH9nEI80G8o4kcAAK8smhQEowvwnX1CuPaTxf0LLldEkG7CEZU++oZNOwIDAQABo4ID
QjCCAz4wgb0GA1UdEQSBtTCBsqA9BgVgTAEDBKA0BDIyMTAzMTk3NjE4MzU0MTY2ODMwMDAwMDAw
MDAwMDAwMDAwMDAwMjU1NzA5NDhTU1BTUKAgBgVgTAEDAqAXBBVSYWZhZWwgUG9udGVzIFBlcmVp
cmGgGQYFYEwBAwOgEAQONTYxMzEwMzAwMDAxOTGgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRty
YWZhZWwucG9udGVzQGVsdWNpZC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBSEsEIzNKNC
JaUolz6D63fw6E/CVDAOBgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAQswQDA+Bggr
BgEFBQcCARYyaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9k
cGMwggElBgNVHR8EggEcMIIBGDBcoFqgWIZWaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv
bS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25NdWx0aXBsYUczL0xhdGVzdENSTC5jcmww
W6BZoFeGVWh0dHA6Ly9pY3AtYnJhc2lsLm91dHJhbGNyLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Iv
QUNDZXJ0aXNpZ25NdWx0aXBsYUczL0xhdGVzdENSTC5jcmwwW6BZoFeGVWh0dHA6Ly9yZXBvc2l0
b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9DZXJ0aXNpZ24vQUNDZXJ0aXNpZ25NdWx0aXBsYUcz
L0xhdGVzdENSTC5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMIGgBggrBgEFBQcB
AQSBkzCBkDAoBggrBgEFBQcwAYYcaHR0cDovL29jc3AuY2VydGlzaWduLmNvbS5icjBkBggrBgEF
BQcwAoZYaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9jZXJ0
aWZpY2Fkb3MvQUNfQ2VydGlzaWduX011bHRpcGxhX0czLnA3YzANBgkqhkiG9w0BAQUFAAOCAQEA
KknC+yR6VppYIYzLFB1z1S2YHgx/+LvFI6fmBGZd6sJ3YeB1oY6pHBigIIVNp5TNgTgjAiTJ19TD
vAKTyZAA2L9Dkd3JdafowIeLDdJ+aYhw603N9jB+enG8Jz37f9uHbH4GNhnOMefQQhie8wo6vTv7
EBU//mMeMZwUi8FV0oW3ftCDs+NJtrKZDxzqZgd7uJKZ0Bre+SRpBaFEGrvnEIGXFC6ON7c9Skgf
jjd3tv8DhzydxoRoqgQ+jP+BsZ2gbSJFSLJ/Q0XiMp73M3ydyY44sRZbSAuW31KD3fh9C+udZnIB
Q8IM8kXR/PSfYlU7KG9zhaX3dXgyQQsp+K6g5g==</X509Certificate></X509Data></KeyInfo></Signature></NFe>
Ela é bem maior que a gerada pelo meu método.
Alguém sabe me dizer o que estou fazendo de errado?
Atenciosamente,
Fernando Hirata Alexandre
Prezados,Anteriormente alguns amigos me ajudaram com algumas dicas a respeito de validar o xml de acordo com o xsd.Resolvi um problema mas apareceu outro do qual já estou alguns dias.
O problema é que aparece as seguintes erros:
Analisando... Erro normal: src-resolve: Cannot resolve the name 'TCodUfIBGE' to a(n) 'type definition' component. Linha: 32 Coluna: 51 Erro normal: src-resolve: Cannot resolve the name 'TString' to a(n) 'type definition' component. Linha: 53 Coluna: 43Eu sei que este erro não é do xml, parece que ele não esta lendo o xsd.Alguem já passou por isso e sabe como proceder?
Desde já agradeço
Eduardo,
Você tem o arquivo tiposBasico_v1.03.xsd salvo no mesmo doretório dos outros xsd’s?
alguem ja conseguiu consumir o ws usando o windows-my/
Alguma notícia sobre prorrogação do início da NFe 2.0 para Abril/2011?
Alencar
Estou com um problema muito estranho aqui com o SEFAZ de GO.
estou usando AXIS, para a nota versão 1 ainda.
Eu executo o métotodo nfeStatusServicoNF para obter o status do SEFAZ. E o sistema fica aguardando o retorno mas não da erro de timeout simplesmente fica aguardando. Acontece as vezes não é sempre semana passada por exemplo de um total de 1.000 chamadas isso aconteceu em 3. em uma delas eu deixei o sistema rodando de um dia para o outro e quando eu voltei continuava esperando.
Já aconteceu isso com alguem aqui em algum SEFAZ? Existe algum meio de forçar o TIMEOUT após algum tempo?
Obrigado…
Alguma notícia sobre prorrogação do início da NFe 2.0 para Abril/2011?Alencar
cara, no SVRS ja estou usando a versão 2 desde setembro, se não me engano…
e no PR, eu sei que já está disponível o servidor de homologação…
acho que não vão prorrogar mais…acho que é para começar dia 1º de janeiro néh!!!
estranho ficar parado e não dar timeout…
se não me engano o Axis tem um tempo … não sei qto, mas sei que é menos de 10 minutos…
eu tiver que aumetar esse tempo para enviar Lote…
colocando setTimeout(600000); no método nfeRecepcaoLote da minha classe NfeRecepcaoSoapStub…
estranho ficar parado e não dar timeout…
se não me engano o Axis tem um tempo … não sei qto, mas sei que é menos de 10 minutos…
eu tiver que aumetar esse tempo para enviar Lote…
colocando setTimeout(600000); no método nfeRecepcaoLote da minha classe NfeRecepcaoSoapStub…
Eu tambem to achando muito estranho isso, o pior é que acontece só as vezes então é ruim pra testar , só mas uma pergunta. Esse TIMEOUT é para conectar ou para resposta?
Pelo que eu to vendo a AXIS consegue conectar no serviço do SEFAZ GO mas o sefaz está demorando pra responder. será que nesse caso também da timeout ou o timeout é para o tempo de tentativa de conexão?
Então cara… esse timeout é o tempo de obter uma resposta, entende? então se chegou até o servidor da receita mas não teve retorno,
depois do tempo X vai dar erro de timeout…
ou se nem chega a conectar, depois do tempo x vai dar o erro tb…
Alguem conseguiu fazer o programa Visualizador da Receita validar uma NFe de ver 2.0 enviada.
Eu criei uma NFe 2.0 enviei ao SEFAZ em Homologação, ela está aprovada e empacotada coretamente, mas aquele programa Visualizador da Receita sempre da a mensagem “Conteudo ou estrutura inválido”.
Já se eu validar pelo site do SEFAZ RS no site: http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Ai diz que o arquivo está tudo OK.
Ou seja acho que é o programa de visualização da receita que esta com problemas, porque, eu ja olhei tag por tag e esta ok.
Mas alguem teve esse problema?
Alguem conseguiu fazer o programa Visualizador da Receita validar uma NFe de ver 2.0 enviada.Eu criei uma NFe 2.0 enviei ao SEFAZ em Homologação, ela está aprovada e empacotada coretamente, mas aquele programa Visualizador da Receita sempre da a mensagem “Conteudo ou estrutura inválido”.
Já se eu validar pelo site do SEFAZ RS no site: http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Ai diz que o arquivo está tudo OK.Ou seja acho que é o programa de visualização da receita que esta com problemas, porque, eu ja olhei tag por tag e esta ok.
Mas alguem teve esse problema?
vc tem que baixar o Visualizador NFeCTe 5.0b, esse suporta a nfe2.00
vc tem que baixar o Visualizador NFeCTe 5.0b, esse suporta a nfe2.00
Você conseguiu com ele? eu estou usando o 5.0d, quando eu abro o arquivo ele abre e exibe todas as informações mas quando eu clico no botão validar estrutura ele diz que esta inválida, já o botão de validar assinatura ele diz que esta tudo ok.
Para validar a estrutura e a assinatura, eu uso direto no site:
http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Alencar
Para validar a estrutura e a assinatura, eu uso direto no site:http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Alencar
Eu também uso e neste site está validando, o problema são os clientes que insistem em usar o Visualizador da Receita.
Só gostaria de saber se alguem conseguiu validar pelo visualizador porque se todo mundo estiver com erro ai é problema no visualizador mas se alguem aqui conseguiu ai eu vou ter que arrumar meu sistema.
vc tem que baixar o Visualizador NFeCTe 5.0b, esse suporta a nfe2.00Você conseguiu com ele? eu estou usando o 5.0d, quando eu abro o arquivo ele abre e exibe todas as informações mas quando eu clico no botão validar estrutura ele diz que esta inválida, já o botão de validar assinatura ele diz que esta tudo ok.
é… com esse eu valido normal…e pelo site do RS tb…
Vc esta consumindo o serviço de qual estado?
vc tem que baixar o Visualizador NFeCTe 5.0b, esse suporta a nfe2.00Você conseguiu com ele? eu estou usando o 5.0d, quando eu abro o arquivo ele abre e exibe todas as informações mas quando eu clico no botão validar estrutura ele diz que esta inválida, já o botão de validar assinatura ele diz que esta tudo ok.
é… com esse eu valido normal…e pelo site do RS tb…
Vc esta consumindo o serviço de qual estado?
é homologação de SP
vc tem que baixar o Visualizador NFeCTe 5.0b, esse suporta a nfe2.00Você conseguiu com ele? eu estou usando o 5.0d, quando eu abro o arquivo ele abre e exibe todas as informações mas quando eu clico no botão validar estrutura ele diz que esta inválida, já o botão de validar assinatura ele diz que esta tudo ok.
é… com esse eu valido normal…e pelo site do RS tb…
Vc esta consumindo o serviço de qual estado?é homologação de SP
Alves, você pode postar o link do visualizador NFeCTe 5.0b ?
[]'s.
Só pra informar saiu uma nova versão do visualizador que é o NFeCTe 5.0e e agora minhas notas são importadas sem problemas, ou seja, era falha do programa da receita mesmo.
Alguma notícia sobre prorrogação do início da NFe 2.0 para Abril/2011?Alencar
Foi prorrogado mesmo:
http://www.spedbrasil.net/forum/topics/nfe-2-geracao-prazo
Galera eu já encontrei o link.
Segue abaixo para quem estiver procurando.
http://www.nfe.fazenda.gov.br/PORTAL/visualizador.aspx
–
OBS:
Esta Versão foi gerada em 25/11/2010, ela permite visualizar NF-e nas versões 2.00, 1.10 e 1.07 e CT-e nas versões 1.03 e 1.02.
Pessoal,
Não sei se tem relação, mas o problema de total do IPI pode estar relacionado ao ST do IPI, eu passei por um problema desse na validação do SVA, a ST era de IPI Isento, mas o imposto havia sido calculado.
Espero ter ajudado. 
Até + 
Pessoal, o xml de distribuição versão 1.10 está rejeitando com a seguinte mensagem, quando testado no site da sefaz:
PARSER XML: OK
TIPO DE MENSAGEM: Distribuição da NF-e processada
SCHEMA: procNFe = ‘procNFe_v1.10.xsd’ Arquivo de SCHEMA não encontrado
Alguma idéia do qua está rolando?
Alencar
philler, o servidor do sefaz estava em atualização e é bem provável que não foi atualizado por completo, isso aconteceu no dia 01/12/2010, certo?
Fiz o teste hoje (02/12/2010) e funcionou a NFe 1.10.
[]'s.
Ola pessoal, já li várias páginas desse topico mas não achei nada referente ao meu problema, portante me desculpe se já falaram disso.
Mas é o seguinte: meu sistema já funciona normalmente para NFe v1.xx, tudo certinho, e agora estou migrando para a 2.00.
Eu consegui fazer funcionar apenas a consulta do status do serviço, até aí td certinho. Agora para Inutilizacao, Cancelamento ou envio de nf (parei aqui), eu sempre recebo o mesmo problema:
"java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement Signature"
isso vem da linha:
nfeDados = NfeInutilizacao2Stub.NfeDadosMsg.Factory.parse(XML);
Vou deixar como exemplo a inutilizacao pois parece ser mais simples, já q o erro é igual nos 3 servicos.
Eu estou utilizando a mesma classe para assinar/certificar o xml feito, acredito que não precisa ser alterado, correto?
Um xml pronto:
<?xml version="1.0" encoding="UTF-8"?> 2 INUTILIZAR 35 10 68146992000101 55 1 750 750 Teste Inutilizacao fYYhxTR+voZRFMcEP8BcMr8h9xY=GjwXNgHZ4B+wfdK9qvPrPJD+pdvyjdkk/dn46ES3+vZEdRyw/kfnFp/ZisdiQhAqkGuBlr4PlMlZ ZJPSApDwR1mtWYGxjW8JZYUG4nFgk2lEf8h5B7tjKTIIPBwWPt0yfc40RQ7rMYgVDOqZn03YB2s2 tuxKChIOEqjRLO+Ie6c=MIIGdTCCBV2gAwIBAgIIOcNr6bf9eTgwDQYJKoZIhvcNAQEFBQAwdTELMAkGA1UEBhMCQlIxEzAR BgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFs IGRvIEJyYXNpbCAtIFJGQjEZMBcGA1UEAxMQQUMgU0VSQVNBIFJGQiB2MTAeFw0xMDA4MTgyMDAx MzdaFw0xMTA4MTgyMDAxMzdaMIH0MQswCQYDVQQGEwJCUjELMAkGA1UECBMCU1AxFTATBgNVBAcT DFNBTlRBIEJSQU5DQTETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2VjcmV0YXJpYSBk YSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRYwFAYDVQQLEw1SRkIgZS1DTlBKIEEx MRIwEAYDVQQLEwlBUiBTRVJBU0ExSDBGBgNVBAMTP1BPV0VSIFNBVkUgSU5EVVNUUklBIEUgQ09N RVJDSU8gREUgUFJPRFVUT1MgUEFSQTo2ODE0Njk5MjAwMDEwMTCBnzANBgkqhkiG9w0BAQEFAAOB jQAwgYkCgYEAruIs31PH2oYXh5lTGI5k4W8SWM5x2nfZVITJTgCzj99FgojoNhfE5ficFjXBpjSM x0wdGaT6QOObqZhdPlG+9/B6T2mVYKi0VviUMjGZIs0siwXsdAeDiLyTdV3mpgvDhok1cUDGXVHK IxT9DRn+PKApQ6ETRl1+ljtkwG/TLjECAwEAAaOCAwswggMHMAkGA1UdEwQCMAAwDgYDVR0PAQH/ BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAfBgNVHSMEGDAWgBSa3SK29nfp Qm9IwlFAoFbi83Q/uzCBvgYDVR0RBIG2MIGzgRhGSU5BTkNFSVJPQFVTRUlURS5DT00uQlKgIwYF YEwBAwKgGhMYQVJJT1ZBTERPIEFMVkVTIERPTUlOR09ToBkGBWBMAQMDoBATDjY4MTQ2OTkyMDAw MTAxoD4GBWBMAQMEoDUTMzA3MDkxOTU4ODY1OTc1ODI4NTMwMDAwMDAwMDAwMDAwMDAwMDAxMTE4 NjMxMFNTUCBTUKAXBgVgTAEDB6AOEwwwMDAwMDAwMDAwMDAwVwYDVR0gBFAwTjBMBgZgTAECAQ0w QjBABggrBgEFBQcCARY0aHR0cDovL3d3dy5jZXJ0aWZpY2Fkb2RpZ2l0YWwuY29tLmJyL3JlcG9z aXRvcmlvL2RwYzCB8wYDVR0fBIHrMIHoMEqgSKBGhkRodHRwOi8vd3d3LmNlcnRpZmljYWRvZGln aXRhbC5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL3NlcmFzYXJmYnYxLmNybDBEoEKgQIY+aHR0cDov L2xjci5jZXJ0aWZpY2Fkb3MuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9zZXJhc2FyZmJ2MS5jcmww VKBSoFCGTmh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2EvcmVw b3NpdG9yaW8vbGNyL3NlcmFzYXJmYnYxLmNybDCBmQYIKwYBBQUHAQEEgYwwgYkwSAYIKwYBBQUH MAKGPGh0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9jYWRlaWFzL3NlcmFzYXJm YnYxLnA3YjA9BggrBgEFBQcwAYYxaHR0cDovL29jc3AuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5i ci9zZXJhc2FyZmJ2MTANBgkqhkiG9w0BAQUFAAOCAQEAL1O0Ignu1nbio62P+7C+c+hr5qkcXG5v m0SSVFbO0bxQX+jJPAE6nHBgSL/svdpqGcS4BECcCW6g9aoEO4yOINC+M0EqMIG2W+W/rtTufZ2K dSjMyVi8rp3VKcCEbX8sGHzd+0BYpnfznSHHCp37e/o9KBFmlAIW0uBqjdT9FC7krEHqZY9Jw9W5 AVAZiNO00U9vcjcAzVHLNQMgcJkZ1nZWsSHXcFQE4RQUC3xmqkhn8rP3pw9LmN/mt5QNIId5fjak 2Q8ZLsS54KgudnMqVF0jBVW1jSnIVJKnneUINNXUgSXM9PVUK/WR9JI7GT5IjM2XMGSQktu1tXIh Uw0UbQ==E o pior que quando tento validar em http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx, ele diz q tudo está ok.
Para o envio de NFe, eu já peguei o XML gerado e importei no sistema do sefaz, e é importado corretamente, inclusive pelo sistema deles consigo transmitir corretamente, então acredito eu que não seja o xml, mas vai saber.
Meu codigo da inutilizacação, funciona assim:
gero o xml, entao assino, entao depois:
nfeCabec = new NfeCabecMsg();
nfeCabec.setCUF("" + E1.getEstadoUF(E.getEmissor().getUF()).getCod_Estado());
nfeCabec.setVersaoDados("2.00");
nfeCabecE = new NfeInutilizacao2Stub.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
Certificados Cert = new Certificados();
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",Cert.getCertCliente());
System.setProperty("javax.net.ssl.keyStorePassword", Cert.getCertClienteSenha());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", Cert.getCertSefaz());
System.setProperty("javax.net.ssl.trustStorePassword", Cert.getCertSefazSenha());
//System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
try {
nfeDados = new NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString);
nfeDados = NfeInutilizacao2Stub.NfeDadosMsg.Factory.parse(XML);
NfeInutilizacao2Stub nfeStub = new NfeInutilizacao2Stub();
String strXMLRetorno = nfeStub.nfeInutilizacaoNF2(nfeDados, nfeCabecE).getExtraElement().toString();
System.out.println("Retorno: " + strXMLRetorno);
Ret = new InutilizaFaixaRet(strXMLRetorno);
return true;
} catch (Throwable e1) {
System.out.println(e1.getLocalizedMessage());
e1.printStackTrace();
Ret = null;
return false;
}
Alguem tem alguma ideia do q acontece e como posso arrumar isso ??
Obrigado desde ja,
Magno
[email removido]
Resolvido: o problema estava na consulta do recibo da NFe, e não no envio.
Estava gerando o XML da consulta com ConsReciNFe (c em maiúsculo - bobeira).
E não estava conseguindo consultar pela chave de acesso no site da Sefaz-SP pois recebi como resposta: “Rejeição: Total do Produto / Serviço difere do somatório dos itens”.
roassunca, estou tendo dificuldades para enviar NFe 2.0, estava vendo seus comentários e percebi que nosso código é bem parecido, você não poderia postar o XML de envio para que eu possa comparar com o meu, acredito que meu erro é uma falha simples e bem chata.
Agradeço deis de já.
[]'s
Apenas informando, referente ao erro “java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement Signature”, consegui resolver, o problema era adicionar uma tag dummy entre o xml, e tbm arrancar as quebras de linhas do xml.
Grato,
Magno
Pessoal, tenho recebido algumas reclamações quanto a validação do XML de distribuição
validado pelo “Visualizador de Documentos Fiscais Eletrônicos - versão 5.0d”, onde diz
que:
Erro ao verificar a situação deste documento.
Esta assinatura digital não está equivalente
àquela obtida do documento no SPED.
Postando o conteúdo do XML no site da SEFAZ, este é validado com sucesso.
Comparando o digestValue da consulta da NFe no portal, batem os valores.
Baixei o programa validador para teste e realmente acusa este erro.
Alguma dica, por favor?
Alencar
Pessoal, tenho recebido algumas reclamações quanto a validação do XML de distribuição
validado pelo “Visualizador de Documentos Fiscais Eletrônicos - versão 5.0d”, onde diz
que:Erro ao verificar a situação deste documento.
Esta assinatura digital não está equivalente
àquela obtida do documento no SPED.
Postando o conteúdo do XML no site da SEFAZ, este é validado com sucesso.
Comparando o digestValue da consulta da NFe no portal, batem os valores.
Baixei o programa validador para teste e realmente acusa este erro.Alguma dica, por favor?
Alencar
Completando: o instalador diz que a versão é 5.0e, mas no Sobre, a versão instalada é 5.0d 
Deve ter rolo neste programa.
Se alguém passou por isso e achou a solução, agradeço qualquer informação.
Alencar
Quando eu coloco as tags do soap no meu xml gerado eu recebo o seguinte erro (obs: já consegui assinar e authenticar no servidor):
Exception in thread “main” javax.xml.ws.soap.SOAPFaultException: There is an error in XML document (1, 56). Se vocês olharem, é na linha que começa a tag do soap. Eu já estou exausto, pois lutei muito para conseguir assinar e autenticar no webservice. Se alguém puder me ajudar, eu agradeço.
Segue um exemplo do início do meu xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/nfse"> bla bka bla bla
Salve glr…
Otimo topico, gracas a ele jah consigo:
Conectar via SSL
Assinar
Comunicar
Adicionar certificado
Soh me restou uma duvida.
Como vcs estao gerando o nfeDadosMsg:
essa por exemplo:
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\"" +
" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
"<tpAmb>2</tpAmb><cUF>41</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
Para fazer da consulta do status, eh sussa.
Mas e para o envio? String tb ?
Abracao e obrigado a todos q contribuiram nesse topico.
Att
Pessoal, quando evoco um método do cliente axis2 recebo essa mensagem de erro:
Exception in thread “main” org.apache.axis2.AxisFault: Value cannot be null.
Parameter name: schemas
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:446)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.tempuri.NfseServicesStub.recepcionarLoteRps(NfseServicesStub.java:1062)
at Teste.main(Teste.java:38)
Qual schema?
Abraço
Iae galera, possuo um sistema e quero integrá-lo para que possa gerar nf-e automática.
Dei uma olhada nos manuais para integar meu sistema com o webservice da prefeitura de sp, e percebi que só existe auxilio para geração de RPS.
Então minha dúvida é a seguinte:
É obrigatório que primeiramente eu gere um RPS e depois devo convertê-lo para nf-e ?
Outra dúvida, minha nota fiscal é do tipo SIMPLES, para enviar os dados para o webservice preciso obter um certificado digital junto ao ICP Brasil ? Preciso pagar para obter esse certificado ?
Se alguém puder dar uma força agradeço.
Olá pessoal, como existem várias postagens nesse tópico inclusive recentes, resolvi postar minha dúvida aqui.
É o seguinte: no site dos correios vi que há a opção de adquirir certificado A1 e A3 para pessoas físicas(e-CPF), alguém saberia dizer se é possivel realizar testes para consumir os web services da NFe com esses certificados e-CPF?
Olá pessoal, como existem várias postagens nesse tópico inclusive recentes, resolvi postar minha dúvida aqui.
É o seguinte: no site dos correios vi que há a opção de adquirir certificado A1 e A3 para pessoas físicas(e-CPF), alguém saberia dizer se é possivel realizar testes para consumir os web services da NFe com esses certificados e-CPF?
Não é possível. Somente eCNPJ é aceito pela NFe.
Alencar
Já ‘varri’ o tópico e identifiquei alguns problemas semelhantes, mas nenhuma solução funcionou: estou tentando utilizar o primeiro certificado A3 e só obtenho erro 403: Forbidden (o certificado é válido, está na validade e o CNPJ está autorizado).
Já refiz o trustStore, já coloquei toda a cadeia de certificados do servidor dentro do token, e nada…
A mensagem de erro é :
org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden
org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:307)
Alguma dica?
Alencar, pesquisei ontem a noite e acabei encontrando a informação de que não é possivel consumir os web services com o e-CPF, mesmo assim Obrigado pela resposta. Nesse caso não haveria nenhum certificado disponbilizado para testes para consumir web services? assim como existe o certificado Associacao com o qual é possivel assinar o xml, pois segundo a video aula da t2ti com o certificado Associacao não é possivel consumir web services.
Obrigado
Não há como acessar webservices (nem homologação) com certificados exemplo, nem e-cpf.
Sugiro você pegar um e-cnpj de um cliente, ou de sua empresa mesmo e fazer os testes no ambiente de homologação.
Já ‘varri’ o tópico e identifiquei alguns problemas semelhantes, mas nenhuma solução funcionou: estou tentando utilizar o primeiro certificado A3 e só obtenho erro 403: Forbidden (o certificado é válido, está na validade e o CNPJ está autorizado).Já refiz o trustStore, já coloquei toda a cadeia de certificados do servidor dentro do token, e nada…
A mensagem de erro é :
org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:307)Alguma dica?
Geralmente nestes casos, é a cadeia certificadora do A3 que está incompleta ou inválida.
Verifique esta cadeia através do software do cartão.
Confira tudo, pois já vi A3 com cadeia inválida.
Alencar
Exatamente, acabei de ver a mensagem final do tópico http://www.guj.com.br/posts/list/146366.java e resolvi fazer o mesmo: removi toda a cadeia mantendo somente o certificado do cliente e importei novamente os certificados das ACs.
Tudo funcionando, inclusive com meu keystore original, sem nenhum stress…
Valeu
tenho duvidas sobre a nota fiscal eletroonica
estou usando webservice
alguem pode me ajudar
nao sei nem por onde começar
ja mexi tanto no codigo que agora deu um monte de erro
tenho duvidas sobre a nota fiscal eletroonica
estou usando webservice
alguem pode me ajudar
nao sei nem por onde começar
ja mexi tanto no codigo que agora deu um monte de erro
tenta primeiro consumir os serviços mais simples, como consultar Status…
da uma olhada ai no que o Rafaelbtz postou http://www.guj.com.br/posts/list/52035.java#581090
Iae galera, possuo um sistema e quero integrá-lo para que possa gerar nf-e automática.Dei uma olhada nos manuais para integar meu sistema com o webservice da prefeitura de sp, e percebi que só existe auxilio para geração de RPS.
Então minha dúvida é a seguinte:
É obrigatório que primeiramente eu gere um RPS e depois devo convertê-lo para nf-e ?Outra dúvida, minha nota fiscal é do tipo SIMPLES, para enviar os dados para o webservice preciso obter um certificado digital junto ao ICP Brasil ? Preciso pagar para obter esse certificado ?
Se alguém puder dar uma força agradeço.
cara a NF-e não usa rps, RPS é para NFS-e.
vc precisa de um certificado para poder se conectar com o servidor da receita. Tem que comprar mesmo.
tenho duvidas sobre a nota fiscal eletroonica
estou usando webservice
alguem pode me ajudar
nao sei nem por onde começar
ja mexi tanto no codigo que agora deu um monte de erro
para NF-e, primordial ler o manual de integração inteiro, 80% das dúvidas se resolvem ali
boa sorte
isso quando a prefeitura não muda o manual todo dia né !
http://isscuritiba.curitiba.pr.gov.br/portalnfse/manuais.aspx
não consigo implementar essa maldita nota fiscal eletrônica de serviços de curitiba !
pago para quem ajudar
Pessoal, estou batendo cabeça para usar o Token Pro Aladdin no Windows Vista, 32bits com SP2.
Tudo instalado certo, funcionando, mas o java não tem jeito de reconhecer a DLL
como sendo o provider do PKCS11.
name=eToken
library=c:\windows\system32\eTpkcs11.dll
retorna: PKCS11 not found. Se acesso algum site com autenticação, funciona.
Versão do driver instalado: 5.0 baixado direto do site da Certisign.com.br.
Testei renomeando a dll pra ver se o erro muda. Sim: dll não encontrada;
Então isso me diz que as confs estão ok.
Por dica do amigo Marcio Oliveira, rodei como Administrador: mesmo erro.
Alguns fóruns dizem que é assim mesmo: no Vista só funciona em alguns casos e deu. Sem solução.
Se alguém já passou por este enrosco e tiver dicas de configuração, agradeço.
Alencar
Boa Tarde!
Eu resolvi o problema “Rejeição: Uso de prefixo de namespace não permitido” setando dbf.setNamespaceAware(false). Caso alguém não tenha sucesso com as dicas acima talvez essa ajude.
NfeDadosMsg dados = new NfeDadosMsg();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
[b]dbf.setNamespaceAware(false);[/b]
Document dado = dbf.newDocumentBuilder().parse(
new ByteArrayInputStream(nfeDadosMsg.getBytes()));
MessageElement[] elements = new MessageElement[1];
elements[0] = new MessageElement(dado.getDocumentElement());
dados.set_any(elements);
Até…
Pessoal, tem como eu obter as NFe’s de determinado fornecedor? O arquivo XML.
Atualmente estou em um projeto em que os fornecedores enviam (através de e-mail) os XML que eles mesmos geraram, porém o cliente não gostaria mais de depender do e-mail.
Eles já tem um sistema que interpreta o arquivo XML e salva no banco de dados (e isso não será alterado).
Há a possibilidade?
Obrigado.
[]'s
Caros colegas,
Estou fazendo a consulta de um lote da NFE :
NfeRetRecepcao2Stub.NfeCabecMsg cabec = new NfeRetRecepcao2Stub.NfeCabecMsg();
cabec.setCUF("15");
cabec.setVersaoDados("2.00");
NfeRetRecepcao2Stub.NfeCabecMsgE nfeCabecMsg = new NfeRetRecepcao2Stub.NfeCabecMsgE();
nfeCabecMsg.setNfeCabecMsg(cabec);
NfeRetRecepcao2Stub.NfeDadosMsg nfeDadosMsg = new NfeRetRecepcao2Stub.NfeDadosMsg();
//estou usando aki String p/ teste
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><consReciNFe versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\"><tpAmb>2</tpAmb><nRec>154000004532880</nRec></consReciNFe>";
System.out.println( str );
//imprime <?xml version="1.0" encoding="UTF-8"?><consReciNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><nRec>154000004532880</nRec></consReciNFe>
nfeDadosMsg.setExtraElement( AXIOMUtil.stringToOM( str ) );
NfeRetRecepcao2Stub.NfeRetRecepcao2Result nfeRetResult = new NfeRetRecepcao2Stub().nfeRetRecepcao2(nfeDadosMsg, nfeCabecMsg);
System.out.println( nfeRetResult.getExtraElement() );
e como resultado:
Já verifiquei caracteres inválidos,espaços duplos e outras coisas e não achei nada.
Não consigo saber qual é o erro desse xml.
Se alguém tiver algum exemplo que funcione ou puder testar este código eu agradeço.
Pessoal, tem como eu obter as NFe’s de determinado fornecedor? O arquivo XML.Atualmente estou em um projeto em que os fornecedores enviam (através de e-mail) os XML que eles mesmos geraram, porém o cliente não gostaria mais de depender do e-mail.
Eles já tem um sistema que interpreta o arquivo XML e salva no banco de dados (e isso não será alterado).
Há a possibilidade?
Obrigado.
[]'s
cara… eu sei que o fornecedor é obrigado a fornecer o arquivo, mas fica a critério do fornecedor de qual vai ser a forma de disponibilizar o xml.
pode ser enviando por email, ou deixando disponível para o cara baixar de algum lugar.
aqui onde eu trabalho, nós “cobramos” os fornecedores para mandarem para um e-mail, e la roda um programinha que joga os anexos num diretório e valida os arquivos…
isso é complicado mesmo… bem que a receita poderia disponibilizar um WS para consultar esses benditos XMLs…
Pessoal, tem como eu obter as NFe’s de determinado fornecedor? O arquivo XML.Atualmente estou em um projeto em que os fornecedores enviam (através de e-mail) os XML que eles mesmos geraram, porém o cliente não gostaria mais de depender do e-mail.
Eles já tem um sistema que interpreta o arquivo XML e salva no banco de dados (e isso não será alterado).
Há a possibilidade?
Obrigado.
[]'s
cara… eu sei que o fornecedor é obrigado a fornecer o arquivo, mas fica a critério do fornecedor de qual vai ser a forma de disponibilizar o xml.
pode ser enviando por email, ou deixando disponível para o cara baixar de algum lugar.
aqui onde eu trabalho, nós “cobramos” os fornecedores para mandarem para um e-mail, e la roda um programinha que joga os anexos num diretório e valida os arquivos…
isso é complicado mesmo… bem que a receita poderia disponibilizar um WS para consultar esses benditos XMLs…
É, to vendo que só tem esse jeito mesmo…valeu Alves.
Pessoal…estou com um certificado digital da Caixa Econômica Federal (A1).
Como eu estou desenvolvendo uma aplicação em JSE (para Desktop) eu tenho uma rotina que le o arquivo .pfx do certificado e faz a comunicação normalmente… Com o arquivo pfx dos correios funcionou direitinho
Mas o certificado digital da caixa veio com 3 arquivos …
…Pelo que li no site da caixa tem que baixar o programa gerenciador lá da caixa para conseguir exportar estes arquivos para um arquivo .pfx… Até aí tudo bem… fiz isso e gerou o dito arquivo .pfx…
Ao setar para o meu sistema este arquivo do certificado, (Somente informar o caminho do arquivo sem prescisar instalar ele no explorer ou outro browser )ele não consegue se comunicar com a sefaz… dá erro…Forbiden 403, diz que falta o certificado. No entanto se eu testar com o certificado dos correios de outro cliente, funciona certinho…
O meu código é esse para carregar o certificado
System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "homologa_sefaz.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "senha_cert_sefaz");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "caminho/do/certificado/do/cliente.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha_cliente");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation","true");
Me digam uma coisa… Para certificados da caixa prescisa fazer mais alguma coisa além da simples leitura do pfx e do p7b do sefaz?
Prescisaria de algum .cer intermediário da caixa ou algo assim…?
Alguém já implementou alguma consulta de status com o certificado da caixa A1?
Obs… o mais estranho… é que se eu anexar este arquivo .pfx que eu gerei no emissor de testes da sefaz…ele funciona…!!!
Será que seria outro Arquivo de certificado da sefaz (o .p7b) para fazer a comunicação com o certificado da Caixa?
Me ajudem… faz dias que estou atras disso e não consigo achar uma solução!!!
Pessoal…estou com um certificado digital da Caixa Econômica Federal (A1).
…
Importe o certificado no IE, e exporte novamente usando a opção de exportar toda a cadeia certificadora.
O arquivo .pfx final deve ter uns 7KB. O original deve ter 3KB.
Atenção! Todos os certificados da CEF vencem dia 30/10/2011, independente da data que foi adquirido.
Isso se deve ao vencimento do certificado raiz da ICP ser o v1, com vencimento 30/11/2011.
Alencar
Obrigado philler Era isso mesmo…
Depois de dois dias pesquisando…e fazendo a mesma coisa he he he…importando e exportando…funcionou…
O que eu estava fazendo de errado foi que o cliente me passou somente o certificado dele, e não toda a cadeia…então tive que baixar toda a cadeia certificadora… AC_Caixa_pj e AC_Caixa e instalar no IE, pois quando eu exportava novamente para pfx sem estes arquivos, gerava um novo arquivo pfx de 3kb… depois que instalei a cadeia inteira, gerou um arquivo de 7 Kb…
Aleluia…depois de tres dias instalando e desinstalando certificados e gerenciadores da caixa funcionou…Obrigado pela ajuda…
E aqui vai os passos que funcionaram pra mim.Para quem tiver o mesmo problema e se como eu de receber somente o certificado do cliente (Da Caixa Economica Federal A1)
1)Baixe o gerenciador da caixa (icp.caixa.gov.br/asp/repositorio.asp)
2)Abra este gerenciador com um pendrive conectado no pc com o certificado do cliente que o gerenciador vai achar o certificado
3)Exporte para pfx através do gerenciador o certificado
4)Baixe e instale toda a cadeia de certificados da caixa e importe para o IE(Eu baixei do site http://www.iti.gov.br/twiki/bin/view/Certificacao/RepositoriodaACRaiz, mas pode ser na icp.caixa.gov.br também).
5)Instale o certificado .pfx do cliente no IE
6)Agora sim…exporte o certificado do cliente instalado no IE e marque a opção de exportar toda a cadeia certificadora.
7)Agora é só setar no sistema o endereço do arquivo .pfx exportado que tudo vai funcionar…
Como o nosso amigo philler falou…o arquivo final tem que ficar mais ou menos com uns 7Kb
Espero que estas informações ajude mais alguém…
Valeu Mais uma vez…
Alguém já teve problemas com o servidor do SCAN… envio no ambiente de testes e sai tudo certo, porém no SCAN me retorna a seguinte mensagem
"Erro 245: Rejeição CNPJ do Emitente não Cadastrado"
Como pode o cnpj estar cadastrado no ambiente de homologação normal e no ambiente de homologação do SCAN não?
O SCAN demora para atualizar a sua listagem de CNPJ credenciados?
Might AngelPasso 1
Crio uma pasta dentro do projeto e coloco todas as wsdlPasso 2
Click com o botão direito no projeto -> new -> other ->web services -> web service client e dou nextPasso 3
Localizo o wsdl que desejo e observo as configurações que estão: server : tomcat v6.0 server
Web service runtime: Apache axis2
cliente projet: o nome_do_meu_projetoPasso 4
Finishgerou minhas classes.
muito obrigado.
Bom dia Pessoal!
Estou perdidão, realizei os passos acima para o NfeStatusServico2.wsdl, deu tudo certo (eu acho), ou seja, não deu nenhum tipo de erro e surgiram dois arquivos .java (NfeStatusServico2CallbackHandler e NfeStatusServico2Stub), porém, qual o próximo passo? Eu tento compilar esses arquivos? Fiz isso mas ocorreram erros, estou fazendo errado?
Obrigado!!!
Carlos.
olá Pessoal...
estou testando a NFe 2.00 no Paraná e estou recebendo o erro 215 Falha no schema XML.
entrei em contato com uma pessoa na SEFAZ/PR e o mesmo me disse que este erro é devido ao lote que estou enviando estar indo sem o namespace xmlns="http://www.portalfiscal.inf.br/nfe" na tag <NFe>.
eu monto o xml corretamente, com esta namespace, mas eles recebem o xml sem, como se minha aplicação estivesse retirando a tag.
estou usando o axis2 para fazer a comunicação com a receita.
alguém daqui já passou por este erro e conseguiu resolver?
o código que envio o lote é este:
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(
new StringReader(_nfeDadosMsg));
NfeRecepcao2Stub.NfeDadosMsg dadosMsg = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(dad);
NfeRecepcao2Stub.NfeCabecMsg cabecMsg = new NfeRecepcao2Stub.NfeCabecMsg();
cabecMsg.setCUF( COD_UF );
cabecMsg.setVersaoDados( _versaoDados );
NfeRecepcao2Stub.NfeCabecMsgE cabecMsgE = new NfeRecepcao2Stub.NfeCabecMsgE();
cabecMsgE.setNfeCabecMsg(cabecMsg);
NfeRecepcao2Stub stub = new NfeRecepcao2Stub();
return stub.nfeRecepcaoLote2(dadosMsg, cabecMsgE).getExtraElement().toString();
eu já testei a inutilização e a nota foi inutilizada corretamente na SEFAZ, sendo que o método que inutiliza é praticamente o mesmo que envia o lote... só mudam as informações do xml e o webservice.
se alguém puder ajudar, agradeço!
vlw
Alguem está tendo problemas em acessar o servidor de MG.
Pra mim funcionou sem problemas até ontem, hj via um servidor aqui na cidade de SP eu não consigo acessar, nem mesmo colando o endereço do WebService no Browser eu tenho acesso.
Ja através de um outro servidor no interior de SP eu acesso o endereço sem problemas.
Mas alguem está com dificuldades.
olá Pessoal...estou testando a NFe 2.00 no Paraná e estou recebendo o erro 215 Falha no schema XML.
entrei em contato com uma pessoa na SEFAZ/PR e o mesmo me disse que este erro é devido ao lote que estou enviando estar indo sem o namespace xmlns="http://www.portalfiscal.inf.br/nfe" na tag <NFe>.
eu monto o xml corretamente, com esta namespace, mas eles recebem o xml sem, como se minha aplicação estivesse retirando a tag.
estou usando o axis2 para fazer a comunicação com a receita.
alguém daqui já passou por este erro e conseguiu resolver?
o código que envio o lote é este:
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader( new StringReader(_nfeDadosMsg)); NfeRecepcao2Stub.NfeDadosMsg dadosMsg = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(dad); NfeRecepcao2Stub.NfeCabecMsg cabecMsg = new NfeRecepcao2Stub.NfeCabecMsg(); cabecMsg.setCUF( COD_UF ); cabecMsg.setVersaoDados( _versaoDados ); NfeRecepcao2Stub.NfeCabecMsgE cabecMsgE = new NfeRecepcao2Stub.NfeCabecMsgE(); cabecMsgE.setNfeCabecMsg(cabecMsg); NfeRecepcao2Stub stub = new NfeRecepcao2Stub(); return stub.nfeRecepcaoLote2(dadosMsg, cabecMsgE).getExtraElement().toString();eu já testei a inutilização e a nota foi inutilizada corretamente na SEFAZ, sendo que o método que inutiliza é praticamente o mesmo que envia o lote... só mudam as informações do xml e o webservice.
se alguém puder ajudar, agradeço!
vlw
estou testando aqui agora, e tb estou recebendo esse erro...conseguiu alguma coisa?
faço a mesma coisa com o SVRS e vai certinho e a porcaria do PR sempre da problema...
se eu tiver novidades eu posto aqui...
estava debudando e vi que é nesta linha
no método parse, que o xml fica sem no namespace…
mas ainda não achei como arrumar isso…
se alguém conseguir enviar nota pro PR… da uma ajuda ai…
abraco
Mesmo problema que o meu…
Verifique tambem a tag Signature, que no meu caso, também ficou sem o namespace.
Agora estou empenhado em outro projeto, mas a noite vou tentar resolver utilizando o SOAPHandler e SOAPResolver. É fácil!
Lá voce pode ter acesso a todos os dados do envelope.
Se quiser tentar antes de mim, manda retorno.
update
Detalhes: Isto só está acontecendo na nova geração (2.00) do Web Service para Recepção. Os outros todos funcionam sem problema! E Nenhum problema com a Versão 1.10.
Pessoal, tem como eu obter as NFe’s de determinado fornecedor? O arquivo XML.Atualmente estou em um projeto em que os fornecedores enviam (através de e-mail) os XML que eles mesmos geraram, porém o cliente não gostaria mais de depender do e-mail.
Eles já tem um sistema que interpreta o arquivo XML e salva no banco de dados (e isso não será alterado).
Há a possibilidade?
Obrigado.
[]'s
cara… eu sei que o fornecedor é obrigado a fornecer o arquivo, mas fica a critério do fornecedor de qual vai ser a forma de disponibilizar o xml.
pode ser enviando por email, ou deixando disponível para o cara baixar de algum lugar.
aqui onde eu trabalho, nós “cobramos” os fornecedores para mandarem para um e-mail, e la roda um programinha que joga os anexos num diretório e valida os arquivos…
isso é complicado mesmo… bem que a receita poderia disponibilizar um WS para consultar esses benditos XMLs…
Sobre o armazenamento em bancos de dados, acho que deva haver uma grande preocupação, pois precisa-se garantir a integridade dos dados e como este armazenamento é de longo prazo, possivelmente, possa vir a ter problemas mais a frente. Estou dizendo isto por que estamos enfrentando um problema desse com um cliente, cuja migração de dados esta criando um grande problema. Mas caso tenha certeza de que não terá mudanças no decorrer da expiração da vigencia dos dados, então continue…
Sucesso!
edit
O problema é que o sistema anterior gravava em BD e mesmo o proprio sistema, depois de passados dois anos, não recupera os dados de forma que a assinatura fica inválida… algo ocorreu e não estava previsto… diversas hipoteses foram lançadas e por enquanto uma delas fora constatada e deve haver mais: a nota foi gerada em UTF-8 e armazenada em Latin. Legal né??? E aos criticos de plantão: não venham com essa que foi falha do programador! A falha pode ter sido de Projeto pois ao que parece este modulo foi adicionado depois, mas foi utilizado metodos anteriores para armazenar… Pode ter sido falta de comunicação e controle do desenvolvimento, pois ao que parece, inclusive, foram programadores diferentes, pelos diferentes estilos de codificação e documentação… etc. Culpar o programador num dá nessa hora né!!!
estava debudando e vi que é nesta linhano método parse, que o xml fica sem no namespace…
mas ainda não achei como arrumar isso…
se alguém conseguir enviar nota pro PR… da uma ajuda ai…
abraco
Bom dia Felipe…
No meu caso, o problema era somente a versão do Xalan que ao fazer o parser ficava assim:
<nfeCabecMsg xmlns="{NS_WS_DA_SUA_UF}">
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<idLote>000001</idLote>
<NFe> //foi removido aqui o xmlns
<infNFe Id="NFe23110109146962000128550010000001001000001009" versao="2.00">
O que fiz foi apenas adicionar no class path a ultima versao do Xalan para a versao 2.7.1, pois há relatos que existe um BUG na versão que vem com o JDK 1.6. Com ou sem BUG (mas parece que sim) a verdade é que resolveu.
Minha implementação é a seguinte e está tudo 100% na nova geração dos WS da Sefaz.
//local do arquivo de lote de envio (faço assim pois o sistema é independente da construção do xml)
File file = new File("*-nfe.xml");
//fazer a conversao de stream para Document
DOMResult domResult = new DOMResult();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new StreamSource(file), domResult);
DocumentImpl documentImpl = (DocumentImpl) domResult.getNode();
//adicionar os dados em nfeDadosMsg - neste caso nfeDadosMsg é uma variavel do tipo SOAPBodyElement
SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement());
nfeDadosMsg.addChildElement(soapElement);
t+
Estou tentando valida meu xml com a classe que foi apresentada aqui.
Estou usando o leiauteNFe_v2.00.xsd para validar um xml da NFe 2.0 mas esta me gerando o seguinte erro:
java.lang.Exception: src-resolve: Cannot resolve the name 'TCodUfIBGE' to a(n) 'type definition' component.
at negocio.XMLXSDValidate.validate(XMLXSDValidate.java:77)
at negocio.XMLXSDValidate.main(XMLXSDValidate.java:103)
Na verdade ele esta dando erro sempre que é referenciado um tipo type no arquivo leiauteNFe_v2.00.xsd
Exemplo:
<xs:element name="cUF" type="TCodUfIBGE">
.....
<xs:restriction base="TString">
.......
<xs:element name="mod" type="TMod">
Estou usando o xsd errado?
Obs: testei agora com o enviNFe_v2.00.xsd também não rolou…
Bom dia Felipe…
No meu caso, o problema era somente a versão do Xalan que ao fazer o parser ficava assim:
O que fiz foi apenas adicionar no class path a ultima versao do Xalan para a versao 2.7.1, pois há relatos que existe um BUG na versão que vem com o JDK 1.6. Com ou sem BUG (mas parece que sim) a verdade é que resolveu.
//local do arquivo de lote de envio (faço assim pois o sistema é independente da construção do xml) File file = new File("*-nfe.xml"); //fazer a conversao de stream para Document DOMResult domResult = new DOMResult(); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(new StreamSource(file), domResult); DocumentImpl documentImpl = (DocumentImpl) domResult.getNode(); //adicionar os dados em nfeDadosMsg - neste caso nfeDadosMsg é uma variavel do tipo SOAPBodyElement SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement()); nfeDadosMsg.addChildElement(soapElement);t+
Fala AGAraujo… td certo!?
Então…usei o se exemplo para fazer o meu… mas ficou meio estranho, quando crio o meu elemento (soapElement ) ele não fica com o xml inteiro… fica só com a declaração do infNFe…
segue como fica o meu envelope:
e reparou que ficou com 2 namespace o envNFe…?!
segue meu código para vc dar uma sugestão…
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
SOAPHeader head = envelope.getHeader();
SOAPElement headElement = head.addChildElement(envelope.createName("nfeCabecMsg","ns1","http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcao2"));
headElement.addChildElement("cUF", "ns1").addTextNode("41");
headElement.addChildElement("versaoDados", "ns1").addTextNode("2.00");
SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement());
body.addChildElement(soapElement);
message.saveChanges();
valeo pela ajuda…
abraco
Bom dia Felipe…
No meu caso, o problema era somente a versão do Xalan que ao fazer o parser ficava assim:
O que fiz foi apenas adicionar no class path a ultima versao do Xalan para a versao 2.7.1, pois há relatos que existe um BUG na versão que vem com o JDK 1.6. Com ou sem BUG (mas parece que sim) a verdade é que resolveu.
//local do arquivo de lote de envio (faço assim pois o sistema é independente da construção do xml) File file = new File("*-nfe.xml"); //fazer a conversao de stream para Document DOMResult domResult = new DOMResult(); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(new StreamSource(file), domResult); DocumentImpl documentImpl = (DocumentImpl) domResult.getNode(); //adicionar os dados em nfeDadosMsg - neste caso nfeDadosMsg é uma variavel do tipo SOAPBodyElement SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement()); nfeDadosMsg.addChildElement(soapElement);t+
Fala AGAraujo… td certo!?
Então…usei o se exemplo para fazer o meu… mas ficou meio estranho, quando crio o meu elemento (soapElement ) ele não fica com o xml inteiro… fica só com a declaração do infNFe…
segue como fica o meu envelope:e reparou que ficou com 2 namespace o envNFe…?!
segue meu código para vc dar uma sugestão…MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); SOAPPart soapPart = message.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPBody body = envelope.getBody(); SOAPHeader head = envelope.getHeader(); SOAPElement headElement = head.addChildElement(envelope.createName("nfeCabecMsg","ns1","http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcao2")); headElement.addChildElement("cUF", "ns1").addTextNode("41"); headElement.addChildElement("versaoDados", "ns1").addTextNode("2.00"); SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement()); body.addChildElement(soapElement); message.saveChanges();valeo pela ajuda…
abraco
Aparentemente está tudo ok em termos de implementação… vale lembrar que este exemplo que te passei eu uso JAXB/JWS e pelo que vi vc esta usando DOM/AXIS, estou certo??
Bom, se for isto, eu li algo sobre isto e talvez eu tenha a solução em casa… vou verificar e posto amanhã.
Mesmo assim veja que no me caso eu implementei diferente de você… no seu caso você implementou o body sem criar o nfeDadosMsg. Isto muda muita coisa, pois você estará considerando este elemento manipulável durante a transformação e isto pode ser um problema quando se trata dos níveis do DOM…
Se for agir assim precisa verificar o mapeamento correto, incluindo este como parte dos seu dados a serem enviados. Entendeu??
No meu caso o meu fica assim:
//construindo o nfeDadosMsg
SOAPBodyElement nfeDadosMsg = body.addBodyElement(new QName(schemaTargetNamespace, "nfeDadosMsg", XMLConstants.DEFAULT_NS_PREFIX));
//fazendo o unmarshaller
File file = new File("*-nfe.xml");
JAXBContext jaxbContext = JAXBContext.newInstance("br.inf.portalfiscal.nfe");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement jaxbElement = (JAXBElement) unmarshaller.unmarshal(file);
//convertendo em elemento DOM
DOMResult domResult = new DOMResult();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new JAXBSource(jaxbContext, jaxbElement), domResult);
DocumentImpl documentImpl = (DocumentImpl) domResult.getNode();
//
SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement());
nfeDadosMsg.addChildElement(soapElement);
Na verdade ele esta dando erro sempre que é referenciado um tipo type no arquivo leiauteNFe_v2.00.xsd
Exemplo:<xs:element name="cUF" type="TCodUfIBGE"> ..... <xs:restriction base="TString"> ....... <xs:element name="mod" type="TMod">Estou usando o xsd errado?
Obs: testei agora com o enviNFe_v2.00.xsd também não rolou…
Voce esta importando o restantes dos esquemas???
Ao que parece o erro é pq ele não consegue importar o Type para o schema.
Oi pessoal,
Tem alguém aí que fez Envio de Lote da NF -e 2.0 com jax-ws?
A minha dúvida éo que passar para o método
NfeDadosMsg nfeDadosMsg = new NfeDadosMsg();
nfeDadosMsg.getContent().add(parametro);
Se eu passo uma String dá erro, também não aceita um objeto TNFe…
Obrigada.
Aparentemente está tudo ok em termos de implementação... vale lembrar que este exemplo que te passei eu uso JAXB/JWS e pelo que vi vc esta usando DOM/AXIS, estou certo??
Bom, se for isto, eu li algo sobre isto e talvez eu tenha a solução em casa... vou verificar e posto amanhã.
Mesmo assim veja que no me caso eu implementei diferente de você... no seu caso você implementou o body sem criar o nfeDadosMsg. Isto muda muita coisa, pois você estará considerando este elemento manipulável durante a transformação e isto pode ser um problema quando se trata dos níveis do DOM...
Se for agir assim precisa verificar o mapeamento correto, incluindo este como parte dos seu dados a serem enviados. Entendeu??No meu caso o meu fica assim:
//construindo o nfeDadosMsg SOAPBodyElement nfeDadosMsg = body.addBodyElement(new QName(schemaTargetNamespace, "nfeDadosMsg", XMLConstants.DEFAULT_NS_PREFIX)); //fazendo o unmarshaller File file = new File("*-nfe.xml"); JAXBContext jaxbContext = JAXBContext.newInstance("br.inf.portalfiscal.nfe"); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); JAXBElement jaxbElement = (JAXBElement) unmarshaller.unmarshal(file); //convertendo em elemento DOM DOMResult domResult = new DOMResult(); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.transform(new JAXBSource(jaxbContext, jaxbElement), domResult); DocumentImpl documentImpl = (DocumentImpl) domResult.getNode(); // SOAPElement soapElement = SOAPFactory.newInstance().createElement(documentImpl.getDocumentElement()); nfeDadosMsg.addChildElement(soapElement);
então.. eu não estou usando o JAXB, vou tentar usar hj...
valeo pela força...
Na verdade ele esta dando erro sempre que é referenciado um tipo type no arquivo leiauteNFe_v2.00.xsd
Exemplo:<xs:element name="cUF" type="TCodUfIBGE"> ..... <xs:restriction base="TString"> ....... <xs:element name="mod" type="TMod">Estou usando o xsd errado?
Obs: testei agora com o enviNFe_v2.00.xsd também não rolou…
Voce esta importando o restantes dos esquemas???
Ao que parece o erro é pq ele não consegue importar o Type para o schema.
Entendi, achei o xsd que contem os tipos agora não consigo como setar no exemplo que estou usando.
Pessoal estou tendo problema com Axis2 com netbeans. Nao consigo achar uma solucao. Ja coloquei todos os jars do Axis2 na biblioteca do projeto, ja tentei mudar de versao do Axis2 mas o erro persiste. Alguem ja passou por este problema. Desde já agradeço a todos pelas excelentes dicas postadas neste forum.
Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/apache/axis2/databinding/ADBBean
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at publico.NF_e.Status_Servico(NF_e.java:147)
at auge.aug351.bstatus_servicoActionPerformed(aug351.java:306)
at auge.aug351.access$200(aug351.java:20)
at auge.aug351$4.actionPerformed(aug351.java:133)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.apache.axis2.databinding.ADBBean
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
… 41 more
Oi pessoal,Tem alguém aí que fez Envio de Lote da NF -e 2.0 com jax-ws?
A minha dúvida éo que passar para o método
NfeDadosMsg nfeDadosMsg =
new NfeDadosMsg();
nfeDadosMsg.getContent().add(parametro);Se eu passo uma String dá erro, também não aceita um objeto TNFe…
Obrigada.
o que pode ser adicionado é somente:
- string, sendo que esta não poderá conter caracteres que identifiquem tags xml, caso o faça sua string será codificada;
- jaxelement ou rootelement, neste caso o que for adicionado precisa participar do contexto principal, no caso do pacote que está o NfeDadosMsg diretamente ou por referencia @XmlElementRef
- element, do DOM.
Alguém tá conseguindo consultar a situação das notas (nfeRetRecepcao2) no ambiente de Homologação do Paraná na versão 2.00? Pra mim da falha no schema XML, mas quando mando pra Santa Catarina ou Rio Grande do Sul funciona beleza. Alguém já teve algum problema parecido? Abraço.
vc precisa usar a lib Xalan, e nesse post tem um código de exemplo… http://www.guj.com.br/java/212631-nfe-20/2#1200199
Opa, obrigado, Felipe Alves. Mas esse código é para a consulta do status do serviço, não é? A consulta que estou falando é da situação da NFe (consSitNFe), onde no xml acho que só vai o número do recibo.
Estou com problemas também na parte de consultar uma chave lá (consSitNFe) em homologação é dá um erro também. Quando tento em produção funciona. :\
Já fiz testes no RS, PR, SP, RJ, CE, PB e BA. Todos estão OK e funcionando perfeitamente com o mesmo esquema de WSDL e XML.
Verifique os detalhes do seu arquivo. Não faz sentido funcionar no Homologação e não no de Produção. Verifique no Twitter se foi algum problema com o servidor, lá tem um relatorio de acompanhamento do status de todos os serviços disponibilizados.
t+
E ai galera blz
Alguem conseguiu solucionar o problema do SEFAZ do PR , transmito o XML ok, qdo eu consulto o serviço volta o erro 215 - falha no schema XML , ja verifiquei os namespace e estão todos declarados estou usando o axis2 , todos outros estados estão funcionando corretamente estou apenas com problema no PR
Pois é, Evandro, mesma coisa aqui.
AGAraujo, você testou todos em homologação ou em ambos os ambientes?
E ai evandromib, blz,
Seguinte meu velho, eu fiquei tentando com o Axis2 durante uma semana no PR e não deu certo, ai tentei com o exemplo que o Alves.Felipe passou e deu certo, já estou adequando o meu projeto pra essa forma, o Axis2 eu abandonei.
Abraço.
e ai Mackrophus blz
eu vi o post do Alves.felipe , mais ai é foda vou ter que trocar tudo só por causa de um estado , PR ja foi o ultimo estado a se adequar as regras da versão 2.0 e quando muda tem regras totalmente diferente do restante dos estados vou verificar se arrumo uma maneira de funcionar via axis2 msm , qquer coisa post aqui os resultados dessa revolta rs
Pois é cara, são os ultimos a mudar, são os que sempre fazem coisas diferentes, e um simples detalhe, é o estado que os WS mais param do país, eles param no minimo 1 vez por mês, mas, como eu digo a um amigo, eu tenho fé que eles um dia vão tirar os mulekes e vão colocar os profissionais pra trabalhar…
Mas, se tu conseguir cara, posta ai, vai ser uma ajuda e tanto, não só pra mim, mas, pra todos.
e ai Mackrophus blzeu vi o post do Alves.felipe , mais ai é foda vou ter que trocar tudo só por causa de um estado , PR ja foi o ultimo estado a se adequar as regras da versão 2.0 e quando muda tem regras totalmente diferente do restante dos estados vou verificar se arrumo uma maneira de funcionar via axis2 msm , qquer coisa post aqui os resultados dessa revolta rs
cara… na verdade é como o AGAraujo falou:
No meu caso, o problema era somente a versão do Xalan que ao fazer o parser ficava assim:
<nfeCabecMsg xmlns="{NS_WS_DA_SUA_UF}"> <enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"> <idLote>000001</idLote> <NFe> //foi removido aqui o xmlns <infNFe Id="NFe23110109146962000128550010000001001000001009" versao="2.00">O que fiz foi apenas adicionar no class path a ultima versao do Xalan para a versao 2.7.1, pois há relatos que existe um BUG na versão que vem com o JDK 1.6. Com ou sem BUG (mas parece que sim) a verdade é que resolveu.
t+
o problema esta na versão do Xalan… se conseguir “adaptar” essa lib para usar junto com o Axis2, acho que vai dar certo…
pq mesmo sem o Axis2, fazendo o envelope na “mão”, e sem a lib Xalan 2.7.1, da o mesmo erro para o PR, ou seja, fica sem o namespace.
e depois de adicionar a lib vai na boa…eu tive que arrancar o Axis2, pq deu conflito das lib. e agora estou criando o meu envelope e consumindo todos os WS com uma classe só.
entao alves.Felipe
até entendi a questão da lib Xalan, pois ela tem um bug sim que se vc tiver mais de 1 namespace igual ele sempre vai deixar o ultimo namespace mais a utilizção da lib só vem ao caso de vc querer modificar ou acessar o XML um exemplo é assinar o documento XML que ai eu tive q setar essa lib pois retirava o namespace do meu xml apos assinar o documento
na trasmissão nao estou usando essa lib pois nao faço modicações e nao perco os valores ja existentes do namespaces
entao alves.Felipe
na trasmissão nao estou usando essa lib pois nao faço modicações e nao perco os valores ja existentes do namespaces
vc conseguiu imprimir e envelope que o Axis2 gera? no meu caso depois que eu passava o xml pro axis2, na hora que ele montava o envelope, tirava o meu namespace…
na classe NfeRecepcao2Stub, no método nfeRecepcaoLote2(nfeDadosMsg7, nfeCabecMsg8);
mas se não perde os namespaces, então acho que vc descobrir um outro problema…
o trecho do meu codigo em que passo o xml para o nfeRecepcaoLote2()
ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(nfeDados);
NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados);
String http = Endereco(Integer.parseInt(cod_uf), tpAmb);
NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado, cabE);
até o ByteArray o xml está ok, dpois nao vi se o XMLStreamReader modificou o xml para mandar para nfeRecepcaoLote2()
vcs utilização no inicio do xml a tag <enviNFe …> ?
bem na verdade, o namespace sai quando ele faz o parse nesta linha
nfeDados
<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2\">
<enviNFe ....></nfeDadosMsg>
como vc exibe o xml dpois do parse ?
Pois é, Evandro, mesma coisa aqui.
AGAraujo, você testou todos em homologação ou em ambos os ambientes?
Só homologação!! Mas em geral, numca testei meu sistema para produção… Utilizo a premissa de que estando certo no ambiente de Homologação está certo em Produção e nunca tive problemas com isso. O meu sistema só entra em produção para meus clientes no final desse mês.
Mas já testei com o alves.felipe em Produção e tudo correu bem no PR e RS. Estou correto alves.felipe?
Mas já testei com o alves.felipe em Produção e tudo correu bem no PR e RS. Estou correto alves.felipe?
homologação por enquanto (PR e SVRS) … mas foi tranquilo…acredito que não va ter erros em produção
Em Produção (SVRS) eu estava usando o AXIS2
entao alves.Felipe
na trasmissão nao estou usando essa lib pois nao faço modicações e nao perco os valores ja existentes do namespaces
vc conseguiu imprimir e envelope que o Axis2 gera? no meu caso depois que eu passava o xml pro axis2, na hora que ele montava o envelope, tirava o meu namespace…
na classe NfeRecepcao2Stub, no método nfeRecepcaoLote2(nfeDadosMsg7, nfeCabecMsg8);mas se não perde os namespaces, então acho que vc descobrir um outro problema…
Na verdade não é bem assim alves.felipe e evandromib. Fiz teste simples aqui com o Axis e o problema é o mesmo… verifica direitinho!!! Não se apegue a importação com ferramentas de automação… precisa conferir se veio algo errado… é simples a conferência (desde que entenda de XML e WSDL).
Felipe se tiver comentado o código, pode mandá-lo inteirinho… sem problemas… acho que ajudará muito o pessoal…
Vou terminar uma versão simplificada que tenho de três projetos e passo para vocês, utilizando JWS, JAXB e DOM/SAX. Por enquanto podemos utilizar a versão de envio do Felipe!
Mas já testei com o alves.felipe em Produção e tudo correu bem no PR e RS. Estou correto alves.felipe?
homologação por enquanto (PR e SVRS) … mas foi tranquilo…acredito que não va ter erros em produção
Em Produção (SVRS) eu estava usando o AXIS2
Acabei de solicitar a um amigo um teste no Ambiente de Produção para o PR, RS e SP. Acredito que hoje a tarde teremos uma resposta mais precisa!
Mas já testei com o alves.felipe em Produção e tudo correu bem no PR e RS. Estou correto alves.felipe?
homologação por enquanto (PR e SVRS) … mas foi tranquilo…acredito que não va ter erros em produção
Em Produção (SVRS) eu estava usando o AXIS2Acabei de solicitar a um amigo um teste no Ambiente de Produção para o PR, RS e SP. Acredito que hoje a tarde teremos uma resposta mais precisa!
Sinto muito informar, mas todos os WS 2G de produção estão funcionando perfeitamente com a implementação testada no ambiente de homologação. (já testado em PR e RS e presumindo está só o filé em SP também).
Em outras palavras: precisa-se encontrar “o culpado” no seu (referência as pessoas que estão com erros) código.
A melhor maneira de fazer isto é explicar e em alguns casos, mostrar como está implementando e os erros. Depois a galera ajuda!!
t+
edit
Confirmado: SP também obteve sucesso.
Todos os testes foram realizado na função principal (envio de notas e consulta da nota)
AGAraujo ainda nao entendi aonde está o erro usando o axis2 para o PR , sendo que para todos os outros estados estão rodando a um bom tempo em homologação e produção
sabe me dizer o q o serviço do PR esta diferenciado do restante , será realmente só problema no namespace, ah realmente a necessidade de se trocar a atual rotina feita com axis2 por envelope:
o que é estranho pq se a solicitação que envio para sefaz com a nota estivesse fora do padrao ele nao retornaria um numero de recibo
e sim a msg 215 - falha no schema XML que é diferente tb da msg 225 - falha no schema do Lote XML e esse erro é uma má formaçao do documento dentro das tag …
a msg 215 - falha no schema XML é um retorno da consulta de Retorno e nao da transmissão do Lote
AGAraujo ainda nao entendi aonde está o erro usando o axis2 para o PR , sendo que para todos os outros estados estão rodando a um bom tempo em homologação e produção
sabe me dizer o q o serviço do PR esta diferenciado do restante , será realmente só problema no namespace, ah realmente a necessidade de se trocar a atual rotina feita com axis2 por envelope:
o que é estranho pq se a solicitação que envio para sefaz com a nota estivesse fora do padrao ele nao retornaria um numero de recibo
e sim a msg 215 - falha no schema XML que é diferente tb da msg 225 - falha no schema do Lote XML e esse erro é uma má formaçao do documento dentro das tag …
a msg 215 - falha no schema XML é um retorno da consulta de Retorno e nao da transmissão do Lote
Cabra,
perae deixa analisar o que “falou” agora.
Você tem software rodando para todos os estados em homologaçaõ e produção e só dá erro no PR?
Isto é na geração 2G?
Se for está muito estranho mesmo!!! Se você tem a mesma implementação, sem tirar nem por, rodando para os outros, isto está mais do que estranho, e não tem nada haver com Axis2.
No teste que fiz com o Axis o mesmo erro que dá no CE, dá no PR e RS (ambiente de homologação).
Então começo a pensar que não pode ser realmente a mesma implementação!!!
Faça assim… mostre como vc esta fazendo em um estado que dá certo e como está fazendo em um estado que não dá certo e vamos analisando… Meu tempo esta meio curto esses dias, mas vamos nos ajudando que dará certo.
Felipe se tiver comentado o código, pode mandá-lo inteirinho… sem problemas… acho que ajudará muito o pessoal…
Abri um novo tópico mostrando como consumir o WS.
segue http://www.guj.com.br/java/233399-nfe-v200—veja-como-consumir-o-ws/1#1201070
rs vc acabou de descobrir minha revolta rs
vou tentar explicar como esta rodando minha aplicação , eu uso a msm aplicação para clientes de qquer estado o que muda é q pego a UF do cliente e na função retorna qual o endereço (http) devo enviar NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado,cabE);
entao tenho a msm aplicação para qquer estado , do que me passaram aqui na empresa Ceara, Maranhao , Bahia , Minas - estao funcionando RS nao sei te dizer agora, nao fiz teste la o q me passaram de problema foi do PR
como o historico desse SEFAZ nao é dos melhores fico mais desconfiado ainda
rs vc acabou de descobrir minha revolta rsvou tentar explicar como esta rodando minha aplicação , eu uso a msm aplicação para clientes de qquer estado o que muda é q pego a UF do cliente e na função retorna qual o endereço (http) devo enviar
NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado,cabE);
entao tenho a msm aplicação para qquer estado , do que me passaram aqui na empresa Ceara, Maranhao , Bahia , Minas - estao funcionando RS nao sei te dizer agora, nao fiz teste la o q me passaram de problema foi do PR
como o historico desse SEFAZ nao é dos melhores fico mais desconfiado ainda
Então vamos fazer como o velho Jack… supondo que tudo este 100% e só mude a URL, mostre ai qual a saida do SOAP para um estado que está ok e a saída para um que não está.
Então AGAraujo, pelo que o evandromib falou ,ele não imprimiu o envelope antes de enviar, só antes de mandar pro parse…
faz assim evandromib, uma linha antes de chamar o stub.nfeRecepcaoLote2:
irá imprimir somente o xml como abaixo:
aqui ja da pra ver que vai dar pau. Mas pelo jeito PR é um dos poucos que validão o namespace no elemento NFe…
testa ai
bom nao entendi mto bem o q vc quer que eu mostre mais vamos la
envia a solicitação–
resposta da solicitação ja convertendo ela em DOM
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document docs = builder.parse(new InputSource(new StringReader([b]result.getExtraElement().toString()[/b])));
e verificar no docs o que veio na tag qual foi a ocorrencia ( tanto pra certo , como para errado )
Então AGAraujo, pelo que o evandromib falou ,ele não imprimiu o envelope antes de enviar, só antes de mandar pro parse…
faz assim evandromib, uma linha antes de chamar o stub.nfeRecepcaoLote2:irá imprimir somente o xml como abaixo:
aqui ja da pra ver que vai dar pau. Mas pelo jeito PR é um dos poucos que validão o namespace no elemento NFe…
testa ai
Bom… se o problema for apenas esse você já deu a solução… O estranho é funcionar em outros estados com este erro… pois é uma norma a implementação da validação desse campo. Em outras palavras, teria que dar erro em todos os WS. Deixa ele se explicar então…
Vou ter que sair daqui a 30 minutos e ai, possivelmente, só a semana que vem… Depois postem ai qual era realmente o erro e a solução para eu poder acompanhar e fazer o registro… Se for como Felipe disse, a solução já foi postada!
t+
Bom… se o problema for apenas esse você já deu a solução… O estranho é funcionar em outros estados com este erro… pois é uma norma a implementação da validação desse campo. Em outras palavras, teria que dar erro em todos os WS. Deixa ele se explicar então…
Vou ter que sair daqui a 30 minutos e ai, possivelmente, só a semana que vem… Depois postem ai qual era realmente o erro e a solução para eu poder acompanhar e fazer o registro… Se for como Felipe disse, a solução já foi postada!t+
acredito que é… pq eu estava usando Axis2 para consumir a NFe 2.00 do SVRS… na verdade ainda esta rodando em produção…
mas ja arranquei o Axis2, mas ainda não coloquei em produção…
bom nao entendi mto bem o q vc quer que eu mostre mais vamos laenvia a solicitação–
resposta da solicitação ja convertendo ela em DOM
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document docs = builder.parse(new InputSource(new StringReader([b]result.getExtraElement().toString()[/b])));e verificar no docs o que veio na tag qual foi a ocorrencia ( tanto pra certo , como para errado )
O que estava falando era o conteúdo do SOAPMessage ou SAXSource ou JAXBElement de saída e entrada. Tipo:
//Envelope para saída e para entrada
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Header>
<nfeCabecMsg xmlns="{schemaURI}">
...
</nfeCabecMsg>
</Header>
<Body>
<nfeDadosMsg xmlns="{schemaURI}">
...
</nfeDadosMsg>
</Body>
</Envelope>
bom dever isso q o felipe disse msm , verifiquei dpois do parse e realmente tinha removido um namespace da tag
o que ocorre nos outros estados é que a verificação de namespace tem q estar pelo menos em umas das tag ou entao dpois do parse uma dessas duas tiver os WS aceitam e justamente o do PR se exige nas duas tag , tive um problema assim parecido na versao 1.10 mais era pq nao passa o namespace para a tag e realmente dava erro como agora ja estava passando ache q nao estava removendo o parse justamente na hora de enviar o Lote , vou fazer algumas modificaçoes e posto o resultado mais tarde
valeu pessoal foi de grande valor a ajuda
Bom… se o problema for apenas esse você já deu a solução… O estranho é funcionar em outros estados com este erro… pois é uma norma a implementação da validação desse campo. Em outras palavras, teria que dar erro em todos os WS. Deixa ele se explicar então…
Vou ter que sair daqui a 30 minutos e ai, possivelmente, só a semana que vem… Depois postem ai qual era realmente o erro e a solução para eu poder acompanhar e fazer o registro… Se for como Felipe disse, a solução já foi postada!t+
acredito que é… pq eu estava usando Axis2 para consumir a NFe 2.00 do SVRS… na verdade ainda esta rodando em produção…
mas ja arranquei o Axis2, mas ainda não coloquei em produção…
Só para lembrar: o serviço do RS é implementado em .NET, bem como o de outros estado, assim como o do PR é em Java. Os erros de comunicação podem ser os mais diferentes possíveis, inclusive o de incompatibilidade.
O que quero dizer é: apesar de na teoria não haver diferença, pois trata-se de comunicação independente de plataforma, a implementação real dos serviços são diferentes, sendo que existem diferenças entre como o Glassfish, o JBOSS (Apache) e o IIS recebem uma mensagem SOAP e a entrega para a aplicação servidora processar estes dados (o tal do binding). Porém se você tentar fazer o mais simples possível (apenas como manda o figurino), por exemplo, como uma aplicação PHP faz, o recebimento será sempre o mesmo, e possívelmente, para o qual eles realmente estão preparados. E a única maneira de saber se o código está indo 100% simples é lendo o SOAPMessage.
Só como exemplo: meu sistema enviava para o Ceará sem os namespace corretos na versão 1.10 e funcionava tranquilo… por que??
Imagino que era porque eu usava a mesma tecnlogia deles (apenas uma hipotese), já uma outra empresa aqui que implementava em C# não conseguia… Lei de Murph eu acho!!
Retorno do Ceara (WS2G)
X-Powered-By Servlet/2.5
Server Sun GlassFish Enterprise Server v2.1
Content-Type text/html; charset=iso-8859-1
Content-Length 0
Date Wed, 16 Feb 2011 18:06:29 GMT
Retorno do Parana
Server Apache-Coyote/1.1
X-Powered-By Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Content-Type text/xml
Transfer-Encoding chunked
Date Wed, 16 Feb 2011 18:02:25 GMT
Retorno do Rio Grande do Sul
Date Wed, 16 Feb 2011 18:05:09 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
X-AspNet-Version 2.0.50727
Cache-Control private, max-age=0
Content-Type text/xml; charset=utf-8
Content-Length 3224
Bom dia Galera
Bom como eu prometi Resolvi o probleminha de 215 - Falha no schema XML que ocorre no SEFAZ do PR sem precisar mudar minha aplicação para SAX conforme postado pelo alves.Felipe neste topico
no meu codigo antigo fazia do seguinte modo
String nfeDadosMsg = arq_xml; // a variavel arq_xml é o XML "073012-160211-env-lot.xml" + as tag <nfeDadosMsg>
ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source);
NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados);
String http = Endereco(Integer.parseInt(cod_uf), tpAmb);
NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado, cabE);
nessa rotina se perdia o atributo "xmlns=“http://www.portalfiscal.inf.br/nfe” da tag
neste trecho do codigo = ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
para corrigir o codigo ficou assim
DocumentBuilderFactory factoryy = DocumentBuilderFactory.newInstance();
factoryy.setNamespaceAware(false);
DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
Document docs_uf = bf.newDocumentBuilder().parse(new InputSource(new StringReader(arq_xml)));
Source source = new DOMSource(docs_uf);
// ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source);
NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados);
String http = Endereco(Integer.parseInt(cod_uf), tpAmb);
NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado, cabE);
criei um Document da String arq_xml e usei DOMSource ao inves de ByteArrayInputStream
e resolvi a questão da perda do namespace , transmitir a nota e consegui o retorno desejado ( 100 - Autorizado o uso da NF-e )
bom antes de terminar gostaria de agradecer principalmente a alves.Felipe , AGAraujo pela troca de informaçoes
espero q ajude a todos
abraço
fala evandromib…
muito bom… agora com tantas opções, só não faz quem não quer 
faro
e ai evandromib…
Cara, voce me fez ficar com muito raiva…
Quando eu abandonei o uso do axis2 eu só não tinha feito essa linha…
Source source = new DOMSource(docs_uf);
Mas, ta legal, velho, se continuar assim o mestre Yoda perde o lugar…
Abraço…
é Mackrophus só de pensar em ter q mudar td ja estava ficando com mta raiva rsrs
mais blz , 1 problema a menos e q venha os proximos ( e vao vir concerteza rs)
e ai evandromib…Cara, voce me fez ficar com muito raiva…
Quando eu abandonei o uso do axis2 eu só não tinha feito essa linha…
Source source = new DOMSource(docs_uf);Mas, ta legal, velho, se continuar assim o mestre Yoda perde o lugar…
Abraço…
Estou de viagem, mas não resisti a curiosidade de ver como resolveram… e adorei a resposta!!!
Cara pelo que vi você resolveu um problema de compatibilidade entre o cliente e o servidor e não o que seria enviado no SOAPMessage… Isso é demais… só mostra o quanto a SEFAZ ainda tem que evoluir!
Minha hipotese é: Por traz dos bastidores o DOM resolve para vc um schema compatível como o do servidor do Paraná, já que lá é AXIS e você também esta usando um cliente AXIS!! Provavelmente lá utiliza-se de DOM para recuperar os dados e como vc enviou com DOM, deu certinnn, certinnn!!! Cara, muito show mesmo!
Até a próxima!!!
Pessoal … to com uma seguinte duvida
aqui na empresa compramos um certificado A3 token da serasa
instalei. tudo certinho
mas as minhas buscas no forum… fala que pro certificado a3 tem que gerar um arquivo token.cfg
contendo o caminho da dll do token
mas ai é que ta o problema… o meu certificado não mandou dll nenhuma pro windows/system32/
o que eu faço??
e ai dudu_sps…
Cara seguinte…
Verifica se tem um programa de instalação do token, é muito provavel que essa dll esteja la no programa, qualquer coisa passa o modelo do token que eu do uma olhada…
…
mas as minhas buscas no forum… fala que pro certificado a3 tem que gerar um arquivo token.cfg
contendo o caminho da dll do tokenmas ai é que ta o problema… o meu certificado não mandou dll nenhuma pro windows/system32/
No próprio software de administração do token diz qual o provedor do pkcs11.
Se você adquiriu um token na Serasa, então ele deve ser Safenet e seu pkcs11.cfg deve ser assim:
name=eToken
library=c:\windows\system32\dkck201.dll
disabledMechanisms = {
CKM_SHA1_RSA_PKCS
}
Alencar
ai pra voce assinar é assim...
Provider p = new sun.security.pkcs11.SunPKCS11("C:/aplicacao/conf/token.cfg");
Security.addProvider(p);
KeyStore ks = null;
try {
ks = KeyStore.getInstance("PKCS11");
} catch (KeyStoreException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try {
//ks.load(null, "safeweb".toCharArray());
ks.load(null, Utilitario.senhaCertCli().toCharArray());
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Enumeration<String> aliasesEnum = null;
try {
aliasesEnum = ks.aliases();
} catch (KeyStoreException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String alias = "";
String aliasUso = "";
while (aliasesEnum.hasMoreElements()) {
alias = (String) aliasesEnum.nextElement();
System.out.println("alias " + alias);
try {
if (ks.isKeyEntry(alias)) {
aliasUso = alias;
break;
}
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
KeyStore.PrivateKeyEntry keyEntry = null;
try {
keyEntry = (PrivateKeyEntry) ks.getEntry(aliasUso, new KeyStore.PasswordProtection(Utilitario.senhaCertCli().toCharArray()));
} catch (NoSuchAlgorithmException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (UnrecoverableEntryException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (KeyStoreException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
@SuppressWarnings("unused")
X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
System.setProperty("javax.net.ssl.keyStoreType", ks.getType());
System.setProperty("javax.net.ssl.keyStore", "NONE");
//Essa informação vc tem que pegar do cartão, senão da erro e não abre.
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-eToken");
System.setProperty("javax.net.ssl.keyStorePassword", Utilitario.senhaCertCli());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", nfe.keystore);//Aqui vem o arquivo criado através do comando keytool no passo 3
System.setProperty("javax.net.ssl.trustStorePassword", "senha");//Aqui a senha deste keystore
Seria legal voce juntar o primeiro script que passei pra buscar o certificado do sefaz, com esse, pq ai fica tudo automatico.
Espero ter ajudado...
Abraço.
cara… deu certo o caminho da dll
e muito obrigado por ter ajudado 
blz, cara,
Qualquer coisa, posta ai…
Abraço.
olá!
estou com problemas para autorizar notas na sefaz do PR.
recebo o erro 215 - Falha no schema xml.
pesquisando por este erro achei dicas aqui no forum, mais específico o código do amigo evandromib.
estou tentando usar o código mas estou recebendo o erro:java.lang.UnsupportedOperationException: Cannot create XMLStreamReader or XMLEventReader from a javax.xml.transform.dom.DOMSource
at com.sun.xml.internal.stream.XMLInputFactoryImpl.jaxpSourcetoXMLInputSource(XMLInputFactoryImpl.java:302)
at com.sun.xml.internal.stream.XMLInputFactoryImpl.createXMLStreamReader(XMLInputFactoryImpl.java:145)
este erro está na linha XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source);:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
Document docDados = bf.newDocumentBuilder().parse(
new InputSource(new StringReader(_nfeDadosMsg)));
Source source = new DOMSource(docDados);
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source);
NfeRecepcao2Stub.NfeDadosMsg dadosMsg = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados);
NfeRecepcao2Stub.NfeCabecMsg cabecMsg = new NfeRecepcao2Stub.NfeCabecMsg();
cabecMsg.setCUF(COD_UF);
cabecMsg.setVersaoDados(_versaoDados);
NfeRecepcao2Stub.NfeCabecMsgE cabecMsgE = new NfeRecepcao2Stub.NfeCabecMsgE();
cabecMsgE.setNfeCabecMsg(cabecMsg);
NfeRecepcao2Stub stub = new NfeRecepcao2Stub();
return stub.nfeRecepcaoLote2(dadosMsg, cabecMsgE).getExtraElement().toString();
importei as bibliotecas do Axis2-1.5.2.
alguém sabe o que pode ser?
Obrigado!
Uma maneira um pouco diferente de resolver o problema com a linha
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);
try {
String nfeDadosMsg = "XML da NFe";
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
//Propriedade utilizada para manter o namespace <NFe xmlns="www.portalfiscal.inf.br/nfe" >
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new StringReader(nfeDadosMsg));
NfeRecepcao2Stub.NfeDadosMsg dadosMsg = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(xmlStreamReader);
NfeRecepcao2Stub stub = new NfeRecepcao2Stub(url);
NfeRecepcao2Stub.NfeRecepcaoLote2Result result = stub.nfeRecepcaoLote2(dadosMsg, nfeCabecMsgE);
String retorno = result.getExtraElement().toString();
}catch (FactoryConfigurationError e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Testes feitos e retorno status 100 - Autorizado o uso da NF-e
Abraços
legal!
bem simples e funcionou!
vlw
E ai galera blz
Bom sei o q assunto nao tem mto a haver com o Assunto do Forum ,mais pesquisei e não estou encontrando mta informação a respeito e creio que a maioria aqui utiliza o IREPORT para gerar a Danfe e um XML com base para o relatorio minha duvida é o seguinte
fugindo um pouco da danfe , eu tenho outros relatorios que são gerados no msm padrao da DANFE , qria saber se alguem sabe uma maneira de deixar a geraçao do relatorio mais rapida, tendo em vista que meu xml possui mais de 10000 registros
Ex:
<det nItem='1' >
<registros>
<codPrk>002102</codPrk>
<descPrk>FITA ACO 0.2X115MM 1075 TEMP/REV DUR.</descPrk>
<unidPrk>KG</unidPrk>
<estqAtualPrk>17.00000</estqAtualPrk>
<valunit>7.46200</valunit>
<valTot>126.85</valTot>
<denComplPrk>540/580HV</denComplPrk>
</registros>
</det>
<det nItem='2' >
<registros>
<codPrk>002103</codPrk>
<descPrk>FITA ACO 0.2X150MM 1075 TEMP/REV DUR.</descPrk>
<unidPrk>KG</unidPrk>
<estqAtualPrk>40.00000</estqAtualPrk>
<valunit>14.92400</valunit>
<valTot>596.96</valTot>
<denComplPrk>540/580HV</denComplPrk>
</registros>
</det>
ja fiz algumas mudanças referentes a utilização do hashmap() , consegui baixar o tempo do processamento mais ainda esta mto alto
se alguem souber de alguma dica que posso aplicar será de bom proveito blz
vlw
Olá evandromib…
Cara, seguinte, eu aqui tenho um relatorio de notas que já ta batendo as 20000, e pra resolver o problema eu criei uma view, e quando preciso fazer a consulta, já faço direto na view, no meu caso ajudou e muito.
Abraço e espero ter ajudado.
E ai galera blz
Bom sei o q assunto nao tem mto a haver com o Assunto do Forum ,mais pesquisei e não estou encontrando mta informação a respeito e creio que a maioria aqui utiliza o IREPORT para gerar a Danfe e um XML com base para o relatorio minha duvida é o seguintefugindo um pouco da danfe , eu tenho outros relatorios que são gerados no msm padrao da DANFE , qria saber se alguem sabe uma maneira de deixar a geraçao do relatorio mais rapida, tendo em vista que meu xml possui mais de 10000 registros
Ex:
<det nItem='1' > <registros> <codPrk>002102</codPrk> <descPrk>FITA ACO 0.2X115MM 1075 TEMP/REV DUR.</descPrk> <unidPrk>KG</unidPrk> <estqAtualPrk>17.00000</estqAtualPrk> <valunit>7.46200</valunit> <valTot>126.85</valTot> <denComplPrk>540/580HV</denComplPrk> </registros> </det> <det nItem='2' > <registros> <codPrk>002103</codPrk> <descPrk>FITA ACO 0.2X150MM 1075 TEMP/REV DUR.</descPrk> <unidPrk>KG</unidPrk> <estqAtualPrk>40.00000</estqAtualPrk> <valunit>14.92400</valunit> <valTot>596.96</valTot> <denComplPrk>540/580HV</denComplPrk> </registros> </det>ja fiz algumas mudanças referentes a utilização do hashmap() , consegui baixar o tempo do processamento mais ainda esta mto alto
se alguem souber de alguma dica que posso aplicar será de bom proveito blz
vlw
Bom dia,
Não sou muito fã do IReporter e utilizo o JFreeReporter, mas independente disto acredito que o problema de performance esta ligado ao algoritmo de carrgamento do XML com tanto registros, afinal isto tem um consumo de memoria e de recursos considerável e pode ser muito maior dependendo de como vc trabalha…
No meu caso eu não tenho nenhum problema quanto a isto… Por isto, para falar a verdade, nem entendi pq vc deseja ver 10mil registro de uma única vez… Na verdade, nem conheço nenhum estudo de caso que se aproxime disso! Se é para imprimir o 10mil registro existe uma estratégia de envio assincrono e paginado que pode ajudar a reduzir o tamanho do arquivo enviado para a impressora e ter um maior controle do que foi concluido na impressao ou não…
Fora este caso, que consome muito recurso, mas nem de longe utiliza 10mil de uma única vez, não vejo a necessidade de trabalhar com tantos registros.
Assim a única dica que posso te dar é: reveja essa necessidade. Caso ela realmente exista, então explica melhor o caso que o pessoal que entende mais de IReporter pode ajudar.
Abração e boa sorte!
Boa tarde
Mackrophus os view que vc usa é do SQL ?
AGAraujo é que esse relatorio é um inventario de produtos , tenho clientes q a base chega ter 70000 registro qdo puxa esse relatorio
na minha base estava fazendo teste com 11000 registro e tava levando certa de 45 a 50 minutos mto tempo para um relatorio
fiz algumas mudanças em relação a geração e tive um melhora significativa mais com registros até 4000 acima disso se torna mto demorado a geração , utilizei uns metodos do jasper para relatorios mto grande jrfilevirtualizer mais em performace nao mudou praticamente em nd , mais blz obrigado pela dicas ja falei aqui se quizer relatorio grafico vai ter q esperar se tiver com pressa imprime a versao TXT (sai em menos de 20 segundos rs)
Olá pessoal,
Estou enviando a nfe mas me retorna : Rejeicao: Assinatura difere do calculado
Eu noto que o xml da nfe tem uma tag e quando eu assino, o espaço some ficando assim .
Entao quando eu transformo o xml pra envio, o espaço volta e provavelmente deixa a assinatura inválida.
Meu envio:
try {
NfeRecepcao2Stub stubRecepcao = new NfeRecepcao2Stub();
NfeRecepcao2Stub.NfeDadosMsg dadosRecepcao = new NfeRecepcao2Stub.NfeDadosMsg();
TEnviNFe env = new TEnviNFe();
env.setIdLote("39");
env.setVersao("2.00");
env.getNFe().add(nfe);
OMElement el = AXIOMUtil.stringToOM(enviNFeToString(env));
el.declareNamespace("","ns2");
el.build();
dadosRecepcao.setExtraElement(el);
NfeRecepcao2Stub.NfeCabecMsgE cabecalho = new NfeRecepcao2Stub.NfeCabecMsgE();
cabecalho.setNfeCabecMsg(getCabecalho());
NfeRecepcaoLote2Result r = stubRecepcao.nfeRecepcaoLote2(dadosRecepcao, cabecalho);
TRetEnviNFe res = retEnviNFeStringToTRetEnviNFe(r.getExtraElement().toString());
return res;
} catch (AxisFault e) {
throw new NfeException(e);
} catch (RemoteException e) {
throw new NfeException(e);
} catch (XMLStreamException e) {
throw new NfeException(e);
}
e minha assinatura. (Assina uma String, não um arquivo).
try {
String tag = "";
if (operacao.equals("1")) {
tag = "infNFe";
} else if (operacao.equals("2")) {
tag = "infCanc";
} else if (operacao.equals("3")) {
tag = "infInut";
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
DocumentBuilder builder;
builder = factory.newDocumentBuilder();
Document docs = factory.newDocumentBuilder().parse(new ByteArrayInputStream(arquivoXML.trim().getBytes("UTF8"))); /// aqui
System.out.println("DOCS "+docs.getTextContent());
NodeList elements = docs.getElementsByTagName(tag);
Element el = (Element) elements.item(0);
String id = el.getAttribute("Id");
String providerName = System.getProperty(PROVIDER_NAME,
PROVIDER_CLASS_NAME);
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance());
ArrayList transformList = new ArrayList();
TransformParameterSpec tps = null;
Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED, tps);
Transform c14NTransform = fac.newTransform(C14N_TRANSFORM_METHOD, tps);
transformList.add(envelopedTransform);
transformList.add(c14NTransform);
Reference ref = fac.newReference("#" + id, fac.newDigestMethod(DigestMethod.SHA1, null), transformList, null, null);
SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref));
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(new FileInputStream(arquivoCertificado), password.toCharArray());
Enumeration aliasesEnum = ks.aliases();
String alias = "";
while (aliasesEnum.hasMoreElements()) {
alias = (String) aliasesEnum.nextElement();
if (ks.isKeyEntry(alias)) {
break;
}
}
KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(password.toCharArray()));
X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
KeyInfoFactory kif = fac.getKeyInfoFactory();
List x509Content = new ArrayList();
x509Content.add(cert);
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = factory.newDocumentBuilder().parse(new ByteArrayInputStream(arquivoXML.trim().getBytes("UTF8")));
DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(), doc.getDocumentElement());
XMLSignature signature = fac.newXMLSignature(si, ki);
signature.sign(dsc);
StringWriter os = new StringWriter();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
System.out.println(">> "+doc.getNodeValue());
System.out.println(">> "+new DOMSource(doc).FEATURE);
trans.transform(new DOMSource(doc), new StreamResult(os));
NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS,"Signature");
if (nl.getLength() == 0) {
throw new NfeException("Não foi possÃvel encontrar o elemente Signature");
}
DOMValidateContext valContext = new DOMValidateContext(
new X509KeySelector(ks), nl.item(0));
XMLSignature signatures = fac.unmarshalXMLSignature(valContext);
boolean coreValidity = signatures.validate(valContext);
if (coreValidity == false) {
System.err.println("Falha na Assinatura!");
} /*else {
System.out.println("Assinatura Correta!");
}*/
return os.toString();
} catch (TransformerException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (MarshalException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (XMLSignatureException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (UnrecoverableEntryException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (CertificateException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (KeyStoreException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (InvalidAlgorithmParameterException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (InstantiationException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (IllegalAccessException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (SAXException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (IOException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (ParserConfigurationException ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
} catch (Exception ex) {
ex.printStackTrace();
throw new NfeException(ex.getMessage());
}
Como eu posso assinar sem tirar aquele espaço na tag?
Obrigado,
Giovani
Ola evandromib
Cara, são sim, eu tenho as views prontas e ela agilizam um monte o processamento, visto que as seleções já ficam precarregadas no banco, exemplo…
Eu tenho um relatorio de vendas, onde eu tenho que fazer a busca do pedido, do cliente do pedido, do transportador e etc… antes eu fazia a seleção direto no sql do iReport, ai demorava pacas… depois de ler sobre as views começei a utilizar e meus relatorios são quase instantaneos agora…
Da uma olhada em views.
gente.. estou com algumas dúvidas bem dificeis
vamos la...
consegui gerar os xmls e assinar!
certificado A3
mas.. agora não sei como faz pra consumir o web service
achei aqui no forum um codigo asism
package webService;
import java.security.Security;
import br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico2.NfeStatusServico2Locator;
import br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico2.NfeStatusServico2Soap12;
public class Teste {
public static void main(String[] args)
{
try {
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");//Aqui a senha deste certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "D:/VipSystem/certificados/keystore.jks");
NfeStatusServico2Locator locator = new NfeStatusServico2Locator();
NfeStatusServico2Soap12 service = locator.getNfeStatusServico2Soap12();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ja gerei as classes a partir do wsdl do web Service
e o codigo acima gera o seguinte
WARN (org.apache.axis.utils.JavaUtils:1308) - Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
procurei na internet.. alguns falam algo de axis!
oque eu faço com o axis??
sistema desktop
muito obrigado
Alguem ja recebeu este erro:
O arquivo XML tem mais de 1 mb. Alguem sabe onde eu configuro o Axis2 para aumentar esse tamanho.
Alguem ja recebeu este erro:O arquivo XML tem mais de 1 mb. Alguem sabe onde eu configuro o Axis2 para aumentar esse tamanho.
Esqueçam minha pergunta acima, achei no manual de integração uma validação onde o arquivo pode ter no máximo 500kb
e ae gente!
vim agradecer as dicas ae do evandromib, Mackrophus e do AGAraujo sobre a questão de erros de envio de nfe para os servidores de homologacao 2.0 do Paraná.
Aqui na empresa a gente também estava com os mesmos problemas de Falha de Schema XML, e não tinhamos nem idéia no que era pq os XMLs passavam no validador do SEFAZ.
Obrigado mesmo!! As dicas de vcs funcionaram direitinho!!
Espero que outros possam ser beneficiados por esse tópico como eu fui.
Abraços a todos e mais uma vez obrigado!
e ae gente!vim agradecer as dicas ae do evandromib, Mackrophus e do AGAraujo sobre a questão de erros de envio de nfe para os servidores de homologacao 2.0 do Paraná.
Aqui na empresa a gente também estava com os mesmos problemas de Falha de Schema XML, e não tinhamos nem idéia no que era pq os XMLs passavam no validador do SEFAZ.Obrigado mesmo!! As dicas de vcs funcionaram direitinho!!
Espero que outros possam ser beneficiados por esse tópico como eu fui.
Abraços a todos e mais uma vez obrigado!
e quais foram as descobertas do porque não estava dando certo??
Pessoal, estou pra lá de irritado com algumas picuinhas na validação da NFe na SEFAZ e gostaria de
trocar umas idéias com a lista.
Sei que tem gente da SEFAZ que acompanha as discussões. Minha esperança é que eles se manifestem,
pelo manos pra explicar o porque.
Passei por dois casos na SVRS, onde na tag , o meu cliente colocou assim: “uma descricao qualquer Fab:” e
em outro caso assim: “uma descricao qualquer =”.
Observem o sinal de : e = no final da descrição.
Para meu espanto, a SEFAZ retornava que a assinatura diverge do calculado!!!
Foi só tirar os : e = da descrição e reenviar que tudo passou.
Pergunto: Não temos mais liberdade de escrever o que se precisa numa NFe, emum campo teoricamente livre???
Quais outras “regras” não são permitidas nas observações?
Fico por aqui na esperança de alguém me explicar algo sensato.
Alencar
algo sensato… eles estão $%gando e andando pros desenvolvedores.
pra eles, sempre nós é que estamos errados.
gente.. ja to em uma novela com esse lance de web service
to fazendo isso oh
package webService;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security;
import java.security.cert.CertificateException;
import java.util.Enumeration;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
/**
*
* @author diego
*/
public class Teste {
public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, CertificateException {
StringBuffer soapMessage = new StringBuffer();
soapMessage.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<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\">")
.append("<soap12:Header>")
.append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
.append("<versaoDados>1.07</versaoDados>")
.append("<cUF>35</cUF>")
.append("</nfeCabecMsg>")
.append("</soap12:Header>")
.append("<soap12:Body>")
.append("<nfeStatusServicoNF2 xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
.append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<consStatServ versao=\"1.07\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.portalfiscal.inf.br/nfe\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<versao>1.07</versao>")
.append("<tpAmb>2</tpAmb>")
.append("<cUF>35</cUF>")
.append("<xServ>STATUS</xServ>")
.append("</consStatServ>")
.append("</nfeDadosMsg>")
.append("</nfeStatusServicoNF2>")
.append("</soap12:Body>")
.append("</soap12:Envelope>");
metodo2(soapMessage.toString(), "https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx");
}
public static void metodo2(String envelope, String urlAddress) {
try {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage message;
try {
Provider p = new sun.security.pkcs11.SunPKCS11("certificados/token.cfg"); // exemplo "C:\\NFE\\token.cfg"
try {
Security.addProvider(p);
char[] pin = "senha".toCharArray();// senha do certificado a3
Security.getProviders();
KeyStore keyStore = KeyStore.getInstance("PKCS11", p);
keyStore.load(null, pin);
System.out.println("KeyStore: " + keyStore + " - ");
Enumeration aliasesEnum = keyStore.aliases();
String alias = "";
while (aliasesEnum.hasMoreElements()) {
alias = (String) aliasesEnum.nextElement();
if (keyStore.isKeyEntry(alias)) {
System.out.println("Alias Cert: " + alias);
break;
}
}
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");//Aqui a senha deste certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "D:/VipSystem/certificados/keystore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
MimeHeaders header = new MimeHeaders();
header.addHeader("Content-Type", "application/soap+xml");
message = factory.createMessage(header, new ByteArrayInputStream(envelope.getBytes()));
SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
URL url = new URL(urlAddress);
System.out.println("Message enviada \n"+message.toString());
SOAPMessage res = con.call(message, url);
ByteArrayOutputStream in = new ByteArrayOutputStream();
message.writeTo(in);
System.out.println("in :\n"+in.toString());
ByteArrayOutputStream out = new ByteArrayOutputStream();
res.writeTo(out);
System.out.println("out :\n"+desnormalizar(out.toString()));
} catch (Exception e) {
e.printStackTrace();
try {
throw new KeyStoreException("Não foi possivel inicializar a API Sun PKCS#11 security. Motivo: " + e.getCause().getMessage());
} catch (KeyStoreException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} finally {
}
} catch (SOAPException ex) {
System.out.println("" + ex.getMessage());
}
}
public static String desnormalizar(String texto) {
return texto.replace("<", "<").replace(">", ">").replace("''", "\"").replace(" ", "\r");
}
}
e o resultado é este
Message enviada
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@e0a386
02/03/2011 12:31:56 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0009: Message send failed
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at webService.Teste.metodo2(Teste.java:87)
at webService.Teste.main(Teste.java:53)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at java.security.AccessController.doPrivileged(Native Method)
... 3 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at javax.net.ssl.DefaultSSLSocketFactory.throwException(Unknown Source)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.createSocket(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(Unknown Source)
... 6 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at javax.net.ssl.SSLContext.getInstance(Unknown Source)
at javax.net.ssl.SSLContext.getDefault(Unknown Source)
at javax.net.ssl.SSLSocketFactory.getDefault(Unknown Source)
at com.sun.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(Unknown Source)
at com.sun.net.ssl.HttpsURLConnection.<init>(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.<init>(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source)
at java.net.URL.openConnection(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.createConnection(Unknown Source)
... 6 more
Caused by: java.lang.IllegalArgumentException: if keyStoreType is PKCS11, then keyStore must be NONE
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(Unknown Source)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 19 more
CAUSE:
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at webService.Teste.metodo2(Teste.java:87)
at webService.Teste.main(Teste.java:53)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at javax.net.ssl.DefaultSSLSocketFactory.throwException(Unknown Source)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.createSocket(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(Unknown Source)
... 6 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at javax.net.ssl.SSLContext.getInstance(Unknown Source)
at javax.net.ssl.SSLContext.getDefault(Unknown Source)
at javax.net.ssl.SSLSocketFactory.getDefault(Unknown Source)
at com.sun.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(Unknown Source)
at com.sun.net.ssl.HttpsURLConnection.<init>(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.<init>(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source)
at java.net.URL.openConnection(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.createConnection(Unknown Source)
... 6 more
Caused by: java.lang.IllegalArgumentException: if keyStoreType is PKCS11, then keyStore must be NONE
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(Unknown Source)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 19 more
CAUSE:
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at webService.Teste.metodo2(Teste.java:87)
at webService.Teste.main(Teste.java:53)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at javax.net.ssl.DefaultSSLSocketFactory.throwException(Unknown Source)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.createSocket(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(Unknown Source)
... 6 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at javax.net.ssl.SSLContext.getInstance(Unknown Source)
at javax.net.ssl.SSLContext.getDefault(Unknown Source)
at javax.net.ssl.SSLSocketFactory.getDefault(Unknown Source)
at com.sun.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(Unknown Source)
at com.sun.net.ssl.HttpsURLConnection.<init>(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.<init>(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source)
at java.net.URL.openConnection(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.createConnection(Unknown Source)
... 6 more
Caused by: java.lang.IllegalArgumentException: if keyStoreType is PKCS11, then keyStore must be NONE
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(Unknown Source)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 19 more
java.security.KeyStoreException: Não foi possivel inicializar a API Sun PKCS#11 security. Motivo: null
at webService.Teste.metodo2(Teste.java:99)
at webService.Teste.main(Teste.java:53)
alguem pode me ajudar?
Boa tardeMackrophus os view que vc usa é do SQL ?
AGAraujo é que esse relatorio é um inventario de produtos , tenho clientes q a base chega ter 70000 registro qdo puxa esse relatorio
na minha base estava fazendo teste com 11000 registro e tava levando certa de 45 a 50 minutos mto tempo para um relatorio
fiz algumas mudanças em relação a geração e tive um melhora significativa mais com registros até 4000 acima disso se torna mto demorado a geração , utilizei uns metodos do jasper para relatorios mto grande jrfilevirtualizer mais em performace nao mudou praticamente em nd , mais blz obrigado pela dicas ja falei aqui se quizer relatorio grafico vai ter q esperar se tiver com pressa imprime a versao TXT (sai em menos de 20 segundos rs)
Bom dia!!!
Ok! Entendido…
Como eu disse, sobre o Jasper, fico quietinho só lendo!
Até a próxima!
Pessoal, estou pra lá de irritado com algumas picuinhas na validação da NFe na SEFAZ e gostaria de
trocar umas idéias com a lista.
Sei que tem gente da SEFAZ que acompanha as discussões. Minha esperança é que eles se manifestem,
pelo manos pra explicar o porque.
Passei por dois casos na SVRS, onde na tag , o meu cliente colocou assim: “uma descricao qualquer Fab:” e
em outro caso assim: “uma descricao qualquer =”.
Observem o sinal de : e = no final da descrição.
Para meu espanto, a SEFAZ retornava que a assinatura diverge do calculado!!!
Foi só tirar os : e = da descrição e reenviar que tudo passou.
Pergunto: Não temos mais liberdade de escrever o que se precisa numa NFe, emum campo teoricamente livre???
Quais outras “regras” não são permitidas nas observações?Fico por aqui na esperança de alguém me explicar algo sensato.
Alencar
Alencar,
Já vi tanta “bizarrisse” quanto esta a ponto de você enviar para um estado e funcionar e outro não… e alegação é de que o caractere é especial… Meu amigo, dede quando um “+” ou um “=” é um caractere especial? Desde quando um espaço a mais no texto de um nó é um caractere especial? Por que em alguns campos o nome acentuado passa e em outros não?
Não tive este problema (como o seu), mas sou capaz de apostar que se enviar para outro servidor (estado) será capaz de passar sem problema!
Cheguei a conclusão que algumas das validações são feitas por regex e cada servidor está fazendo o seu ao inves de compartilhar o mesmo (só pode ser!!).
Outro fato inusitado, e este tenho certeza, é o de que os servidores de aplicação utilizados, com as diversas tecnologias utilizadas, não produzem o mesmo resultado de recebimento. Isto fere TOTALMENTE a ideia de um WebService, pois a Sefaz saiu do padrão W3C para produção dos XMLs, fazendo aninhamento destes, porém não tratou como deveria o recebimento, deixando a cargo da tecnologia que não tem conhecimento da sua grande sabedoria. Ou seja, os XMLs saem desnormalizados do cliente, chegam no servidor são normalizados e geram um monte de errinho e o que eles fazem… liberam parte das validações não críticas, como por exemplo: um estado aceita “Ç” e outro não… Isto é coisa que se faça???
Já vi que isto consta no manual como sendo “não recomendado” (pág 163 do manual 4.01 - NT2009-006, item 4), apesar de ter dúvida do que seja caracteres especiais para a sefaz.
O problema é que o manual está parecendo sabonete de universitário… cheio de remendo, tikin de um com tikin de outro para ver se dá para ler.
Cara eu já perdi a paciência com a Sefaz, faz tempo!
O negócio agora é discutir com os colegar e buscar soluções… Se eles quiserem aprender algumas coisas, acho que aqui no GUJ ajudaria muito e muita gente aqui teria o prazer de contribuir!
gente.. ja to em uma novela com esse lance de web service...
e o resultado é este
Message enviada com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@e0a386 02/03/2011 12:31:56 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post SEVERE: SAAJ0009: Message send failed com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source) at webService.Teste.metodo2(Teste.java:87) at webService.Teste.main(Teste.java:53) Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed at java.security.AccessController.doPrivileged(Native Method) ... 3 more Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source) at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source) ... 4 more Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl) at javax.net.ssl.DefaultSSLSocketFactory.throwException(Unknown Source) at javax.net.ssl.DefaultSSLSocketFactory.createSocket(Unknown Source) at sun.net.www.protocol.https.HttpsClient.createSocket(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(Unknown Source) ... 6 more Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl) at java.security.Provider$Service.newInstance(Unknown Source) at sun.security.jca.GetInstance.getInstance(Unknown Source) at sun.security.jca.GetInstance.getInstance(Unknown Source) at javax.net.ssl.SSLContext.getInstance(Unknown Source) at javax.net.ssl.SSLContext.getDefault(Unknown Source) at javax.net.ssl.SSLSocketFactory.getDefault(Unknown Source) at com.sun.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(Unknown Source) at com.sun.net.ssl.HttpsURLConnection.<init>(Unknown Source) at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.<init>(Unknown Source) at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source) at com.sun.net.ssl.internal.www.protocol.https.Handler.openConnection(Unknown Source) at java.net.URL.openConnection(Unknown Source) at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.createConnection(Unknown Source) ... 6 more Caused by: java.lang.IllegalArgumentException: if keyStoreType is PKCS11, then keyStore must be NONE at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(Unknown Source) at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) ... 19 more ...alguem pode me ajudar?
Boa tarde...
Seu erro real é este:
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
Vamos por parte! Você está usando:
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");//Aqui a senha deste certificado
Sendo que "java.protocol.handler.pkgs" está repetida. Faça assim:
properties.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
properties.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
properties.setProperty("javax.net.ssl.keyStore","NONE");
properties.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SCR3310");
properties.setProperty("javax.net.ssl.keyStorePassword", "{sua senha}");
properties.setProperty("javax.net.ssl.trustStoreType", "JKS");
properties.setProperty("javax.net.ssl.trustStore", "{seu key store path}");
Veja o que acontece e poste o resultado, bem como o conteúdo do arquivo token.cfg!
…
O negócio agora é discutir com os colegar e buscar soluções… Se eles quiserem aprender algumas coisas, acho que aqui no GUJ ajudaria muito e muita gente aqui teria o prazer de contribuir!
Esta é a minha esperança ao postar meu desabafo aqui, que alguém do desenvolvimento da NFe explique para os mortais
o que é caracter especial e outras cositas más.
Não foi para encher os ouvidos dos colegas, pois todos passamos maus bocados com as esquisitices das SEFAZ.
Alencar
Pois é, ai os supervisores que entendem de tudo(na vdd não sabem m**** nenhuma) ficam achando que a gente fica enrolando, passeando de forum em forum, respondendo pergunta dos outros e não estamos procurando resolver o proprio problema, mas, enfim…
A esperança é a ultima que morre!!! to contigo Alencar, vamos ter fé e muuuuiiiiita paciencia.
ola amigos
nao consegui mais transmitir nfe, depois que saiu o certificado da caixa v1, baixei toda a cadeia de certificados, enfim tudo o que pede, o tamanho do certificado fica em 6,54 kb, mas hora de mandar da este erro, alguem pode me ajudar a achar uma solução para este problema?
att
manosulconta
xisFault
faultCode: {<a href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</a>}Server.userException
faultSubcode:
faultString: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
faultActor:
faultNode:
faultDetail:
{<a href="http://xml.apache.org/axis/">http://xml.apache.org/axis/</a>}stackTrace:javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at java.io.FilterOutputStream.flush(Unknown Source)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:506)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2110)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1088)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:196)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at br.gov.sp.fazenda.dsen.ws.status.NfeStatusServicoSoapStub.nfeStatusServicoNF(NfeStatusServicoSoapStub.java:107)
at br.gov.sp.fazenda.dsen.model.business.WSBusiness.f(WSBusiness.java:367)
at br.gov.sp.fazenda.dsen.model.business.WSBusiness.servico(WSBusiness.java:102)
at br.gov.sp.fazenda.dsen.model.business.util.ConsultaStatusServicoHelper.consultarStatusServico(ConsultaStatusServicoHelper.java:35)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.enviarLote(EnvioBusiness.java:261)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.CGLIB$enviarLote$0(<generated>)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f$$FastClassByCGLIB$$cfb97848.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at br.gov.sp.fazenda.dsge.model.dao.util.DSGEDAOInterceptorHelper.intercept(DSGEDAOInterceptorHelper.java:55)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.enviarLote(<generated>)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.fecharEnviarLote(EnvioBusiness.java:211)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.CGLIB$fecharEnviarLote$2(<generated>)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f$$FastClassByCGLIB$$cfb97848.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at br.gov.sp.fazenda.dsge.model.dao.util.DSGEDAOInterceptorHelper.intercept(DSGEDAOInterceptorHelper.java:66)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.fecharEnviarLote(<generated>)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.a(EnvioBusiness.java:146)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.montarLote(EnvioBusiness.java:104)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.CGLIB$montarLote$1(<generated>)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f$$FastClassByCGLIB$$cfb97848.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at br.gov.sp.fazenda.dsge.model.dao.util.DSGEDAOInterceptorHelper.intercept(DSGEDAOInterceptorHelper.java:66)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.montarLote(<generated>)
at br.gov.sp.fazenda.dsen.model.facade.DocumentoFacade.enviarLote(DocumentoFacade.java:546)
at br.gov.sp.fazenda.dsen.controller.EnviarNotaFiscalController$1.doInBackground(EnviarNotaFiscalController.java:128)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at java.io.FilterOutputStream.flush(Unknown Source)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at java.io.PrintWriter.flush(Unknown Source)
at java.io.BufferedWriter.flush(Unknown Source)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:270)
at org.apache.axis.Message.writeTo(Message.java:539)
at org.apache.axis.transport.http.CommonsHTTPSender$MessageRequestEntity.writeRequest(CommonsHTTPSender.java:841)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
… 47 more
{http://xml.apache.org/axis/}hostname:ELOI
javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:301)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at br.gov.sp.fazenda.dsen.ws.status.NfeStatusServicoSoapStub.nfeStatusServicoNF(NfeStatusServicoSoapStub.java:107)
at br.gov.sp.fazenda.dsen.model.business.WSBusiness.f(WSBusiness.java:367)
at br.gov.sp.fazenda.dsen.model.business.WSBusiness.servico(WSBusiness.java:102)
at br.gov.sp.fazenda.dsen.model.business.util.ConsultaStatusServicoHelper.consultarStatusServico(ConsultaStatusServicoHelper.java:35)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.enviarLote(EnvioBusiness.java:261)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.CGLIB$enviarLote$0()
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f$$FastClassByCGLIB$$cfb97848.invoke()
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at br.gov.sp.fazenda.dsge.model.dao.util.DSGEDAOInterceptorHelper.intercept(DSGEDAOInterceptorHelper.java:55)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.enviarLote()
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.fecharEnviarLote(EnvioBusiness.java:211)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.CGLIB$fecharEnviarLote$2()
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f$$FastClassByCGLIB$$cfb97848.invoke()
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at br.gov.sp.fazenda.dsge.model.dao.util.DSGEDAOInterceptorHelper.intercept(DSGEDAOInterceptorHelper.java:66)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.fecharEnviarLote()
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.a(EnvioBusiness.java:146)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness.montarLote(EnvioBusiness.java:104)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.CGLIB$montarLote$1()
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f$$FastClassByCGLIB$$cfb97848.invoke()
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at br.gov.sp.fazenda.dsge.model.dao.util.DSGEDAOInterceptorHelper.intercept(DSGEDAOInterceptorHelper.java:66)
at br.gov.sp.fazenda.dsen.model.business.EnvioBusiness$$EnhancerByCGLIB$$362b311f.montarLote()
at br.gov.sp.fazenda.dsen.model.facade.DocumentoFacade.enviarLote(DocumentoFacade.java:546)
at br.gov.sp.fazenda.dsen.controller.EnviarNotaFiscalController$1.doInBackground(EnviarNotaFiscalController.java:128)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at java.io.FilterOutputStream.flush(Unknown Source)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:506)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2110)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1088)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:196)
… 41 more
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at java.io.FilterOutputStream.flush(Unknown Source)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at java.io.PrintWriter.flush(Unknown Source)
at java.io.BufferedWriter.flush(Unknown Source)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:270)
at org.apache.axis.Message.writeTo(Message.java:539)
at org.apache.axis.transport.http.CommonsHTTPSender$MessageRequestEntity.writeRequest(CommonsHTTPSender.java:841)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
… 47 more
ola amigosnao consegui mais transmitir nfe, depois que saiu o certificado da caixa v1, baixei toda a cadeia de certificados, enfim tudo o que pede, o tamanho do certificado fica em 6,54 kb, mas hora de mandar da este erro, alguem pode me ajudar a achar uma solução para este problema?
…
A cadeia certificadora que está vindo nos smart cards da CEF estão errados.
Baixe e instale no cartão a nova cadeia. No site icp.caixa.gov.br
ainda não está disponível a nova cadeia, mas você poderá exportá-la do IE.
Fiz assim para resolver este rolo ai.
Alencar
o erro do certificado v1, que falei agora é pouco, é nos certicados a1 mesmo, não no certificado com cartão, baixei a cadeia de certificados que esta no site icp e instalei e mesmo deu aquele erro, que esta mencionado no outro texto anteriormente, varios clientes meus, tem o certificado da caixa anterior e todos estão funcionando perfeitamente, foi depois que saiu este v1, que o meio de campo embolou, porém estes erros estão acontecendo principalmente no emissor nfe da sefaz de sao paulo, teve um caso na semana passada, em que enviei o certificado por email para um programa pago e apesar de se baterem bastante consiguiram fazer funcionar, agora no emissor gratuito, a gente não a quem recorrer, por isso, peço uma opinião de todos que possa ajudar a resolver,
desde ja, obrigado pela atenção
manosulconta
cara pelo erro , qdo tive esses problemas com certificados A1 é o seguinte se alguem te passou esse certificado a1 exportando ele de algum lugar que estava instalado pode esquecer q nao funciona vc tem q pegar o original ( quem comprou deve ter) de uma olhada no tamanho certificados original tem acima de 6.5 kb e os certificados exportados do original tem no maximo 4 kb , e tb serve para certificados de web-services se voltar erro de SSL é td problema no certificado
o erro do certificado v1, que falei agora é pouco, é nos certicados a1 mesmo, não no certificado com cartão, baixei a cadeia de certificados que esta no site icp e instalei e mesmo deu aquele erro, que esta mencionado no outro texto anteriormente, varios clientes meus, tem o certificado da caixa anterior e todos estão funcionando perfeitamente, foi depois que saiu este v1, que o meio de campo embolou, porém estes erros estão acontecendo principalmente no emissor nfe da sefaz de sao paulo, teve um caso na semana passada, em que enviei o certificado por email para um programa pago e apesar de se baterem bastante consiguiram fazer funcionar, agora no emissor gratuito, a gente não a quem recorrer, por isso, peço uma opinião de todos que possa ajudar a resolver,desde ja, obrigado pela atenção
Para certificados A1 funciona assim: Você importa o certificado A1 no IE, marcando a opção de chave privada exportável.
Dae, confere em Opções de Internet, Conteúdo, Certificados, Pessoal. Lá estará o certificado do seu cliente.
Olhe a cadeia certificadora em Exibir, Caminho de certificação.
Confira em Autoridades de certificação intermediárias se os certificados da cadeia estão lá.
Se sim, exporte o certificado do seu cliente com a opção de Exportar a chave privada e Incluir todos os certificados no caminho de certificação.
Isso deve gerar um arquivo de +/- 7KB. Pronto. Sete este novo arquivo como sendo o certificado do seu cliente.
Alencar
Bom dia galera !!
Pesquisei todo o tópico, mas ainda estou com algumas duvidas.
Hj eu consigo consumir o WebService de Sp na versão 1.07.
Mas não estou conseguindo consumir o mesmo na versão 2.00
Segue meu código :
public static void main(String[] args) {
String nfeCabecMsg =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>"
+ "<cabecMsg xmlns=\"nfe/wsdl/NfeStatusServico2\" "
+ "versao=\"1.02\">" + "<versaoDados>2.00</versaoDados>"
+ "</cabecMsg>";
String nfeDadosMsg =
"<nfeDadosMsg><consStatServ versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ>"
+ "</consStatServ></nfeDadosMsg>";
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:/keystore/cebelo.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:/keystore/sp.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
NfeStatusServico2 service = new NfeStatusServico2();
try {
NfeStatusServico2Soap12 nfeStatus = service.getNfeStatusServico2Soap12();
[color=red] System.out.println(nfeStatus.nfeStatusServicoNF2(nfeCabecMsg, nfeDadosMsg));[/color]
} catch (Throwable e1) {
e1.printStackTrace();
Mas ta dando o seguinte erro na linha em Vermelho :
method nfeStatusServicoNF2 in interface br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2Soap12 cannot be applied to given types
Alguem ja passou por isso ??
a forma de comunicação com os webservices mudou.
não é mais através de simples Strings.
agora vc tem que enviar as Strings em mensagens SOAP.
da uma procurada nas mensagens antigas que vc vai ver exemplos de como enviar os xmls.
OK vou procurar !
Obrigado pela Atenção Rodrigo.
Pessoal desculpe pela pergunta, mas como estou no inicio em java ainda, existem varias duvidas.
Como comentei no tópico acima estou com dificuldades em cunsumir o webservice na versão 2.0, e pesquisando aqui no forum vi varias dicas falando referente a classe NfeStatusServico2Stub, mas oq seria esse Stub, pois crie minhas classes e é só NfeStatusServico2 ??
Ei galera, estou perdido em relação a consumir o WebService 2.0, ja não sei oq fazer mais !!
C alguem tiver algo p/ ajudar !!
Att
Rafael Colodo
Boa tarde,
Surgiu um problema aqu no meu sistema utilizando o JAXB. Quando eu executo:
marshaller.marshal(cancNFe, stringW);
Com um Objeto do tipo TCancNfe ele gera um XML que inicia em:
ou seja está com o NameSpace errado.
Como fazer para acerar isso? Obrigado.
Este tópico já possue a solução para estes problemas, sugiro da uma olhadinha nas últimas 5 páginas. pelo menos.
t+
Pessoal, sobre o CSOSN 900, conforme página 141 do manual 4.0.1-NT2009.006
na tag do grupo consta ICMSSN900, mas na tag N12a do item CSOSN consta conteúdo
90 e não 900. Inclusive o tamanho é N2.
Sabem dizer se foi erro no manual ou se o valor da tag CSOSN deve ser 90 mesmo?
Alencar
Como fazer para acerar isso? (rafaelbtz)Se vocC alguem tiver algo p/ ajudar !! (Colodo)
Este tópico já possue a solução para estes problemas, sugiro da uma olhadinha nas últimas 5 páginas. pelo menos.
t+
Olá AGAraujo !!
Ja consegui progredi bastante graças a ajuda desse tópico, e tambem a ajuda do Maciel pelo site http://www.javac.com.br.
Agora estou trabalhando em cima da validação do Xml, dei uma pesquisada por aqui e não encontrei nada, se alguem tiver algo p/ me ajudar, será bem vindo !
Agradeço a atenção de todos !
E se alguem precisar de algo é só falar, hj meu projeto está assinando, e consumindo o webservice de Sp.
Como fazer para acerar isso? (rafaelbtz)Se vocC alguem tiver algo p/ ajudar !! (Colodo)
Este tópico já possue a solução para estes problemas, sugiro da uma olhadinha nas últimas 5 páginas. pelo menos.
t+
Olá AGAraujo !!
Ja consegui progredi bastante graças a ajuda desse tópico, e tambem a ajuda do Maciel pelo site http://www.javac.com.br.
Agora estou trabalhando em cima da validação do Xml, dei uma pesquisada por aqui e não encontrei nada, se alguem tiver algo p/ me ajudar, será bem vindo !
Agradeço a atenção de todos !
E se alguem precisar de algo é só falar, hj meu projeto está assinando, e consumindo o webservice de Sp.
Se estiver falando de Validação exatamento como o Manual requer, tipo:
- verificar calculo de assinatura;
- verificar compatibilidade de CNPJ com o Certificado, etc…
Aqui não vi nada parecido. Para falar a verdade, acredito que quase ninguem faz todas estas validações. No meu caso eu trato todos os retornos com erros e apenas cuido das validações de saídas mais críticas ou que possam causar inconsistência com as informações vindas de outros softwares, por exemplo: o calculo dos itens é checado com o valor total da nota.
Se for dessas validações que está falando, vamos ver se mais alguém tem mais alguma sugestão.
t+
Pessoal, sobre o CSOSN 900, conforme página 141 do manual 4.0.1-NT2009.006
na tag do grupo consta ICMSSN900, mas na tag N12a do item CSOSN consta conteúdo
90 e não 900. Inclusive o tamanho é N2.Sabem dizer se foi erro no manual ou se o valor da tag CSOSN deve ser 90 mesmo?
Alencar
É 900. Pode verificar direto no XSD.
update
Para auxiliar no entendimento: http://www.spednews.com.br/07/2010/nfe-instituido-crt-codigo-de-regime-tributario-e-csosn-codigo-de-situacao-da-operacao-no-simples-nacional/
Aproveitando a deixa da NFe 2.0, estou com um problema aqui que tá complicado viu…
Já fiz tudo que está no manual, e para os estados de MG e SP já está tudo funcionando, está até em produção nos cliente já…
Acontece que preciso desenvolver também para Mato Grosso do Sul - MS.
A mesma rotina funciona para todos os estados, menos MS.
Quando tento simplesmente consultar o serviço me retorna o erro:
[color=red][size=18]gov.sefaz.nfe.commons.exception.ValidacaoAreaCabecalhoException[/size][/color]
Já revirei todos os foruns, google e tudo quanto é possível e não achei nada do tipo, parece que ninguem teve esse problema ainda…
acho estranho pois, teóricamente, o layout é um só para todos os estados, mas para MS não funciona…
Alguem tem alguma ideia do que pode ser? fico muito grato se puderem me ajudar pois tem dias que estou tentando e nada ainda…
Obrigado…
e ai galera blz
Colodo se tiver procurando validar o xml tenho esse codigo aqui , ele faz a msm coisa que o programa assinador RS ele verifica a estrutura do xml e informa aonde esta com erro
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.w3c.dom.Document;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
public class XMLXSDValidate implements ErrorHandler {
private String xmlInput;
private String xsdInput;
public XMLXSDValidate(String xmlInput, String xsdInput) {
this.xmlInput = xmlInput;
this.xsdInput = xsdInput;
}
public String getXmlInput() {
return xmlInput;
}
public void setXmlInput(String xmlInput) {
this.xmlInput = xmlInput;
}
public String getXsdInput() {
return xsdInput;
}
public void setXsdInput(String xsdInput) {
this.xsdInput = xsdInput;
}
private void validate() throws Exception {
try {
//Setting Xerces-J parser because the standard parser not recognize <import ...>
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
// Parse an XML document em um DOM tree.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false);
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(new File(xmlInput));
// Cria um SchemaFactory capaz de compreender WXS schemas.
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
// carrega um WXS schema, representada por uma instacia Schema.
Source schemaFile = new StreamSource(new File(xsdInput));
Schema schema = schemaFactory.newSchema(schemaFile);
// Cria um objeto Validator que pode ser usado para validar
// uma instancia document.
Validator validator = schema.newValidator();
validator.setErrorHandler(this);
// Valida o Dom tree
validator.validate(new DOMSource(document));
} catch (ParserConfigurationException e) {
throw new Exception(e.getMessage());
} catch (SAXException e) {
throw new Exception(e.getMessage());
} catch (IOException e) {
throw new Exception(e.getMessage());
}
}
@Override
public void error(SAXParseException exception) throws SAXException {
System.out.println("ERROR: " + exception.getLocalizedMessage());
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
System.out.println("FATAL: " + exception.getMessage());
}
@Override
public void warning(SAXParseException exception) throws SAXException {
System.out.println("WARNING: " + exception.getMessage());
}
public static void main(String[] args) {
/*
if(args.length != 1)
{
System.out.println("Sao esperados 1 parametros!");
return;
}
*/
// String arquivo_xml = args[1];
String arquivo_xml = "C://010541-200710-env-lot_sign.xml";
System.out.println(arquivo_xml);
XMLXSDValidate validate = new XMLXSDValidate(arquivo_xml,
"C:/NFE/PL_005c//enviNFe_v1.10.xsd");
try {
System.out.println("Iniciando Validação..");
validate.validate();
System.out.println("File '"+validate.getXmlInput()+"' validate sucessfull...");
} catch (Exception ex) {
System.out.println("File '"+validate.getXmlInput()+"' validate fail...");
ex.printStackTrace();
}
}
}
Bom queria saber de vcs , como vcs tratam as exceções dos web-services um exemplo no meu codigo coloquei
um try / catch no trecho q ele monta o soap e transmite a informação para o sefaz caso tenha alguma coisa errada me exibe a Exceção informada no catch
qdo por exemplo eu passo um certificado que nao existe e rodo a aplicação ele me exibe uma msg da exceção mais uma msg que coloquei no catch
qria saber se vcs consegue manipular as exceção , ja tentei varias tipos de Exceptions e nao mudou mta coisa
Ainda sobre o erro:
gov.sefaz.nfe.commons.exception.ValidacaoAreaCabecalhoException
O xml que estou enviando é o seguinte:
<?xml version="1.0" encoding="UTF-8" ?>
<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap12:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<cUF>50</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soap12:Header>
<soap12:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<cUF>50</cUF>
<xServ>STATUS</xServ>
</consStatServ>
</nfeDadosMsg>
</soap12:Body>
</soap12:Envelope>
Bom galera consegui resolver o probleminha citado acima dos parse em ingles , ficou da seguite formana API xerces-2_9_1 procura o arquivo xercesImpl.jar dentro dele acesse \org\apache\xerces\impl\msg\XMLSchemaMessages.properties faça uma copia desse arquivo , dentro desse arquivo estão as mensagem do parse todas ingles
altere o conteudo do arquivo ex:
cvc-complex-type.2.4.b = cvc-complex-type.2.4.b: O conteudo do Elemento ‘’{0}’’ is not complete. One of ‘’{1}’’ is expected.para cvc-complex-type.2.4.b = cvc-complex-type.2.4.b: O conteudo do Elemento ‘’{0}’’ nao esta completo. Um dos ‘’{1}’’ e esperado.
ao terminar salve o arquivo XMLSchemaMessages.properties como XMLSchemaMessages_pt_BR.properties
coloque esse arquivo de volta no xercesImpl.jar deixando os arquivos XMLSchemaMessages_pt_BR.properties e XMLSchemaMessages.properties no JAR
na aplicação substitua o
por
o LocalizedMessage se encarrega de procurar o arquivo com o que contem a tradução caso ele nao encontre joga como default o arquivo que esta em ingles
bom aqui funcionou legal só preciso de coragem para traduzir todo o arquivo
espero q ajudeflw
Este post realmente não é nada novo,
Mas… venho perguntar se existe alguma maneira de facilitar ainda mais a leitura…
Digo isso porque o “usuario” como todos conhecem, tem muita dificuldade (falta de vontade)
em querer entender oque ta escrito, entao dizer pra ele que cUF esta errado… é o mesmo que
ele te ligar e dizer, apareceu uma mensagem estranha na tela, pode arrumar?!
Alguem tem alguma idéia para melhorar o retorno da validação?
Seria aqueles {0} {1} {2} etc.
O que eu quero fazer é o seguinte.
ao inves de mostrar simplesmente o [cUF] tag xml
mostrar o seguinte:
cUF(Código do UF (Unidade da Federação)) - Conteúdo inválido.
Att. Jonas
Pessoal, estou tentando validar uma NFe 2.0 de exportação, com contribuinte Optante do Simples Nacional.
Tentei com CSOSN 102 e com 400 (mesma tag ICMSSN102).
Todas as tentativas retornam erro 527 = Operação de Exportação com informação de ICMS incompatível.
Alguma dica, por favor?
Grato pela atenção.
Alencar
Pessoal, estou tentando validar uma NFe 2.0 de exportação, com contribuinte Optante do Simples Nacional.
Tentei com CSOSN 102 e com 400 (mesma tag ICMSSN102).
Todas as tentativas retornam erro 527 = Operação de Exportação com informação de ICMS incompatível.Alguma dica, por favor?
Grato pela atenção.
Alencar
Ola Philler, cara achei isto na net, veja se tem fundamento, abraços e sucesso ai
Para notas de exportação, não se deve informar o ICMS Isento, quando na verdade o correto é informar o Não Tributável, assim, ao invés do código CST ser 40, este deve ser o 41, caso contrário a NFe não será validada
Pessoal, estou tentando validar uma NFe 2.0 de exportação, com contribuinte Optante do Simples Nacional.
Tentei com CSOSN 102 e com 400 (mesma tag ICMSSN102).
Todas as tentativas retornam erro 527 = Operação de Exportação com informação de ICMS incompatível.
Alencar
Respondendo a minha própria questão:
O CSOSN deve ser 300 - Imune, sendo informado na tag .
Grato pela atenção.
Alencar
ALGUEM PODE ME AJUDAR NAO TO CONSEGUINDO ENVIAR NFE TESTE NO PROGRAMA GRATUITO DA ERRO INESPERADO NA TRANSMISSAO .
Provavelmente seja a nova regra para emissão de NFe em homologação - erro 598.
A razão social do destinatário deve ser fixa: “NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL” (NT 2011.002).
Alencar
MAS COMO PROCEDER PARA O ENVIO
NO MODO NORMAL DA ERRO INESPERADO E NO MODO SCAN DA ESSE ERRO Q VC MENCIONO 598.
Creio que não tenha me feito claro.
A razão social (xNome) do destinatário deve ser essa que escrevi na mensagem anterior. Só isso.
Se tpAmb (B24) = 2: o xNome (E04) deve ser informado com a literal ?NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL?
Tem mais duas regras na NT 2011.002 que são facultativas, a saber:
Se tpAmb (B24) = 2: o CNPJ (E02) deve ser 99.999.999/0001-91 ou ter conteúdo vazio;
Se tpAmb (B24) = 2: a IE (E17) deve ter conteúdo vazio.
Alencar
AAA ISSO EU NAO TINHA FEITO TINHA USADO UM DESTINATARIO NORMAL , VOU TENTAR OBRIGADO
TENTEI NAO DEU CERTO CONTINUA ERRO INESPERADO , TO ACHANDO Q PODE SER O CERTIFICADO CERTIFICADORA AC NOTARIAL.
Boa noite,
Alguém está tendo problemas na consulta de NFe de homologação do Paraná.
Estou tendo erro na consulta do Status de Serviço. Descobri que estão retornando o XML sem a tag <?xml>
O problema é que quando o AXIS2 vai tentar gerar o evelope de retorno dá um erro no XML.
Segue o código de chamada:
NfeStatusServico2Stub.NfeCabecMsg nfeCabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
nfeCabecMsg.setCUF("41");
nfeCabecMsg.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
NfeStatusServico2Stub.NfeDadosMsg nfeDadosMsg = new NfeStatusServico2Stub.NfeDadosMsg();
OMElement ome = AXIOMUtil.stringToOM(xmlIn);
nfeDadosMsg.setExtraElement(ome);
NfeStatusServico2Stub stub = new NfeStatusServico2Stub("https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeStatusServico2");
NfeStatusServico2Stub.NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg, nfeCabecMsgE);
OMElement omeResult = result.getExtraElement();
String xmlOut = omeResult.toStringWithConsume();
Suprimi os try-catch
O erro está dando exatamente no NfeStatusServico2Stub.NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(nfeDadosMsg, nfeCabecMsgE):
org.apache.axiom.soap.SOAPProcessingException: SOAP Envelope can not have children other than SOAP Header and Body
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.checkChild(SOAPEnvelopeImpl.java:104)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.addChild(SOAPEnvelopeImpl.java:118)
at org.apache.axiom.om.impl.llom.OMNodeImpl.<init>(OMNodeImpl.java:74)
at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:106)
at org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory.createOMElement(OMLinkedListImplFactory.java:96)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:431)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:273)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
at org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:676)
at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImpl.java:693)
at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstElement(OMElementImpl.java:991)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getHeader(SOAPEnvelopeImpl.java:88)
at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:69)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:364)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.com.elucid.wstrade.nfe.statusservico.wsdl.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:156)
at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.exec(StatusServicoServlet.java:181)
at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.getStatusGeral(StatusServicoServlet.java:219)
at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.doPost(StatusServicoServlet.java:64)
at br.com.elucid.wstrade.nfe.statusservico.StatusServicoServlet.doGet(StatusServicoServlet.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
O método nfeStatusServicoNF2 foi gerado pelo wsdl2java com AXIS2
public NfeStatusServicoNF2Result nfeStatusServicoNF2(NfeDadosMsg nfeDadosMsg0, NfeCabecMsgE nfeCabecMsg1) throws java.rmi.RemoteException {
org.apache.axis2.context.MessageContext _messageContext = null;
try {
org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[0].getName());
_operationClient.getOptions().setAction("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2");
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
addPropertyToOperationClient(_operationClient, org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR, "&");
_messageContext = new org.apache.axis2.context.MessageContext();
org.apache.axiom.soap.SOAPEnvelope env = null;
env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
nfeDadosMsg0, optimizeContent(new javax.xml.namespace.QName(
"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2",
"nfeStatusServicoNF2")));
env.build();
if (nfeCabecMsg1 != null) {
org.apache.axiom.om.OMElement omElementnfeCabecMsg1 = toOM(nfeCabecMsg1,
optimizeContent(new javax.xml.namespace.QName(
"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2",
"nfeStatusServicoNF2")));
addHeader(omElementnfeCabecMsg1, env);
}
_serviceClient.addHeadersToEnvelope(env);
_messageContext.setEnvelope(env);
_operationClient.addMessageContext(_messageContext);
_operationClient.execute(true);
org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient
.getMessageContext(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
java.lang.Object object = fromOM(_returnEnv.getBody().getFirstElement(),
NfeStatusServicoNF2Result.class, getEnvelopeNamespaces(_returnEnv));
return (NfeStatusServicoNF2Result) object;
} catch (org.apache.axis2.AxisFault f) {
org.apache.axiom.om.OMElement faultElt = f.getDetail();
if (faultElt != null) {
if (faultExceptionNameMap.containsKey(faultElt.getQName())) {
try {
java.lang.String exceptionClassName = (java.lang.String) faultExceptionClassNameMap.get(faultElt.getQName());
java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
java.lang.Exception ex = (java.lang.Exception) exceptionClass.newInstance();
java.lang.String messageClassName = (java.lang.String) faultMessageMap.get(faultElt.getQName());
java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
java.lang.Object messageObject = fromOM(faultElt, messageClass, null);
java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage", new java.lang.Class[] { messageClass });
m.invoke(ex, new java.lang.Object[] { messageObject });
throw new java.rmi.RemoteException(ex.getMessage(), ex);
} catch (java.lang.ClassCastException e) {
throw f;
} catch (java.lang.ClassNotFoundException e) {
throw f;
} catch (java.lang.NoSuchMethodException e) {
throw f;
} catch (java.lang.reflect.InvocationTargetException e) {
throw f;
} catch (java.lang.IllegalAccessException e) {
throw f;
} catch (java.lang.InstantiationException e) {throw f;}
} else {throw f;}
} else {throw f;}
} finally {_messageContext.getTransportOut().getSender().cleanup(_messageContext);}
}
XML retornado pelo SEFAZ do Paraná:
<env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
<env:Header xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<nfeCabecMsg xmlns='http://www.portalfiscal.inf.br/nfe'>
<cUF>41</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</env:Header>
<env:Body xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<nfeStatusServicoNF2Result xmlns='http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2'>
<retConsStatServ versao='2.00' xmlns='http://www.portalfiscal.inf.br/nfe'>
<tpAmb>2</tpAmb>
<verAplic>PR-v2_2_3"</verAplic>
<cStat>107"</cStat>
<xMotivo>Serviço em Operação</xMotivo>
<cUF>41"</cUF>"
<dhRecbto>2011-05-12T22:10:14</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
</nfeStatusServicoNF2Result>
</env:Body>
</env:Envelope>"
Só como exemplo, segue o XML retornado de SP
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<cUF>35</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soap:Header>
<soap:Body>
<nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
<retConsStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_006h</verAplic>
<cStat>107</cStat>
<xMotivo>Serviço em Operação</xMotivo>
<cUF>35</cUF>
<dhRecbto>2011-05-13T15:24:40</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
</nfeStatusServicoNF2Result>
</soap:Body>
</soap:Envelope>
Alguém sabe como contornar a falta da tag <?xml>?
Obrigado,
Fernando Hirata Alexandre
Como eu faço para validar a assinatura de um XML que minha empresa recebeu de um Fornecedor e como validar se essa assinatura é a mesma que está na receita federal.
Eu pensei em fazer da seguinte forma:
1º Pego a NFe, retiro a assinatura original e assino novamente, depois comparo os DigestValue.
2º Faço uma consulta da situação da Nota na SEFAZ e comparo ali tambem com DigestValue que volta no protocolo da SEFAZ.
Seria isso, ou eu estou viajando muito?
Minha duvida é se eu assinar a nota original novamente não pode dar diferença visto que eu vou assinar com outro certificado já que eu não tenho o certificado do Fornecedor em mãos.
Obrigado
Como eu faço para validar a assinatura de um XML que minha empresa recebeu de um Fornecedor e como validar se essa assinatura é a mesma que está na receita federal.Eu pensei em fazer da seguinte forma:
1º Pego a NFe, retiro a assinatura original e assino novamente, depois comparo os DigestValue.
2º Faço uma consulta da situação da Nota na SEFAZ e comparo ali tambem com DigestValue que volta no protocolo da SEFAZ.Seria isso, ou eu estou viajando muito?
Minha duvida é se eu assinar a nota original novamente não pode dar diferença visto que eu vou assinar com outro certificado já que eu não tenho o certificado do Fornecedor em mãos.
Obrigado
Que eu saiba, é só você consultar a nota no SEFAZ do estado em que ela foi emitida.
O retorno da consulta traz uma assinatura digital.
Se você assinar a nota com um certificado diferente, a cadeia de Assinatura Digital com serteza será diferente.
Atenciosamente,
Fernando Hirata Alexandre
Que eu saiba, é só você consultar a nota no SEFAZ do estado em que ela foi emitida.
O retorno da consulta traz uma assinatura digital.
Se você assinar a nota com um certificado diferente, a cadeia de Assinatura Digital com serteza será diferente.Atenciosamente,
Fernando Hirata Alexandre
Mas alguem sabe como validar a adulteracão de notas, por exemplo: o fornecedor emite uma nota de R$ 1.000,00, envia ao sefaz, recebe o retorno, empacota o retorno só que depois disso ele vai manualmente no XML e altera o valor pra R$ 500,00. Se eu consultar a nota no SEFAZ o protocolo vai estar igual MAS a assinatura está errada.
No visualizador da receita tem um botaozinho (o do meio do painel de validações) que valida a assintura, se você adulterar a nota como eu falei ai em cima e rodar esse botãozinho ele vai dizer que a assinatura diverge.
Como ele faz isso? Só imagino um jeito ele tem que ter assinado de novo para validar.
Boa noite,Alguém está tendo problemas na consulta de NFe de homologação do Paraná…
resolvi assim
Meu sistema é WEB e está praticamente concluído, faltando apenas umas besteirinhas quanto aos itens comuns.
Porém, eu gostaria de assinar e enviar a NF-e com o certificado no lado do cliente.
Isso me possibilitará deixar o servidor em qualquer datacenter e utilizar certificados A3 sem dificuldades.
Estou pedindo uma forcinha para o grupo.
Eu estou tendo bastante problema de retorno “999 - Erro não catalogado” da receita do Paraná… vcs sabem como contornar esse erro ou me dizer qual o problema com o meu sistema no envio de notas?
Não sei se tentou, mas sugiro que copie e cole o xml neste enderecço: http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Geralmente ajuda.
Alguem ja viu, ou implementou um validador de conteúdo da nf-e ?
Substitua “this.mensagens.add(bundle.getMens(…” por “System.out.println(…” para seus testes:
Acrescente algumas verificações baseado na pag.34 do Manual do Contribuinte e ficará muito bom.
package br.com.cts.sge.nfe.apoio;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.w3c.dom.Document;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import br.com.cts.sge.util.Bundle;
import br.com.cts.sge.util.Messages;
public class XMLXSDValidate implements ErrorHandler {
private List<Messages> mensagens = new ArrayList<Messages>();
private Bundle bundle = new Bundle();
private String xmlInput;
private String xsdInput;
public XMLXSDValidate(String xmlInput, String xsdInput) {
this.xmlInput = xmlInput;
this.xsdInput = xsdInput;
}
public String getXmlInput() {
return xmlInput;
}
public void setXmlInput(String xmlInput) {
this.xmlInput = xmlInput;
}
public String getXsdInput() {
return xsdInput;
}
public void setXsdInput(String xsdInput) {
this.xsdInput = xsdInput;
}
public void validate() throws Exception {
try {
//Setting Xerces-J parser because the standard parser not recognize <import ...>
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
// Parse an XML document em um DOM tree.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false);
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(new File(xmlInput));
// Cria um SchemaFactory capaz de compreender WXS schemas.
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
// carrega um WXS schema, representada por uma instacia Schema.
Source schemaFile = new StreamSource(new File(xsdInput));
Schema schema = schemaFactory.newSchema(schemaFile);
// Cria um objeto Validator que pode ser usado para validar
// uma instancia document.
Validator validator = schema.newValidator();
validator.setErrorHandler(this);
// Valida o Dom tree
validator.validate(new DOMSource(document));
} catch (ParserConfigurationException e) {
this.mensagens.add(bundle.getMens(e.getMessage(), ""));
} catch (SAXException e) {
this.mensagens.add(bundle.getMens(e.getMessage(), ""));
} catch (IOException e) {
this.mensagens.add(bundle.getMens(e.getMessage(), ""));
}
}
@Override
public void error(SAXParseException exception) throws SAXException {
this.mensagens.add(bundle.getMens("ERROR: " + exception.getLocalizedMessage(), ""));
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
this.mensagens.add(bundle.getMens("FATAL" + exception.getLocalizedMessage(), ""));
}
@Override
public void warning(SAXParseException exception) throws SAXException {
this.mensagens.add(bundle.getMens("WARNING" + exception.getLocalizedMessage(), ""));
}
public List<Messages> getMensagens(){
return mensagens;
}
}
Chamada:
String schemas = this.workDir + "schemas/enviNFe_v2.00.xsd";
XMLXSDValidate validate = new XMLXSDValidate(arquivoXml, schemas);
this.mensagensNfe.add(bundle.getMens("Inicio dos testes de validação", "Ok!"));
try {
validate.validate();
List<Messages> msgs = validate.getMensagens();
for (Messages messages : msgs) {
this.mensagens.add(messages);
}
this.mensagensNfe.add(bundle.getMens("Validação concluida...", ""));
} catch (Exception ex) {
this.mensagens.add(bundle.getMens("Encontradas Falhas...", ""));
}
Este código peguei por aqui mesmo. Apenas adaptei para meu projeto.
Inicio dos testes de validação
ERROR: cvc-elt.1: Não pode localizar a declaração do elemento ‘NFe’.
Validação concluida…
Substitua “this.mensagens.add(bundle.getMens(…” por “System.out.println(…” para seus testes:
Acrescente algumas verificações baseado na pag.34 do Manual do Contribuinte e ficará muito bom.
…
Este código peguei por aqui mesmo. Apenas adaptei para meu projeto.
Aqui da erro estranho… acontece com vc também? eu postei o xml em anexo
Que eu saiba, é só você consultar a nota no SEFAZ do estado em que ela foi emitida.
O retorno da consulta traz uma assinatura digital.
Se você assinar a nota com um certificado diferente, a cadeia de Assinatura Digital com serteza será diferente.Atenciosamente,
Fernando Hirata AlexandreMas alguem sabe como validar a adulteracão de notas, por exemplo: o fornecedor emite uma nota de R$ 1.000,00, envia ao sefaz, recebe o retorno, empacota o retorno só que depois disso ele vai manualmente no XML e altera o valor pra R$ 500,00. Se eu consultar a nota no SEFAZ o protocolo vai estar igual MAS a assinatura está errada.
No visualizador da receita tem um botaozinho (o do meio do painel de validações) que valida a assintura, se você adulterar a nota como eu falei ai em cima e rodar esse botãozinho ele vai dizer que a assinatura diverge.
Como ele faz isso? Só imagino um jeito ele tem que ter assinado de novo para validar.
conseguiu alguma coisa? eu tb estava tentando validar a assinatura, mas não sei como.
mas não entendi muito bem o seu modo de pensar. Pq assinar de volta?
Pegando o seu exemplo, do cara alterar o valor depois de enviar a nfe. A assinatura vai ficar inválida, certo? e como iria
comparar uma assinatura inválida com a sua “nova assinatura”?
Veja se está usando o arquivo xsd correto.
O enviNFe_v2.00.xsd, é do lote na forma em que é enviado à Receita.
Com o XML que você preparaou, tente com nfe_v2.00.xsd. Acho que dará certo.
Veja se está usando o arquivo xsd correto.
O enviNFe_v2.00.xsd, é do lote na forma em que é enviado à Receita.
Com o XML que você preparaou, tente com nfe_v2.00.xsd. Acho que dará certo.
Correto, só tem um problema o nfe_v2.00.xsd só faz validação de estrutura do documento…
Não verifica o conteudo dos campos, exemplo: Total dos itens Difere do Total da Nota
Correto, só tem um problema o nfe_v2.00.xsd só faz validação de estrutura do documento…
Não verifica o conteudo dos campos, exemplo: Total dos itens Difere do Total da Nota
Realmente, estas críticas têm que ser acrescentadas.
Mesmo assim, acho que ajuda bastante com caracteres incorretos, tamanho de campo incorreto, ausencia de campo obrigatório, entre outros.
Ainda estou concluindo estas críticas.
Correto, só tem um problema o nfe_v2.00.xsd só faz validação de estrutura do documento…
Não verifica o conteudo dos campos, exemplo: Total dos itens Difere do Total da NotaRealmente, estas críticas têm que ser acrescentadas.
Mesmo assim, acho que ajuda bastante com caracteres incorretos, tamanho de campo incorreto, ausencia de campo obrigatório, entre outros.
Ainda estou concluindo estas críticas.
Oque estaria faltando é a questao das paginas 33 a 44 do manual de integração
conseguiu alguma coisa? eu tb estava tentando validar a assinatura, mas não sei como.
mas não entendi muito bem o seu modo de pensar. Pq assinar de volta?
Pegando o seu exemplo, do cara alterar o valor depois de enviar a nfe. A assinatura vai ficar inválida, certo? e como iria
comparar uma assinatura inválida com a sua “nova assinatura”?
Tive que dar uma parada nesse projeto e ainda não consegui, mas aquela minha ideia esquece não funciona.
Alguém já fez alguma coisa sobre CC-e ??
A estrutura e o conteúdo do Documento Fiscal Eletrônico não são válidos.
Não consigo encontrar o motivo … alguém conseguiria me ajudar?
<?xml version="1.0" encoding="UTF-8" ?>- 31 79887717 VENDA PROD 2 55 1 4137 2011-05-09 1 3118601 1 1 4 1 1 0 1.00
- 42900316000180 'NOW QUIMICA INDUSTRIA E COMERCIO LTDA-EPP' 'NOW QUIMICA'
- 'RUA PETUNIA' '115' '' 'CHACARAS BOA VISTA' 3118601 'Contagem' MG 1868170620093 404430190 4684299 1
- 33224254000142 'MGS -MINAS GERAIS ADM. SERVICOS S/A'
- 'AV GETULIO VARGAS,1420 -5º ANDAR' '1420' '' 'SAVASSI' 3106200 'Belo Horizonte' MG 30112021 1058 'Brasil' 0620067990060 ''
- 103/05 'W 80 SUPERCONCENTRADO LOTE151-152 VAL 06/05/ -09/05/2012 LOTE 34 - 35 VAL 09/05/2012' 38089429 5101 'GL' 1000.0000 16.[telefone removido] 16670.00 'GL' 1000 16.[telefone removido] 1 '' 1
- 0 400
- 99 0.0000 0.0000 0.00
- 99 0.0000 0.0000 0.00
- 0 0 0 0 16670.00 0 0 0 0 0 0 0 0 16670.00
- 0
- 42900316000180 'NOW QUIMICA INDUSTRIA E COMERCIO LTDA-EPP' 1868170620093 'RUA PETUNIA, 115 Bairro CHACARAS BOA VISTA MG Conta' 'Contagem' MG
- +KvAcGxApeGOfZRGi+yxFVXF7YQ= o+e1ekxjRJJn5Z+wjHc317oSo6ulYgBjqxjYCLUjh4yG8WRCB1fyWO93MyVHsgiuM5gRFsLQ3PBPHE8Xu9OHwGMvNi+Quf/wu10vJGFzcEvixs2IPQdyN5MUdDi3rZsM5Jgz/xN7D90JMd5PKP+xHQOQtYyu7eSQE5koYsALcao=
- MIIGBDCCBOygAwIBAgIQMjAxMDA4MjQxMTQxMzg0NDANBgkqhkiG9w0BAQUFADCBpjELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxOzA5BgNVBAsTMlNlcnZpY28gRmVkZXJhbCBkZSBQcm9jZXNzYW1lbnRvIGRlIERhZG9zIC0gU0VSUFJPMQ8wDQYDVQQLEwZDU1BCLTExNDAyBgNVBAMTK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBkbyBTRVJQUk8gRmluYWwgdjIwHhcNMTAwODI0MTE1MjQ1WhcNMTEwODI0MTE1MjEzWjCB3jELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxKzApBgNVBAsTIkF1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBTRVJQUk9BQ0YxETAPBgNVBAsTCE1BWFhEQVRBMRswGQYDVQQLExJQZXNzb2EgSnVyaWRpY2EgQTExETAPBgNVBAcTCENPTlRBR0VNMQswCQYDVQQIEwJNRzE9MDsGA1UEAxM0Tk9XIFFVSU1JQ0EgSU5EVVNUUklBIEUgQ09NRVJDSU8gTFREQTo0MjkwMDMxNjAwMDE4MDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0zUIfwnUeR++ADW8Vg/iCrZj8Y2zl5EgCJDmEXuszhHc8ZD8WXrNh38B4VYR1nvtth1Z3sNpHQFombHe2zr7rT569p8rdgI9rnylAkHDuYpS3OQFFd0pSLTjoo9wweWJTCP+FC2VpV9gFXk9BUk5uVl3SvuRLBrQ5eGlWjEOMc0CAwEAAaOCAnYwggJyMA8GA1UdEwEB/wQFMAMBAQAwHwYDVR0jBBgwFoAUwwchTPYA/YRPaKnmsAX937ClqTwwDgYDVR0PAQH/BAQDAgXgMFwGA1UdIARVMFMwUQYGYEwBAgEQMEcwRQYIKwYBBQUHAgEWOWh0dHBzOi8vY2NkLnNlcnByby5nb3YuYnIvc2VycHJvYWNmL2RvY3MvZHBjc2VycHJvYWNmLnBkZjCBtAYDVR0RBIGsMIGpoD0GBWBMAQMEoDQEMjE0MDExOTUyMTQwNzY5MDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwTUc1OTQ1NlNTUE1HoBsGBWBMAQMCoBIEEE1BVVJPIExVQ0lPIFBFTkGgGQYFYEwBAwOgEAQONDI5MDAzMTYwMDAxODCgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRdtYXVyYUBub3dxdWltaWNhLmNvbS5icjAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgagGA1UdHwSBoDCBnTAyoDCgLoYsaHR0cDovL2NjZC5zZXJwcm8uZ292LmJyL2xjci9zZXJwcm9hY2Z2Mi5jcmwwM6AxoC+GLWh0dHA6Ly9jY2QyLnNlcnByby5nb3YuYnIvbGNyL3NlcnByb2FjZnYyLmNybDAyoDCgLoYsaHR0cDovL3d3dy5pdGkuZ292LmJyL3NlcnByby9zZXJwcm9hY2Z2Mi5jcmwwTAYIKwYBBQUHAQEEQDA+MDwGCCsGAQUFBzAChjBodHRwOi8vY2NkLnNlcnByby5nb3YuYnIvY2FkZWlhcy9zZXJwcm9hY2Z2Mi5wN2IwDQYJKoZIhvcNAQEFBQADggEBALbaBdvC52jPVCOXytAyOeR+9CrT0htwM01QL1qs4p6o2RbGksquXr9/n1HbJKiVlbv/yAQ5JwT/YWPX8bSp37LrSb4gevJZltOJO4Gpk31VhdLSdhahPMsdPPqmH5dbZ+6jlE/wfip/JU4GltqVmddLQ6aHef8spo9sMBkz0PwMZNNgdlzxXgKtIVri7obHE/fvu7ZFiirAMDKnPoTGx3vsPYdsSB+VO41A9hIDVV6blLOJjqEbOqHdg2GPyAznRpT1DzNNJJj9AFCKbH9nHDACkXitNbB9lDeb+khotn2z7bvk1j2iJy4tY2a1VJP8PDUM/5fZbo10NnOUeG/Ohio=
- 1 1_0_15 31110542900316000180550010000041371798877174 2011-05-09T09:52:43 131110364950819 +KvAcGxApeGOfZRGi+yxFVXF7YQ= 100 Autorizado o uso da NF-e
A estrutura e o conteúdo do Documento Fiscal Eletrônico não são válidos.
Não consigo encontrar o motivo … alguém conseguiria me ajudar?
Não entendi qual o problema.
A nota não está processada e autorizada?
Esta tudo correto ! Chave de acesso, a nota foi validada,assinada e transmitida corretamente. Ai foi gerado o arquivo XML.
No site da receita tem o programa Visualizador - Java Web Start, quando clico no programa para verificar a estrutura/conteúdo do documento aberto
ai da a mensagem (“A estrutura e o conteúdo do Documento Fiscal Eletrônico não são válidos.”). Ja verifiquei a estrutura do arquivo junto ao manual do contribuiente
disponibilizado pela receita e nada ! Não consigo achar a solução.
Esta tudo correto ! Chave de acesso, a nota foi validada,assinada e transmitida corretamente. Ai foi gerado o arquivo XML.
No site da receita tem o programa Visualizador - Java Web Start, quando clico no programa para verificar a estrutura/conteúdo do documento aberto
ai da a mensagem (“A estrutura e o conteúdo do Documento Fiscal Eletrônico não são válidos.”). Ja verifiquei a estrutura do arquivo junto ao manual do contribuiente
disponibilizado pela receita e nada ! Não consigo achar a solução.
Cola o seu xml nesse site e manda validar… acho que o erro vai ser mais preciso
http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Ta falando que o erro está linha 2 coluna 1. Vou verificar para ver o que pode está ocorrendo.
Encontrei nada ! Alguém conseguiria a solução?
Você gera o arquivo em disco depois de enviar pro web service?
Não estaria adulterando o conteúdo ao salvá-lo?
Faz um teste assim: copia este teu xml gravado para outro arquivo.
Edita ele e apaga toda a parte da assinatura.
Assina o xml novamente com a mesma rotina que você usa normalmente.
Compare os digest-value para ver se estão iguais.
Alencar
A essa altura isso já deve estar resolvido, mas sem dúvida, teu xml estava errado.
Veja como é o certo:
<?xml version="1.0" encoding="UTF-8" ?>
- <nfeProc versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
- <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
- <infNFe versao="2.00" Id="NFe42110585201184000100550010000022421000023528">
- <ide>
e olhe o teu:
<?xml version="1.0" encoding="UTF-8" ?>
- <nfeProc versao="2.00">
- <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
- <infNFe Id="NFe31110542900316000180550010000041371798877174" versao="2.00">
- <ide>
No seu não tem o xmlns no elemento NfeProc.
Might AngelPasso 1
Crio uma pasta dentro do projeto e coloco todas as wsdlPasso 2
Click com o botão direito no projeto -> new -> other ->web services -> web service client e dou nextPasso 3
Localizo o wsdl que desejo e observo as configurações que estão: server : tomcat v6.0 server
Web service runtime: Apache axis2
cliente projet: o nome_do_meu_projetoPasso 4
Finishgerou minhas classes.
muito obrigado.
Bom dia Pessoal!
Estou perdidão, realizei os passos acima para o NfeStatusServico2.wsdl, deu tudo certo (eu acho), ou seja, não deu nenhum tipo de erro e surgiram dois arquivos .java (NfeStatusServico2CallbackHandler e NfeStatusServico2Stub), porém, qual o próximo passo? Eu tento compilar esses arquivos? Fiz isso mas ocorreram erros, estou fazendo errado?
Obrigado!!!
Carlos.
Meu tambem gerou somente estas duas classe esta certo isso NfeStatusServico2CallbackHandler e NfeStatusServico2Stub.
Obrigado !!!
JVDS
]Might AngelPasso 1
Crio uma pasta dentro do projeto e coloco todas as wsdlPasso 2
Click com o botão direito no projeto -> new -> other ->web services -> web service client e dou nextPasso 3
Localizo o wsdl que desejo e observo as configurações que estão: server : tomcat v6.0 server
Web service runtime: Apache axis2
cliente projet: o nome_do_meu_projetoPasso 4
Finishgerou minhas classes.
muito obrigado.
Bom dia Pessoal!
Estou perdidão, realizei os passos acima para o NfeStatusServico2.wsdl, deu tudo certo (eu acho), ou seja, não deu nenhum tipo de erro e surgiram dois arquivos .java (NfeStatusServico2CallbackHandler e NfeStatusServico2Stub), porém, qual o próximo passo? Eu tento compilar esses arquivos? Fiz isso mas ocorreram erros, estou fazendo errado?
Obrigado!!!
Carlos.
Meu tambem gerou somente estas duas classe esta certo isso NfeStatusServico2CallbackHandler e NfeStatusServico2Stub.Obrigado !!!
JVDS
Estou tomando esta exception o que poderia ser
org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78)
at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:197)
at ClientNfe.main(ClientNfe.java:93)
Caused by: com.ctc.wstx.exc.WstxIOException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[INFO] Unable to sendViaPost to url[https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx]
org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78)
at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:197)
at ClientNfe.main(ClientNfe.java:93)
Caused by: com.ctc.wstx.exc.WstxIOException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1692)
at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:288)
at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLStreamWriterWrapper.java:46)
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWriter.java:188)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:197)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
... 18 more
Caused by: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1267)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1279)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:43)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:194)
at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1690)
... 23 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1623)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:198)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:192)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1074)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:128)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)
at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.flush(XMLStreamWriterWrapper.java:50)
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:198)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:126)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:113)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub$NfeDadosMsg.serialize(NfeStatusServico2Stub.java:1959)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub$NfeDadosMsg.serialize(NfeStatusServico2Stub.java:1921)
at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:90)
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:563)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
... 19 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:294)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:200)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1053)
... 45 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(Cer at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1692)
at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:288)
at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLStreamWriterWrapper.java:46)
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWriter.java:188)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:197)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
... 18 more
Caused by: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1267)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1279)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:43)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:194)
at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1690)
... 23 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1623)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:198)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:192)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1074)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:128)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)
at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)
at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.flush(XMLStreamWriterWrapper.java:50)
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:198)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:126)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:113)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub$NfeDadosMsg.serialize(NfeStatusServico2Stub.java:1959)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub$NfeDadosMsg.serialize(NfeStatusServico2Stub.java:1921)
at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:90)
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:563)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
... 19 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:294)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:200)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1053)
... 45 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)
... 51 more
tPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)
... 51 more
É o truststore mal configurado ou que não contenha a cadeia validadora do certificado do site que vocês está acessando.
Alencar
É o truststore mal configurado ou que não contenha a cadeia validadora do certificado do site que vocês está acessando.Alencar
estou passando esta configuracao mas o que seria.
/**
* Informações do Certificado Digital.
*/
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("javax.net.ssl.trustStore");
System.setProperty("javax.net.ssl.keyStore", caminhoDoCertificadoDoCliente);
System.setProperty("javax.net.ssl.keyStorePassword", senhaDoCertificadoDoCliente);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", arquivoCacertsGeradoParaCadaEstado);
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
[code}
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, arquivoCacertsGeradoParaCadaEstado);
System.setProperty(“javax.net.ssl.trustStorePassword”, “123456”);
[/code]
É aqui o galho. Verifique se no jks tem toda a cadeia do certificado do servidor a ser acessado.
Alencar
<blockquote><div class="quote-author">philler:</div>[code}
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, arquivoCacertsGeradoParaCadaEstado);
System.setProperty(“javax.net.ssl.trustStorePassword”, “123456”);
[/code]
É aqui o galho. Verifique se no jks tem toda a cadeia do certificado do servidor a ser acessado.
Alencar
Desculpe mas como poderia ver isso nao sei.
<blockquote><div class="quote-author">[email removido:</div>]<blockquote><div class="quote-author">philler:</div>[code}
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
System.setProperty(“javax.net.ssl.trustStore”, arquivoCacertsGeradoParaCadaEstado);
System.setProperty(“javax.net.ssl.trustStorePassword”, “123456”);
[/code]
É aqui o galho. Verifique se no jks tem toda a cadeia do certificado do servidor a ser acessado.
Alencar
Desculpe mas como poderia ver isso nao sei.
Bom, vou lhe dizer como eu fiz. Criei um certs.jks com todos os certificados da raiz ICP Brasil
e uso este como meu truststore. Se quiser, lhe envio por email sem custo algum.
Mande seu email por pvt.
Alencar
Pessoal estou recebendo a seguinte mensagem consegui consumir o webservice estou usando axis2 estou recebendo esta mensagem.
Mas estou passando o campo versaoDados
<retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SVRS20110111103240</verAplic><cStat>411</cStat><xMotivo>Rejeicao: Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP Header</xMotivo><cUF>35</cUF><dhRecbto>2011-07-04T09:58:52</dhRecbto><tMed>1</tMed></retConsStatServ>
]Pessoal estou recebendo a seguinte mensagem consegui consumir o webservice estou usando axis2 estou recebendo esta mensagem.
Mas estou passando o campo versaoDados
<retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SVRS20110111103240</verAplic><cStat>411</cStat><xMotivo>Rejeicao: Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP Header</xMotivo><cUF>35</cUF><dhRecbto>2011-07-04T09:58:52</dhRecbto><tMed>1</tMed></retConsStatServ>
Pessoal este erro esta dando com as versões axis2-1.5.5 e a 1.6.0 perdi um tempo para descobrir isto entao instalei a versão axis2-1.5.4 e funcionou beleza obtive a tao resposta de status 107.
Obrigado !!!
Pessoal preciso de uma dica.
Tenho um software de NFe aqui na empresa que é em JSF e roda no servidor. (só tem uma tela de upload onde os funcionarios selecionam o arquivo txt clicam em processar o servidor converte em XML e faz todo o processo de transmissão) só isso. Ele funciona sem problemas com certificado tipo A1.
A empresa aqui é uma fábrica, e possui algumas lojas, até hj apenas a fabrica estava na NFe agora vamos colocar as lojas. O problema é que nas lojas (por causa de alguns gerentes malas) eles querem o certificado A3.
Dúvida:
Por acaso é possível utilizar o certificado A3 através de um Aplet, ou fazer alguma tela em Swing com algum tipo de serialização do certificado?
Assim as lojas fariam o upload normalmente mas utilizando o certifcado A3 a cada vez que fizer o upload.
Se alguem puder me ajudar com alguma dica eu agradeço muito.
E ai galera blz
rafaelbtz eu tb aqui uso certificado A1 e ja estão cogitando de poder ser utilizado A3 pois alguns clientes nao querem o A1, e até ja possui o A3 , como o certificado se usa para todos processos de nf-e as alteraçoes nao será tao simples , mais ainda estou analisando a melhor solução rs
mudando um pouco de assunto
alguem aqui ja fez transmissão de carta de correção ?
não encontrei ainda as wsdl para poder montar as classes para tratar essa situação no SEFAZ apenas encontro os endereços
E ai galera blzrafaelbtz eu tb aqui uso certificado A1 e ja estão cogitando de poder ser utilizado A3 pois alguns clientes nao querem o A1, e até ja possui o A3 , como o certificado se usa para todos processos de nf-e as alteraçoes nao será tao simples , mais ainda estou analisando a melhor solução rs
mudando um pouco de assunto
alguem aqui ja fez transmissão de carta de correção ?
não encontrei ainda as wsdl para poder montar as classes para tratar essa situação no SEFAZ apenas encontro os endereços
Evandro ainda fiz só um estudo preliminar do certificado A3 via WEB (via aplicação local é tranquilo) mas acho que não vai dar não. O leitor do cartão precisa estar conectado a maquina que vai fazer a transferencia. Eu até consegui passar a classe Certificate do cliente para o servidor mas na hora de usar para assinatura da erro.
Quanto a carta de correção apenas o estado de SP está com WS para produção. mas veja esse link: http://www.spedbrasil.net/forum/topics/carta-de-correcao-eletronica-9
normalmente as informações deles são muito confiáveis e ai diz o seguinte:
Pessoal,A reunião com o coordenador nacional da NF-e foi ontem, dia 30/06 - e sairá uma postergação para jan/2012.
abraços
Pois é rafaelbtz
foi o q eu argumentei aqui , pois só vai funcionar se tiver plugado no servidor e nao no terminal do usuario pq nao vai dar certo
como aqui agente pode ter varios clientes no msm servidor ( vai ficar bunito o varios A3 plugado na msm maquina ) rsrs
[list]A reunião com o coordenador nacional da NF-e foi ontem, dia 30/06 - e sairá uma postergação para jan/2012. [/list]
Tudo que provem do governo é uma porcaria.
Mas…
Se ninguem reclama, temos que usar esses recursos lixos que nos proporciam.
At+
Perguntinha ae pros colegas:
Alguém usa ou sabe se dá pra pegar o xml da NFe através de consumo de ws?
Ouvi dizer que existe este serviço.
Alguma dica?
Grato
Alencar
Perguntinha ae pros colegas:Alguém usa ou sabe se dá pra pegar o xml da NFe através de consumo de ws?
Ouvi dizer que existe este serviço.Alguma dica?
Grato
Alencar
Pelo que eu sei e uso até hoje só da pra obter o protocolo de recebimento. Se existir esse WS me interessa muito.
Perguntinha ae pros colegas:Alguém usa ou sabe se dá pra pegar o xml da NFe através de consumo de ws?
Ouvi dizer que existe este serviço.Alguma dica?
Grato
Alencar
Pelo que eu sei e uso até hoje só da pra obter o protocolo de recebimento. Se existir esse WS me interessa muito.
Deve existir algo do tipo, pois tem alguns softwares de escrita fiscal que dão a possibilidade do operador ler a NFe pelo código
de barras e lançá-la automaticamente.
Ou seja, de algum lugar estes sw estão buscando as informações da danfe.
Por isso presumo ser algum ws muito bem escondido e sem interesse de divulgação ao público em geral.
Alencar
Pelo que eu sei e uso até hoje só da pra obter o protocolo de recebimento. Se existir esse WS me interessa muito.
Deve existir algo do tipo, pois tem alguns softwares de escrita fiscal que dão a possibilidade do operador ler a NFe pelo código
de barras e lançá-la automaticamente.
Ou seja, de algum lugar estes sw estão buscando as informações da danfe.Por isso presumo ser algum ws muito bem escondido e sem interesse de divulgação ao público em geral.
Alencar
Eu ja vi isso também, mas eu vi um que o usuário precisa digitar o Captcha, ou seja ele fazia um parse do HTML da consulta na WEB.
Pelo que eu sei e uso até hoje só da pra obter o protocolo de recebimento. Se existir esse WS me interessa muito.
Deve existir algo do tipo, pois tem alguns softwares de escrita fiscal que dão a possibilidade do operador ler a NFe pelo código
de barras e lançá-la automaticamente.
Ou seja, de algum lugar estes sw estão buscando as informações da danfe.Por isso presumo ser algum ws muito bem escondido e sem interesse de divulgação ao público em geral.
Alencar
Eu ja vi isso também, mas eu vi um que o usuário precisa digitar o Captcha, ou seja ele fazia um parse do HTML da consulta na WEB.
Nops, no software que eu conheço, simplesmente lê a chave pelo leitor através do código de barras e lança a nota toda. Então não é parser da página de consulta da NFe.
Deve ter algum serviço web disponível que fornece o xml de distribuição da NFe através da chave de acesso.
Por favor, que conhecer este acesso que se pronuncie.
Alencar
Boa tarde a todos!
Fiz a comunicação e assinatura da nfe em todos os serviços e sempre funcionou muito bem durante um ano. Mas ontem ocorreu o seguinte erro assim que tento verificar o status do serviço:
org.apache.axis2.AxisFault: Transport error: 403 Error: Forbidden
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:200)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:200)
at classes.NfeStatus.VerificaStatus(NfeStatus.java:54)
at nfe.Main.main(Main.java:117)
Estranhei pois nunca havia dado erro, e notei que o certificado deles estava expirado, com vencimento de 1 ano! Então pedi que me mandassem o pfx novo, mas somente substitui o arquivo e mesmo assim não vai continua com o mesmo erro.
Quando fiz a keystore não me lembro se vai somente os arquivos da receita ou o do cliente também!
Alguém pode me ajudar? Agradeço demais!
…
Estranhei pois nunca havia dado erro, e notei que o certificado deles estava expirado, com vencimento de 1 ano! Então pedi que me mandassem o pfx novo, mas somente substitui o arquivo e mesmo assim não vai continua com o mesmo erro.Quando fiz a keystore não me lembro se vai somente os arquivos da receita ou o do cliente também!
Alguém pode me ajudar? Agradeço demais!
eu tinha esse erro quando ficava algum inpustream sem fechar, principalmente depois de ler o certificado, não adiantava reiniciar o servidor, só parando e startando novamente, não sei se refere-se a você, mas li o post e quiz comentar, abraços.
…
Estranhei pois nunca havia dado erro, e notei que o certificado deles estava expirado, com vencimento de 1 ano! Então pedi que me mandassem o pfx novo, mas somente substitui o arquivo e mesmo assim não vai continua com o mesmo erro.Quando fiz a keystore não me lembro se vai somente os arquivos da receita ou o do cliente também!
Alguém pode me ajudar? Agradeço demais!
eu tinha esse erro quando ficava algum inpustream sem fechar, principalmente depois de ler o certificado, não adiantava reiniciar o servidor, só parando e startando novamente, não sei se refere-se a você, mas li o post e quiz comentar, abraços.
Obrigado aix, mas não entendi como eu paro e starto algo? A aplicação é Windows.
[quote=felipecabral1451][quote=aix]
…
Obrigado aix, mas não entendi como eu paro e starto algo? A aplicação é Windows.
falei no servidor Tomcat aonde roda teu sistema.
[quote=aix][quote=felipecabral1451]
…
Obrigado aix, mas não entendi como eu paro e starto algo? A aplicação é Windows.falei no servidor Tomcat aonde roda teu sistema.
Então acredito que seja isso, pode me orientar como restarto o axis ou tomcat ou qualquer coisa que possa estar relacionada? Os mesmos não aparecem nos services.
teu sistema de emissão de NFe é aquele que a sefaz disponibiliza ou vc utiliza uma implementação própria ? restarte do servidor só se é você que desenvolve.
Eu utilizo toda parte de nfe em uma aplicação que nós mesmos desenvolvemos! O problema é que não sie o que restartar!
Prezados,
Alguém utiliza para emissão da NF-e: Tomcat ou Jboss + Axis2 + Eclipse?
Estou com uma aplicação onde apresenta um erro que não conseguir resolver o problema.
Tenho uma classe que quando executo através do Java Application ela funciona normal para enviar o lote da NFe para a SEFAZ, porém quando utilizo o Tomcat ou o Jboss ele apresenta problema.
Necessito fazer alguma configuração do Tomcat para para ele utilizar o AXIS2?
Qualquer ajuda é bem vinda. Tenho URGÊNCIA em fazer esta aplicação funcionar.
Agradeço a atenção.
Prezados estou tendo a seguinte mensagem de erro no envio do Lote com Certificado A3 tipo Cartão.
Alguém pode ajudar?
Desde já agradeço a ajuda.
Prezados estou tendo a seguinte mensagem de erro no envio do Lote com Certificado A3 tipo Cartão.Alguém pode ajudar?
Desde já agradeço a ajuda.
Verifique se a cadeia certificadora está completa e correta dentro do cartão.
Já tive casos em que a cadeia não estava presente e outros em que estava mas errada.
Alencar
Dentro do cartão somente tem o certificado do cliente?
Quando você se refere a cadeia dentro do cartão, quais seriam este certificados?
Onde posso encontra-los e como inserir no cartão?
Agradeço a atenção.
Como faço o procedimento de inserção do certificado no cartão.
Dentro do cartão somente tem o certificado do cliente?Quando você se refere a cadeia dentro do cartão, quais seriam este certificados?
Onde posso encontra-los e como inserir no cartão?
Agradeço a atenção.
Tchê, não estou afirmando que este seja ao teu problema, mas vale verificar.
Através do software do cartão, você abre ele como admin e verifica se a cadeia está completa e
correta. Para saber quais os certificados seriam parte da cadeia, exiba o certificado do cliente
e olhe quem emitiu o certificado final (do cliente), e assim sucessivamente até chegar ao
certificado Raiz ICP Brasil v1 que é auto-assinado.
Todos os certificados da cadeia devem estar presentes na mídia.
Se te enrolar com isso, faça contato com a AR que expediu o cartão (a empresa que entregou ao
teu cliente).
Alencar
Ok. Vou verificar
Pelo que eu sei e uso até hoje só da pra obter o protocolo de recebimento. Se existir esse WS me interessa muito.
Deve existir algo do tipo, pois tem alguns softwares de escrita fiscal que dão a possibilidade do operador ler a NFe pelo código
de barras e lançá-la automaticamente.
Ou seja, de algum lugar estes sw estão buscando as informações da danfe.Por isso presumo ser algum ws muito bem escondido e sem interesse de divulgação ao público em geral.
Alencar
Eu ja vi isso também, mas eu vi um que o usuário precisa digitar o Captcha, ou seja ele fazia um parse do HTML da consulta na WEB.
Nops, no software que eu conheço, simplesmente lê a chave pelo leitor através do código de barras e lança a nota toda. Então não é parser da página de consulta da NFe.
Deve ter algum serviço web disponível que fornece o xml de distribuição da NFe através da chave de acesso.Por favor, que conhecer este acesso que se pronuncie.
Alencar
Seria uma ótima mesmo se tivesse o xml disponível em algum lugar…
Mas o sistema deve conseguir obter os dados a partir da chave de acesso, porque é obrigatório o envio (disponibilizar) do xml para o destinatário…
será que não é isso? aqui fazemos isso mesmo, o cara a partir da chave de acesso pega os dados do xml, mas antes o xml deve ser importado para o nosso banco.
Pelo que eu sei e uso até hoje só da pra obter o protocolo de recebimento. Se existir esse WS me interessa muito.
Deve existir algo do tipo, pois tem alguns softwares de escrita fiscal que dão a possibilidade do operador ler a NFe pelo código
de barras e lançá-la automaticamente.
Ou seja, de algum lugar estes sw estão buscando as informações da danfe.Por isso presumo ser algum ws muito bem escondido e sem interesse de divulgação ao público em geral.
Alencar
Eu ja vi isso também, mas eu vi um que o usuário precisa digitar o Captcha, ou seja ele fazia um parse do HTML da consulta na WEB.
Nops, no software que eu conheço, simplesmente lê a chave pelo leitor através do código de barras e lança a nota toda. Então não é parser da página de consulta da NFe.
Deve ter algum serviço web disponível que fornece o xml de distribuição da NFe através da chave de acesso.Por favor, que conhecer este acesso que se pronuncie.
Alencar
Seria uma ótima mesmo se tivesse o xml disponível em algum lugar…
Mas o sistema deve conseguir obter os dados a partir da chave de acesso, porque é obrigatório o envio (disponibilizar) do xml para o destinatário…
será que não é isso? aqui fazemos isso mesmo, o cara a partir da chave de acesso pega os dados do xml, mas antes o xml deve ser importado para o nosso banco.
Até pode ser o caso, mas não creio. Desta forma seria bem trivial o processo, desde que se tenha o XML importado.
Vou dar uma pesquisada mais a fundo.
Alencar
Prezados,
Estou com o seguinte problema:
Estava enviando fazendo tudo normalmente com um XML e com um certificando enviando para a Bahia-BA, código 29. Tudo ok.
Porém tenho necessidade de utilizar a Sefaz SP código 43, logo alterei o cerificado para o da empresa de SP, porém começou um erro: “Rejeição: Assinatura difere do calculado”
OBS: Se eu utilizo o XML que eu estava enviando para BA e funcionou normal ele apresenta o erro: “Rejeição: Não é permitida a presença de caracteres de edição no início/fim da mensagem ou entre as tags da mensagem”, se eu utilizo o novo XML tenho o erro acima.
Os dois erros são quando utilizo o novo certificado, novo ou velho XML, envio para Sefaz SP.
Se eu utilizar a mesma aplicação, alterando para SEFAZ BA, com o certificado da empresa da BA ele funciona.
Quem puder ajudar, desde já agradeço.
Boa tarde galera
alguem aqui ja fez transmissão de carta de correção ?
não encontrei ainda as wsdl para poder montar as classes para tratar essa situação no SEFAZ apenas encontro os endereços
salve Galera blz
ninguem ainda se atrevei a mexer com CCe , carta de correção ? está super divertido nd funciona kkkk mais entao está retornando do nosso queridissimo SEFAZ o seguinte rejeição
493 - Rejeição: Evento não atende o Schema XML específico
ja validei o xml de todas possiveis formas e está ok, o programa de envio da carta é praticamente uma copia do programa que faz envio da nf-e
está se esgotando minhas possibilidades de possiveis erros se alguem puder me ajudar com alguma luz fico agradecido
obrigado
Estou com alguns problemas ao tentar utilizar a classe GeradorWSDL postada nesse topico, estou usando o axis2 1.5.1 assim como outros usuarios citaram, mas nao funfa por nada.
public class GeradorWSDL{
public static void main(String[] args) {
String nfestatusservico = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL";
GeradorWSDL gerador = new GeradorWSDL();
gerador.setProperties();
gerador.geraWSDL(nfestatusservico, "statusservico");
}
public void geraWSDL(String wsdl, String pack) {
try {
WSDL2Java.main(new String[]{"-o", "c:\\src", "-p", "br.com.nfe.ws." + pack, "-uri", wsdl});
// WSDL2Java.main(new String[]{"-uri", wsdl, "-p", "br.com.nfe.ws." + pack});
System.out.println("Gerado com sucesso.");
} catch (Exception ex) {
Logger.getLogger(Autogeracao.class.getName()).log(Level.SEVERE, "Erro ao gerar.", ex);
}
}
public void setProperties() {
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:\\cliente.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "lpsx46");
}
}
Ao executar recebo o seguinte erro:
Retrieving document at ‘<a href="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL">https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL</a>’.
log4j:WARN No appenders could be found for logger (org.apache.axis2.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
21/09/2011 13:14:54 br.com.nfe.ws.GeradorWSDL geraWSDL
GRAVE: *** Erro com a geração ***
org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerationEngine.java:156)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
at br.com.jcomputacao.nfe.ws.Autogeracao.geraWSDL(GeradorWSDL.java:82)
at br.com.jcomputacao.nfe.ws.Autogeracao.main(GeradorWSDL.java:72)
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document at ‘<a href="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL">https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL</a>’.: java.io.IOException: Server returned HTTP response code: 403 for URL: <a href="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL">https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL</a>
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.readInTheWSDLFile(CodeGenerationEngine.java:288)
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerationEngine.java:111)
… 4 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: <a href="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL">https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL</a>
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getInputStream(HttpsURLConnectionOldImpl.java:204)
at java.net.URL.openStream(URL.java:1010)
at com.ibm.wsdl.util.StringUtils.getContentAsInputStream(Unknown Source)
… 8 more
Você deve usar um certificado válido para acesso ao wsdl:
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document at ‘https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL’.: java.io.IOException: Server returned HTTP response code: 403 for URL: https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/s...es/NfeStatusServico2.asmx?WSDL
Sem certificado, o retorno é:
Meu certificado é valido sim, acessando pelo internet explorer funciona OK.
Meu problema é pelo java.
Você deve usar um certificado válido para acesso ao wsdl:Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document at ‘https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL’.: java.io.IOException: Server returned HTTP response code: 403 for URL: https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/s...es/NfeStatusServico2.asmx?WSDL
Sem certificado, o retorno é:
Meu certificado é valido sim, acessando pelo internet explorer funciona OK.
Meu problema é pelo java.
E como está seu código na parte de autenticação?
Que tipo de certificado é? A3 ou A1? O acesso via java é um pouco diferente e mais exigente que acesso via navegador.
Alencar
Vamos la, codigo do GeradorWSDL usando axis2 1.5.1:Meu certificado é valido sim, acessando pelo internet explorer funciona OK. Meu problema é pelo java.E como está seu código na parte de autenticação?
Que tipo de certificado é? A3 ou A1? O acesso via java é um pouco diferente e mais exigente que acesso via navegador.Alencar
public class GeradorWSDL{
public static void main(String[] args) {
System.setProperty("nfe.certificado.senha", "senhacertificado");
System.setProperty("nfe.certificado.caminho", "C:\\meucertificado.pfx");
System.setProperty("nfe.certificadoSefaz.caminho", "jssecacerts");
System.setProperty("nfe.certificadoSefaz.senha", "changeit");
System.setProperty("nfe.certificado.tipo", "A1");
System.setProperty("nfe.ambiente", "2");//Homologacao
String nfestatusservico = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx?WSDL";
GeradorWSDL gerador = new GeradorWSDL();
WsConnectionConfig.setProperties();
gerador.geraWSDL(nfestatusservico, "statusservico");
}
public void geraWSDL(String wsdl, String pack) {
try {
WSDL2Java.main(new String[]{"-o", "c:\\src", "-p", "br.com.nfe.ws." + pack, "-uri", wsdl});
// WSDL2Java.main(new String[]{"-uri", wsdl, "-p", "br.com.nfe.ws." + pack});
System.out.println("Gerado com sucesso.");
} catch (Exception ex) {
Logger.getLogger(GeradorWSDL.class.getName()).log(Level.SEVERE, "Erro ao gerar.", ex);
}
}
}
public class WsConnectionConfig {
public static void setProperties() {
boolean useProxy = Boolean.parseBoolean(System.getProperty("useProxy", "false"));
if (useProxy) {
configuraProxy();
}
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
configuraA1();
String certpath = System.getProperty("nfe.certificadoSefaz.caminho");
File file = null;
if (certpath.startsWith("file://")) {
String urlFile = null;
try {
urlFile = new URL(certpath).getFile();
} catch (MalformedURLException ex) {
Logger.getLogger(WsConnectionConfig.class.getName()).log(Level.SEVERE, null, ex);
}
file = new File(urlFile);
} else {
file = new File(certpath);
}
if (!file.exists()) {
try {
String[] hosts = new String[]{"www.portalfiscal.inf.br"};
InstallCert.installHostCertificate(false, file, hosts);
hosts = new String[]{"www.portalfiscal.inf.br"};
InstallCert.installHostCertificate(false, file, hosts);
hosts = new String[]{"homologacao.nfe.fazenda.sp.gov.br"};
InstallCert.installHostCertificate(false, file, hosts);
hosts = new String[]{"homologacao.nfe.fazenda.sp.gov.br"};
InstallCert.installHostCertificate(false, file, hosts);
hosts = new String[]{"nfe.fazenda.sp.gov.br"};
InstallCert.installHostCertificate(false, file, hosts);
hosts = new String[]{"nfe.fazenda.sp.gov.br"};
InstallCert.installHostCertificate(false, file, hosts);
} catch (Exception ex) {
Logger.getLogger(WsConnectionConfig.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", certpath);
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
}
private static void configuraProxy() {
Options options = new Options();
HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
String aux = System.getProperty("http.proxyUser");
auth.setUsername(aux);
aux = System.getProperty("http.proxyPassword");
auth.setPassword(aux);
// set if realm or domain is known
options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth);
HttpTransportProperties.ProxyProperties proxyProperties = new HttpTransportProperties.ProxyProperties();
aux = System.getProperty("http.proxyHost");
proxyProperties.setProxyName(aux);
int porta = Integer.parseInt(System.getProperty("http.proxyPort", "3128"));
proxyProperties.setProxyPort(porta);
options.setProperty(org.apache.axis2.transport.http.HTTPConstants.PROXY, proxyProperties);
options.setProperty(org.apache.axis2.context.MessageContextConstants.HTTP_PROTOCOL_VERSION, org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_11);
}
private static void configuraA1() {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
String certpath = System.getProperty("nfe.certificado.caminho");
File file = new File(certpath);
if (!file.exists()) {
file = new File(file.getName());
certpath = file.getAbsolutePath();
if (!file.exists()) {
if (System.getProperty("nfe.certificado.caminho").startsWith("http")) {
try {
URL url = new URL(System.getProperty("nfe.certificado.caminho"));
InputStream is = url.openStream();
FileOutputStream fos = new FileOutputStream(file);
int obyte = -1;
while ((obyte = is.read()) != -1) {
fos.write(obyte);
}
fos.flush();
fos.close();
is.close();
} catch (IOException ex) {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, "Erro ao obter o cerficiado", ex);
}
}
}
}
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", certpath);
System.setProperty("javax.net.ssl.keyStorePassword", System.getProperty("nfe.certificado.senha"));
}
}
public class InstallCert {
public static void installHostCertificate(boolean prompt, File file, String[] args) throws Exception {
String host;
int port;
char[] passphrase;
if ((args.length == 1) || (args.length == 2)) {
String[] c = args[0].split(":");
host = c[0];
port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
String p = (args.length == 1) ? "changeit" : args[1];
passphrase = p.toCharArray();
} else {
System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");
return;
}
File ifile = new File("jssecacerts");
if (ifile.isFile() == false) {
char SEP = File.separatorChar;
File dir = new File(System.getProperty("java.home") + SEP
+ "lib" + SEP + "security");
ifile = new File(dir, "jssecacerts");
if (ifile.isFile() == false) {
ifile = new File(dir, "cacerts");
}
}
System.out.println("Loading KeyStore " + ifile + "...");
InputStream in = new FileInputStream(ifile);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(in, passphrase);
in.close();
SSLContext context = SSLContext.getInstance("TLS");
TrustManagerFactory tmf =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];
SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
context.init(null, new TrustManager[] {tm}, null);
SSLSocketFactory factory = context.getSocketFactory();
System.out.println("Opening connection to " + host + ":" + port + "...");
SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
socket.setSoTimeout(10000);
try {
System.out.println("Starting SSL handshake...");
socket.startHandshake();
socket.close();
System.out.println();
System.out.println("No errors, certificate is already trusted");
} catch (SSLException e) {
System.out.println();
e.printStackTrace(System.out);
}
X509Certificate[] chain = tm.chain;
if (chain == null) {
System.out.println("Could not obtain server certificate chain");
return;
}
BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
System.out.println();
System.out.println("Server sent " + chain.length + " certificate(s):");
System.out.println();
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
MessageDigest md5 = MessageDigest.getInstance("MD5");
for (int i = 0; i < chain.length; i++) {
X509Certificate cert = chain[i];
System.out.println
(" " + (i + 1) + " Subject " + cert.getSubjectDN());
System.out.println(" Issuer " + cert.getIssuerDN());
sha1.update(cert.getEncoded());
System.out.println(" sha1 " + toHexString(sha1.digest()));
md5.update(cert.getEncoded());
System.out.println(" md5 " + toHexString(md5.digest()));
System.out.println();
}
int k = 0;
if (prompt) {
System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
String line = reader.readLine().trim();
try {
k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
} catch (NumberFormatException e) {
System.out.println("KeyStore not changed");
return;
}
}
X509Certificate cert = chain[k];
String alias = host + "-" + (k + 1);
ks.setCertificateEntry(alias, cert);
OutputStream out = new FileOutputStream(file);
ks.store(out, passphrase);
out.close();
System.out.println();
System.out.println(cert);
System.out.println();
System.out.println
("Added certificate to keystore 'jssecacerts' using alias '"
+ alias + "'");
}
private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();
private static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 3);
for (int b : bytes) {
b &= 0xff;
sb.append(HEXDIGITS[b >> 4]);
sb.append(HEXDIGITS[b & 15]);
sb.append(' ');
}
return sb.toString();
}
private static class SavingTrustManager implements X509TrustManager {
private final X509TrustManager tm;
private X509Certificate[] chain;
SavingTrustManager(X509TrustManager tm) {
this.tm = tm;
}
@Override
public X509Certificate[] getAcceptedIssuers() {
throw new UnsupportedOperationException();
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
throw new UnsupportedOperationException();
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
this.chain = chain;
tm.checkServerTrusted(chain, authType);
}
}
}
Já revirei esse codigo e não consigo achar o erro, creio que seja em algo com relação ao certificado mesmo, mas já não sei mais o que tentar.
O certificado, pelo que eu entendi, é um A1, certo?
Verifique se o tamanho do .pfx está com 7KB. Muitos dos erros de conexão é porque o .pfx está com 3KB.
Isso quer dizer que a cadeia certificadora do teu certificado não está presente no arquivo .pfx.
Para resolver isso, importe ele no IE e, através das opções, exporte novamente marcando a inclusão
de toda a cadeia. Deve gerar um arquivo de 7KB.
Alencar
*jeanpablojp
Cara se vc quer apenas gerar uma wsdl para montar um webservice , eu faço da seguinte maneira
Pega o endereço do serviço no site do sefaz cola o endereço na url do browser
E acrescenta no final do endereco ?wsdl vai carregar na tela um xml salva esse xml q apareceu com a extensão .wsdl
Ai está pronto para gerar as classes de serviços
Flw
O certificado, pelo que eu entendi, é um A1, certo?
Verifique se o tamanho do .pfx está com 7KB. Muitos dos erros de conexão é porque o .pfx está com 3KB.
Isso quer dizer que a cadeia certificadora do teu certificado não está presente no arquivo .pfx.Para resolver isso, importe ele no IE e, através das opções, exporte novamente marcando a inclusão
de toda a cadeia. Deve gerar um arquivo de 7KB.Alencar
Muito obrigado mesmo.
Funcionou blz agora.
Bom Dia
Alguem sabe onde posso encontrar os Schemas da nfe 2.0
Bom Dia!Alguem poderia me passar os Schemas da NFe 2.0 por favor, procurei na internet e não encontrei. Se alguem puder me passar o link para download ou os arquivos mesmo.^^
ta na mão.
http://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=/fwLvLUSmU8=
Vlw mesmo aix^^
tinha olhado na busca, mas nem olhei nos links mesmo do site^^ VLW
Alguém do RS sabe sobre o Registro de Saída que consta no Ajuste SINIEF 8 de 30/09/2011 e entra
em vigor em 01/01/2012?
Consta no Ajuste que o layout estaria no “Manual de Integração - Contribuinte”, conforme o texto:
ALencar
Pessoal, estou com problemas no uso do Token ACS CryptoMate.
Pelo Admin Tool consigo ver o certificado do cliente assim como sua chave privada.
Mas, via java ou keytool, gera o seguinte erro:
<blockquote>Erro extraindo privateKey do token: java.security.KeyStoreException: invalid Key
Store state: found 9 private keys sharing CKA_ID dd048052-aee7-4abe-8ae9-5cd9b3e
2e550
java.security.ProviderException: java.security.KeyStoreException: invalid KeySto
re state: found 9 private keys sharing CKA_ID dd048052-aee7-4abe-8ae9-5cd9b3e2e5
50
at sun.security.pkcs11.P11KeyStore.engineGetKey(P11KeyStore.java:319)
at java.security.KeyStore.getKey(Unknown Source)
at br.com.philler.util.Utils.getPrivateKeyFromToken(Unknown Source)
at br.com.philler.util.Utils.getAssinaturaXML(Unknown Source)
at br.com.philler.main.AssinarXML.assinar(Unknown Source)
at br.com.philler.main.Principal.main(Unknown Source)
Caused by: java.security.KeyStoreException: invalid KeyStore state: found 9 priv
ate keys sharing CKA_ID dd048052-aee7-4abe-8ae9-5cd9b3e2e550
at sun.security.pkcs11.P11KeyStore.getTokenObject(P11KeyStore.java:2330)
at sun.security.pkcs11.P11KeyStore.engineGetKey(P11KeyStore.java:297)
... 5 more
O mesmo erro tentando alterar o alias pelo keytool:
C:\PROGRA~1\Java\jre6\bin>keytool.exe -changealias -keystore NONE -storetype PKC
S11 -storepass 11111111 -alias “NOME DO CLIENTE:[telefone removido]” -destalias
[telefone removido]
erro de keytool: java.security.KeyStoreException: invalid KeyStore state: found
9 private keys sharing CKA_ID dd048052-aee7-4abe-8ae9-5cd9b3e2e550
Este hardware é relativamente novo no mercado brasileiro e com isso, pouca informação na net.
Temos algum colega que já tenha passado por isso e resolveu a questão?
Obrigado pela atenção.
Alencar
Colegas de luta, alguma dica sobe este infeliz token da ACS?
Alencar
log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAXUtils).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:438)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:196)
at Classes.NfeConsultaStatusServicoA3.main(NfeConsultaStatusServicoA3.java:121)
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:179)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:186)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:116)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:130)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:560)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
... 9 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Provider.java:1245)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:112)
... 18 more
Caused by: java.security.NoSuchProviderException: no such provider: SunPKCS11-SmartCard
at sun.security.jca.GetInstance.getService(GetInstance.java:66)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.Security.getImpl(Security.java:662)
at java.security.KeyStore.getInstance(KeyStore.java:632)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:145)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Classes;
import java.net.URL;
import java.security.KeyStore;
import java.security.Provider;
import java.security.Security;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.util.AXIOMUtil;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub;
import java.io.InputStream;
/**
*
* @author JavaC - Java Community
*/
public class NfeConsultaStatusServicoA3 {
public static void main(String[] args) {
try {
/**
* 1) codigoDoEstado = Codigo do Estado conforme tabela IBGE.
*
* 2) url = Endereco do WebService para cada Estado.
* Ver relacao dos enderecos em:
* Para Homologacao: http://hom.nfe.fazenda.gov.br/PORTAL/WebServices.aspx
* Para Producao: http://www.nfe.fazenda.gov.br/portal/WebServices.aspx
*
* 3) senhaDoCertificadoDoCliente = Senha do Certificado A3 do Cliente.
*
* 4) arquivoCacertsGeradoParaCadaEstado = Arquivo com os Certificados necessarios para
* acessar o WebService. Pode ser gerado com a Classe NFeBuildCacerts.
*
* 5)Nesse programa você pode alterar o nome do eToken, esse é o nome que vai no name
* (isso porque você ter vários eTokens com nomes diferentes, ex: eToken-MATRIZ).
*/
String codigoDoEstado = "43";
URL url = new URL("https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx");
String senhaDoCertificadoDoCliente = "XXX";
String arquivoCacertsGeradoParaCadaEstado = "C:/nfe2/NFeCacertsss";
/**
* Tipo de Certificados.
* A3CARTAO = A3 Cartão;
* A3TOKEN = A3 Token;
*/
String tipoCertificado = "A3CARTAO";
//String tipoCertificado = "A3TOKEN";
/**
* Informacoes do Certificado Digital.
*/
String fileCfg = "";
if ("A3CARTAO".equals(tipoCertificado)) {
fileCfg = "C:/nfe2/smartcard.cfg";
}
else if ("A3TOKEN".equals(tipoCertificado)) {
fileCfg = "C:/nfe2/Token.cfg";
}
else {
throw new Exception("Tipo de certificado inválido");
}
//forma 1 de criar o SunPKCS:
//Provider p = new sun.security.pkcs11.SunPKCS11(ConfigServise.leitorSCR3310());
//forma 2 de criar o SunPKCS:
Provider p = new sun.security.pkcs11.SunPKCS11(fileCfg);
Security.addProvider(p);
char[] pin = senhaDoCertificadoDoCliente.toCharArray();
KeyStore ks = KeyStore.getInstance("pkcs11", p);
ks.load(null, pin);
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
if ("A3CARTAO".equals(tipoCertificado)) {
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SmartCard");
}
else if ("A3TOKEN".equals(tipoCertificado)) {
System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-eToken");
}
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", arquivoCacertsGeradoParaCadaEstado);
/**
* Xml de Consulta.
*/
StringBuilder xml = new StringBuilder();
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
.append("<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<tpAmb>2</tpAmb>")
.append("<cUF>")
.append(codigoDoEstado)
.append("</cUF>")
.append("<xServ>STATUS</xServ>")
.append("</consStatServ>");
OMElement ome = AXIOMUtil.stringToOM(xml.toString());
NfeStatusServico2Stub.NfeDadosMsg dadosMsg = new NfeStatusServico2Stub.NfeDadosMsg();
dadosMsg.setExtraElement(ome);
NfeStatusServico2Stub.NfeCabecMsg nfeCabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
/**
* Codigo do Estado.
*/
nfeCabecMsg.setCUF(codigoDoEstado);
/**
* Versao do XML
*/
nfeCabecMsg.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
NfeStatusServico2Stub stub = new NfeStatusServico2Stub(url.toString());
NfeStatusServico2Stub.NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(dadosMsg, nfeCabecMsgE);
System.out.println(result.getExtraElement().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
...Segue minha classe:Caused by: java.security.NoSuchProviderException: no such provider: SunPKCS11-SmartCard... /** * Informacoes do Certificado Digital. */ String fileCfg = ""; ---> AQUI if ("A3CARTAO".equals(tipoCertificado)) { fileCfg = "C:/nfe2/smartcard.cfg"; } else if ("A3TOKEN".equals(tipoCertificado)) { fileCfg = "C:/nfe2/Token.cfg"; } else { throw new Exception("Tipo de certificado inválido"); } //forma 1 de criar o SunPKCS: //Provider p = new sun.security.pkcs11.SunPKCS11(ConfigServise.leitorSCR3310()); //forma 2 de criar o SunPKCS: ---> AQUI 2 Provider p = new sun.security.pkcs11.SunPKCS11(fileCfg); Security.addProvider(p); char[] pin = senhaDoCertificadoDoCliente.toCharArray(); KeyStore ks = KeyStore.getInstance("pkcs11", p); ks.load(null, pin);
A exceção gera no "AQUI 2", provavemente pela má configuração em "AQUI 1".
Verifique se o name e o path do cfg estão apontando para a dll correta.
Alencar
Não, pior que a dll ta setada certinha mesmo…
Eu tava usando o jdk 6, aí olhei o código dessa classe sunpkcs11 e vi que tinha muitos erros, achei estranho por isso baixei o jdk 7 e instalei, vi que ocorreram varias mudanças na classe e agora ela está sem acusar nenhum erro. Porém quando tento executar meu programa ele retorna a mesna mensagem de erro de antes.
Não, pior que a dll ta setada certinha mesmo…
Eu tava usando o jdk 6, aí olhei o código dessa classe sunpkcs11 e vi que tinha muitos erros, achei estranho por isso baixei o jdk 7 e instalei, vi que ocorreram varias mudanças na classe e agora ela está sem acusar nenhum erro. Porém quando tento executar meu programa ele retorna a mesna mensagem de erro de antes.
Perguntas:
- É token? Se sim, já acessou pelo próprio software dele? O PIN está correto?
- É Smartcard? Se sim, a leitora está ok? Se sim, já acessou pelo software do cartão? O PIN está correto?
Se você recém instalou o software do token/sc e não reiniciou o SO ainda, faça!
Se tudo acima está ok, parta para a debugação, verificando se o que está sendo ligo do cfg é realmente o que você precisa, se o PIN está certo o prg, etc…
Alencar
Está tudo correto, ja fiz varias vezes acesso ao wsdl e outros serviços em que é necessario a autenticação do cartão com senha.
Cola aqui o conteúdo dos .cfg que você cita no fonte:
if ("A3CARTAO".equals(tipoCertificado)) {
fileCfg = "C:/nfe2/smartcard.cfg";
}
else if ("A3TOKEN".equals(tipoCertificado)) {
fileCfg = "C:/nfe2/Token.cfg";
}
smartcart.cfg:
name = SafeWeb
library = c:\windows\system32\cmP11.dll
token.cfg:
name=SafeWeb
library = c:\windows\system32\cmp11.dll
smartcart.cfg:
name = SafeWeb
library = c:\windows\system32\cmP11.dlltoken.cfg:
name=SafeWeb
library = c:\windows\system32\cmp11.dll
Ta ae o teu problema. No name está “SafeWeb” e no fonte esta
if ("A3CARTAO".equals(tipoCertificado)) {
System.setProperty("javax.net.ssl.keyStoreProvider","SunPKCS11-SmartCard");
}
onde deveria ser: “SunPKCS11-SafeWeb” que é a junção fixa de “SunPKCS11-” + o valor de name do .cfg
Alencar
putz era esse mesmo o problema,valeu ai, tava quebrando a cabeça tentando descobrir o erro…
Eu não entendi muito bem o que faz esse System.setProperties
putz era esse mesmo o problema,valeu ai, tava quebrando a cabeça tentando descobrir o erro…
Eu não entendi muito bem o que faz esse System.setProperties
São variáveis do sistema, tipo quando você setá algo no PATH do windows…
Alencar
philler e mateusviccari,
Estou vendo vocês com esses problemas com certificado A3 e me surgiu uma dúvida me ajudem ai por favor, o sistema aqui da minha empresa funciona já faz tempo mas é com certificado A1.
Ano que vem vamos colocar nas filiais que são lojas e precisa funcionar com certificado A3.
Eu já fiz alguns breves testes com o certificado A3 porém eu peguei eles a partir dos certificados instalados no Windows.
Tirando esse problema do cliente ser obrigado a ter windows, tem algum problema utilizar essa abordagem?
Tem alguma vantagem em fazer o que vocês fazem criando os arquivos de configuração com a dll de cada certificado.
…
Tem alguma vantagem em fazer o que vocês fazem criando os arquivos de configuração com a dll de cada certificado.
Rafael, em se tratando de A3, não existe certificado instalado no windows.
Até aparece nos certificados do IE, quando o cartão/token está espetado na máquina ou quando vocẽ exporta o certificado
do cartão/token e importa no IE.
Mas isso não quer dizer que você possa assinar NFe assim. A PK de A3 não sai do hardware. O mesmo precisa estar espetado
na máquina que está emitindo a NFe.
Alencar
valeu Philler, bom eu fiz um teste aqui obtendo o certificado a partir do repositório do Windows (com o provider “SunMSCAPI” do Java 6) , eu sei que na verdade não está instalado e que ele precisa estar plugado mas em um teste muito rápido que eu fiz eu assinei um XML com o seguinte código:
KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
ks.load(null, null);
Enumeration<String> aliasEnum = ks.aliases();
while (aliasEnum.hasMoreElements()) {
String aliasKey = (String) aliasEnum.nextElement();
if (ks.isKeyEntry(aliasKey)) {
new Assinador().assinar(xml, ks, (KeyStore.PrivateKeyEntry)ks.getEntry(aliasKey, new KeyStore.PasswordProtection("0000".toCharArray()))));
}
}
no meu teste quando eu executo o meu Assinador().assinar ele sobe aquela telinha do Certificado pedindo a Senha e assina o XML normalmente. Se o certificado não estiver plugado ele nem retorna no Enum do “ks.aliases()”, desse jeito eu consegui assinar o XML sem nenhuma configuração de .cfg nem nada de DLL, então eu fiquei na dúvida se funciona em todos os casos, por isso estou perguntando aqui pra vocês, talvez alguém já tenha usado essa abordagem e teve algum problema.
Do jeito que vocês estão fazendo ai o usuário também é obrigado a digitar a senha do certificado em toda assinatura, ou existe uma maneira de ele digitar uma vez só?
Buenas, eu costumo guardar a senha criptografada em um arquivo de configuração. Mas, pelo repositório do Windows, creio que não vá adiantar.
Tem que testar o acesso setando a senha. Desta forma ai nunca fiz.
Alencar
E aí galera alguem teria exemplos de XML versão 2 pra cada serviço?
Pessoal, não estou conseguindo acesso a um token Aladdin no win 7 64bits.
Diz um site que o SunProvider não existe para esta plataforma.
http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html#P11Provider
Alguém já passou por isso? Alguma solução ou afirmação que seja válida e confiável
para repassar ao cliente?
Obrigado pela atenção.
Alencar
Alguém do RS sabe sobre o Registro de Saída que consta no Ajuste SINIEF 8 de 30/09/2011 e entra
em vigor em 01/01/2012?
Consta no Ajuste que o layout estaria no “Manual de Integração - Contribuinte”, conforme o texto:ALencar
Ninguém???
Pessoal, me deparei com algumas cadeias de certificação diferentes, começando pelas da Raiz Brasileira
que agora tem a v2 e a v3.
Como dica fica o alerta: se a cadeia não estiver correta (com todas as letras) os acessos podem falhar, ok?
Para quem interessar: http://www.iti.gov.br/twiki/bin/view/Certificacao/RepositoriodaACRaiz
Aproveitando, pergunto: alguém sabe dizer o porque o certificado da "Autoridade Certificadora Raiz Brasileira v3"
não é auto-assinado?
Os demais são corretamente pois eles são seus próprios emissores, portanto o v3 também deveria ser.
Mandei um email para [email removido] perguntando. Se alguém souber algo, por favor, nos informe.
Alencar
gente.. estou com algumas dúvidas bem dificeisvamos la...
consegui gerar os xmls e assinar!
certificado A3mas.. agora não sei como faz pra consumir o web service
achei aqui no forum um codigo asism
package webService; import java.security.Security; import br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico2.NfeStatusServico2Locator; import br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico2.NfeStatusServico2Soap12; public class Teste { public static void main(String[] args) { try { System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true"); System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); System.setProperty("javax.net.ssl.keyStoreType", "PKCS11"); System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); System.setProperty("javax.net.ssl.keyStorePassword", "senha");//Aqui a senha deste certificado System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore", "D:/VipSystem/certificados/keystore.jks"); NfeStatusServico2Locator locator = new NfeStatusServico2Locator(); NfeStatusServico2Soap12 service = locator.getNfeStatusServico2Soap12(); } catch (Exception e) { e.printStackTrace(); } } }ja gerei as classes a partir do wsdl do web Service
e o codigo acima gera o seguinte
WARN (org.apache.axis.utils.JavaUtils:1308) - Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
procurei na internet.. alguns falam algo de axis!
oque eu faço com o axis??
sistema desktop
muito obrigado
ola estou com problemas para assinar um xml utilizando certificado A3 eu uso um e-cnpj usb com java card e modelo scr3310 não sei como gerar a assinatura por ele de dentro da minha aplicação pode me dizer como vc gerou a sua assinatura pois não sei nem como acessar e gerar minha assinatura, qualquer ajuda é valida e eu agradeço.
ola estou com problemas para assinar um xml utilizando certificado A3 eu uso um e-cnpj usb com java card e modelo scr3310 não sei como gerar a assinatura por ele de dentro da minha aplicação pode me dizer como vc gerou a sua assinatura pois não sei nem como acessar e gerar minha assinatura, qualquer ajuda é valida e eu agradeço.
Procura no forum da Nota Eletronica aqui no GUJ mesmo.
Tem bastante ajuda e codigo para este fim.
Alencar
Alguém do RS sabe sobre o Registro de Saída que consta no Ajuste SINIEF 8 de 30/09/2011 e entra
em vigor em 01/01/2012?
Consta no Ajuste que o layout estaria no “Manual de Integração - Contribuinte”, conforme o texto:ALencar
Ninguém???
Colegas do RS, estou a caça de informações sobre o Registro de Saídas do projeto NFe.
Já existe a obrigatoriedade do fornecimento da Data/Hora de saída, mas tem clientes que não querem ou não podem prever isso.
Por isso a necessidade do registro do evento, previsto no Ajuste Sinief 8 de 30/09/2011.
Mas não consigo achar nada oficial. Algo parecido só na SEFAZ de MG.
Por favor, quem tiver alguma informação, mesmo que seja de “não haver informação oficial” repasse ao grupo.
Obrigado a todos pela atenção.
Alencar
Pessoal, estou enfrentando um problema com um novo certificado de um cliente tipo A1 mas o problema acontece apenas na SEFAZ MG e no ambiente de produção no de homologação não acontece.
Todo o processo de comunicação ocorre sem problemas, porém, a nota volta com a seguinte rejeição:
999-Rejeicao: Erro nao catalogado nao foi possivel encontrar o certificado da AC
o Certificado é emitido pela AC SINCOR G3, já baixei o certificado RAIZ no site deles ja exportei o pfx de tudo que é jeito e nada a rejeição permanece. Porém SÓ em MG e SÓ em produção.
Utilizando o emissor da receita federal ocorre um erro de “SSLHandshakeException: Received fatal alert: unknown_ca”
Alguém sabe o que pode ser isso, a SEFAZ de MG está com contingencia ativada, será que é algum erro la na SEFAZ?
Boa tarde, Alguém de vocês está utilizando o certificado A1 emitido apatir de 01/01/2012, se alguém estiver utilizando poderia me responder se teve algum tipo de problema ou se teve que alterar a maneira de assinar as notas fiscais?
att.
Leonardo
Boa tarde, Alguém de vocês está utilizando o certificado A1 emitido apatir de 01/01/2012, se alguém estiver utilizando poderia me responder se teve algum tipo de problema ou se teve que alterar a maneira de assinar as notas fiscais?att.
Leonardo
O que mudou em algumas ACs é a cadeia validadora, onde a raiz é a v2.
Se colocar todos os certificados da cadeia de acordo com a AC que emitiu teu A1, não deve ter problemas.
Alencar
Bom dia,
Estou com um problema apartir do dia 02/03/2012 a sefaz de SP não vai mais aceitar ac V1 somente com a versão V2, baixei a o certificado Certificado Digital ICP-Brasil V2 e executei o procedimento comum
C:\Program Files (x86)\Java\jre6\bin>keytool -import -alias nfe1 -keystore g:\certificados\nfe1.jks -file g:\certificados\nf1.cer
coloquei na minha classe java
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore","g:/certificados/nfe1.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
o Resultado foi:
[INFO] Unable to sendViaPost to url[https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx]
org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Se alguém puder me ajudar
Desde de já meus agradecimentos.
Leonardo
Bom dia,Estou com um problema apartir do dia 02/03/2012 a sefaz de SP não vai mais aceitar ac V1 somente com a versão V2, baixei a o certificado Certificado Digital ICP-Brasil V2 e executei o procedimento comum
C:\Program Files (x86)\Java\jre6\bin>keytool -import -alias nfe1 -keystore g:\certificados\nfe1.jks -file g:\certificados\nf1.cer
coloquei na minha classe java
System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore","g:/certificados/nfe1.jks"); System.setProperty("javax.net.ssl.trustStorePassword", "123456");o Resultado foi:
[INFO] Unable to sendViaPost to url[https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx]
org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetSe alguém puder me ajudar
Desde de já meus agradecimentos.
Leonardo
Estou com mesmo problema alguem tem algum JKS gerado ai para me passar.
leonardoanselmo2007 e [email removido]
qdo baixar o zip da nova cadeia de certificado vai vir + ou - 107 certificados diferentes eu nao instalei todos somente os ICP-Brasilv2.crt e ICP-Brasilv3.crt e meus servidores voltaram a operar normalmente no comando que vcs descreveram tenta executar como o comando abaixo
flw
Alguém me dá um help!
Meu arquivo xml só tinha namespace especificado na tag NFe…
No momento em que faço o parse dentro da classe Assinador --> Document doc = docBuilder.parse();new FileInputStream(caminhoArquivo)
Aí o atributo de namespace (xmlns=“http://www.portalfiscal.inf.br/nfe”) se repete para todas as tags do arquivo xml.
Já tentei retirar, mas no máximo fica em todas as tags o namespace vazio (xmlns="")
Alguem já passou por isso?
Segue o arquivo xml.
<?xml version="1.0" encoding="UTF-8"?><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe27110112272084000100550010000081421000081420" versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><ide xmlns="http://www.portalfiscal.inf.br/nfe"><cUF xmlns="http://www.portalfiscal.inf.br/nfe">27</cUF><cNF xmlns="http://www.portalfiscal.inf.br/nfe">00008142</cNF><natOp xmlns="http://www.portalfiscal.inf.br/nfe">Outra entrada de mercadoria no especificada</natOp><indPag xmlns="http://www.portalfiscal.inf.br/nfe">2</indPag><mod xmlns="http://www.portalfiscal.inf.br/nfe">55</mod><serie xmlns="http://www.portalfiscal.inf.br/nfe">1</serie><nNF xmlns="http://www.portalfiscal.inf.br/nfe">8142</nNF><dEmi xmlns="http://www.portalfiscal.inf.br/nfe">2011-01-06</dEmi><tpNF xmlns="http://www.portalfiscal.inf.br/nfe">0</tpNF><cMunFG xmlns="http://www.portalfiscal.inf.br/nfe">2704302</cMunFG><tpImp xmlns="http://www.portalfiscal.inf.br/nfe">1</tpImp><tpEmis xmlns="http://www.portalfiscal.inf.br/nfe">1</tpEmis><cDV xmlns="http://www.portalfiscal.inf.br/nfe">0</cDV><tpAmb xmlns="http://www.portalfiscal.inf.br/nfe">1</tpAmb><finNFe xmlns="http://www.portalfiscal.inf.br/nfe">1</finNFe><procEmi xmlns="http://www.portalfiscal.inf.br/nfe">0</procEmi><verProc xmlns="http://www.portalfiscal.inf.br/nfe">2.42</verProc></ide><emit xmlns="http://www.portalfiscal.inf.br/nfe"><CNPJ xmlns="http://www.portalfiscal.inf.br/nfe">12272084000100</CNPJ><xNome xmlns="http://www.portalfiscal.inf.br/nfe">Eletrobras Distribuio Alagoas</xNome><enderEmit xmlns="http://www.portalfiscal.inf.br/nfe"><xLgr xmlns="http://www.portalfiscal.inf.br/nfe">Av. Fernandes Lima</xLgr><nro xmlns="http://www.portalfiscal.inf.br/nfe">3349</nro><xBairro xmlns="http://www.portalfiscal.inf.br/nfe">Gruta de Lourdes</xBairro><cMun xmlns="http://www.portalfiscal.inf.br/nfe">2704302</cMun><xMun xmlns="http://www.portalfiscal.inf.br/nfe">MACEIO</xMun><UF xmlns="http://www.portalfiscal.inf.br/nfe">AL</UF><CEP xmlns="http://www.portalfiscal.inf.br/nfe">57057900</CEP><xPais xmlns="http://www.portalfiscal.inf.br/nfe">BRASIL</xPais><fone xmlns="http://www.portalfiscal.inf.br/nfe">[telefone removido]</fone></enderEmit><IE xmlns="http://www.portalfiscal.inf.br/nfe">240071778</IE><CRT xmlns="http://www.portalfiscal.inf.br/nfe">3</CRT></emit><dest xmlns="http://www.portalfiscal.inf.br/nfe"><CPF xmlns="http://www.portalfiscal.inf.br/nfe">[telefone removido]</CPF><xNome xmlns="http://www.portalfiscal.inf.br/nfe">JOAO MOREIRA DA SILVA (1384)</xNome><enderDest xmlns="http://www.portalfiscal.inf.br/nfe"><xLgr xmlns="http://www.portalfiscal.inf.br/nfe">CJ EUSTAQUIO GOMES DE MELO I</xLgr><nro xmlns="http://www.portalfiscal.inf.br/nfe">105</nro><xBairro xmlns="http://www.portalfiscal.inf.br/nfe">EUSTAQUIO GOMES</xBairro><cMun xmlns="http://www.portalfiscal.inf.br/nfe">2704302</cMun><xMun xmlns="http://www.portalfiscal.inf.br/nfe">MACEIO</xMun><UF xmlns="http://www.portalfiscal.inf.br/nfe">AL</UF><xPais xmlns="http://www.portalfiscal.inf.br/nfe">BRASIL</xPais></enderDest><IE xmlns="http://www.portalfiscal.inf.br/nfe"/></dest><retirada xmlns="http://www.portalfiscal.inf.br/nfe"><CNPJ xmlns="http://www.portalfiscal.inf.br/nfe">12272084000100</CNPJ><xLgr xmlns="http://www.portalfiscal.inf.br/nfe">Av. Gov Luiz Cavalcante, Dist. Industrial</xLgr><nro xmlns="http://www.portalfiscal.inf.br/nfe">0</nro><xBairro xmlns="http://www.portalfiscal.inf.br/nfe">Tabuleiro dos Martins</xBairro><cMun xmlns="http://www.portalfiscal.inf.br/nfe">2704302</cMun><xMun xmlns="http://www.portalfiscal.inf.br/nfe">MACEIO</xMun><UF xmlns="http://www.portalfiscal.inf.br/nfe">AL</UF></retirada><det nItem="1" xmlns="http://www.portalfiscal.inf.br/nfe"><prod xmlns="http://www.portalfiscal.inf.br/nfe"><cProd xmlns="http://www.portalfiscal.inf.br/nfe">4110/82850</cProd><cEAN xmlns="http://www.portalfiscal.inf.br/nfe"/><xProd xmlns="http://www.portalfiscal.inf.br/nfe">GELADEIRA EFICIENTE 275 L/GELADEIRA 220 VOLTS, UMA PORTA, CONSUMO MAXIMO DE 24 KW/h MS, CAPACIDADE BRUTA MINIMA DE 275</xProd><NCM xmlns="http://www.portalfiscal.inf.br/nfe">84</NCM><CFOP xmlns="http://www.portalfiscal.inf.br/nfe">1949</CFOP><uCom xmlns="http://www.portalfiscal.inf.br/nfe">UN</uCom><qCom xmlns="http://www.portalfiscal.inf.br/nfe">1.0000</qCom><vUnCom xmlns="http://www.portalfiscal.inf.br/nfe">543.4600</vUnCom><vProd xmlns="http://www.portalfiscal.inf.br/nfe">543.46</vProd><cEANTrib xmlns="http://www.portalfiscal.inf.br/nfe"/><uTrib xmlns="http://www.portalfiscal.inf.br/nfe">UN</uTrib><qTrib xmlns="http://www.portalfiscal.inf.br/nfe">1.0000</qTrib><vUnTrib xmlns="http://www.portalfiscal.inf.br/nfe">543.4600</vUnTrib><indTot xmlns="http://www.portalfiscal.inf.br/nfe">1</indTot></prod><imposto xmlns="http://www.portalfiscal.inf.br/nfe"><ICMS xmlns="http://www.portalfiscal.inf.br/nfe"><ICMS40 xmlns="http://www.portalfiscal.inf.br/nfe"><orig xmlns="http://www.portalfiscal.inf.br/nfe">0</orig><CST xmlns="http://www.portalfiscal.inf.br/nfe">40</CST></ICMS40></ICMS><IPI xmlns="http://www.portalfiscal.inf.br/nfe"><cEnq xmlns="http://www.portalfiscal.inf.br/nfe">999</cEnq><IPINT xmlns="http://www.portalfiscal.inf.br/nfe"><CST xmlns="http://www.portalfiscal.inf.br/nfe">53</CST></IPINT></IPI><PIS xmlns="http://www.portalfiscal.inf.br/nfe"><PISNT xmlns="http://www.portalfiscal.inf.br/nfe"><CST xmlns="http://www.portalfiscal.inf.br/nfe">08</CST></PISNT></PIS><COFINS xmlns="http://www.portalfiscal.inf.br/nfe"><COFINSNT xmlns="http://www.portalfiscal.inf.br/nfe"><CST xmlns="http://www.portalfiscal.inf.br/nfe">08</CST></COFINSNT></COFINS></imposto></det><total xmlns="http://www.portalfiscal.inf.br/nfe"><ICMSTot xmlns="http://www.portalfiscal.inf.br/nfe"><vBC xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vBC><vICMS xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vICMS><vBCST xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vBCST><vST xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vST><vProd xmlns="http://www.portalfiscal.inf.br/nfe">543.46</vProd><vFrete xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vFrete><vSeg xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vSeg><vDesc xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vDesc><vII xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vII><vIPI xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vIPI><vPIS xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vPIS><vCOFINS xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vCOFINS><vOutro xmlns="http://www.portalfiscal.inf.br/nfe">0.00</vOutro><vNF xmlns="http://www.portalfiscal.inf.br/nfe">543.46</vNF></ICMSTot><retTrib xmlns="http://www.portalfiscal.inf.br/nfe"/></total><transp xmlns="http://www.portalfiscal.inf.br/nfe"><modFrete xmlns="http://www.portalfiscal.inf.br/nfe">1</modFrete><transporta xmlns="http://www.portalfiscal.inf.br/nfe"/></transp><infAdic xmlns="http://www.portalfiscal.inf.br/nfe"/></infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" xmlns="http://www.w3.org/2000/09/xmldsig#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" xmlns="http://www.w3.org/2000/09/xmldsig#"/><Reference URI="#NFe27110112272084000100550010000081421000081420" xmlns="http://www.w3.org/2000/09/xmldsig#"><Transforms xmlns="http://www.w3.org/2000/09/xmldsig#"><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" xmlns="http://www.w3.org/2000/09/xmldsig#"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" xmlns="http://www.w3.org/2000/09/xmldsig#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns="http://www.w3.org/2000/09/xmldsig#"/><DigestValue xmlns="http://www.w3.org/2000/09/xmldsig#">IpTcFyHtlT5vhI7TkABCQUVFFic=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">KBp5xMLj3YkfEqAtykEVpp7uRMoF54Q8kB2orxD3kw6QCBazda8Q602iZikX/l391V8JNNsHmDHx
xeKYQ9m1j4emZ4KYXWdiM942zHcJSoj4YGD+f1CZST4GLW6k8INasz3mljXmW6ZFk0rnlcqlaLfb
1fWo+WBMoCR8RMvJdHA=</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Certificate xmlns="http://www.w3.org/2000/09/xmldsig#">MIIGPDCCBSSgAwIBAgIIBbUFJi4sQwEwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCQlIxEzAR
BgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwg
djEwHhcNMTEwOTIzMTMzOTU4WhcNMTIwOTIyMTMzOTU4WjCB6jELMAkGA1UEBhMCQlIxEzARBgNV
BAoTCklDUC1CcmFzaWwxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDIx
NDA2MjAxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UE
CxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNP
KTEoMCYGA1UEAxMfQ09NUEFOSElBIEVORVJHRVRJQ0EgREUgQUxBR09BUzCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEA28GaQh2qWPavzKfFtKM7bRoIHmFI+ZaVUxSKJjgnKuUeKF6m6JpQm2DO
68DCscJUoWplFxsRbphBaY3N4NMKSwxEH+ngSTesCZwQGBeZ7r8LHqTF4aGQxMtAkmNab2A6iFpT
2RbR2Zx8MjN+Y/9EBVunCBMP7rrjF0sMNolP0x0CAwEAAaOCAwUwggMBMA4GA1UdDwEB/wQEAwIF
4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwHwYDVR0jBBgwFoAUt2CoW/mypq4A7XTr
1UrJlmhm9VwwgcgGA1UdEQSBwDCBvYEZUk9TRUxJLkdPU01BT0BDRUFMLkNPTS5CUqA+BgVgTAED
BKA1EzMyNTAyMTk1MzE1NDY5NTgxNjkxMDAwMDAwMDAwMDAwMDAwME1HLTExMTE1ODJTU1AgTUeg
LAYFYEwBAwKgIxMhTUFSQ09TIEFVUkVMSU8gTUFEVVJFSVJBIERBIFNJTFZBoBkGBWBMAQMDoBAT
DjEyMjcyMDg0MDAwMTAwoBcGBWBMAQMHoA4TDDAwMDAwMDAwMDAwMDBXBgNVHSAEUDBOMEwGBmBM
AQIBBjBCMEAGCCsGAQUFBwIBFjRodHRwOi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIv
cmVwb3NpdG9yaW8vZHBjMIHwBgNVHR8EgegwgeUwSaBHoEWGQ2h0dHA6Ly93d3cuY2VydGlmaWNh
ZG9kaWdpdGFsLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwQ6BBoD+GPWh0
dHA6Ly9sY3IuY2VydGlmaWNhZG9zLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5j
cmwwU6BRoE+GTWh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2Ev
cmVwb3NpdG9yaW8vbGNyL3NlcmFzYWNkdjEuY3JsMIGXBggrBgEFBQcBAQSBijCBhzBHBggrBgEF
BQcwAoY7aHR0cDovL3d3dy5jZXJ0aWZpY2Fkb2RpZ2l0YWwuY29tLmJyL2NhZGVpYXMvc2VyYXNh
Y2R2MS5wN2IwPAYIKwYBBQUHMAGGMGh0dHA6Ly9vY3NwLmNlcnRpZmljYWRvZGlnaXRhbC5jb20u
YnIvc2VyYXNhY2R2MTANBgkqhkiG9w0BAQUFAAOCAQEAN42Mud7qdxsMaxXqA8+BK3RKjkE/xImp
w64cmULatxRRIRgKc9O12ia9ulcN16gXmLGJjOQZbTb9AIG5E0u9a0W/YTf6Pze7bfshLsTiLqGy
yKcqEN2bTCT79ZLfDiX3sDv+/RgW71AZTQMxuzOIL5d19b1hyuKn41lCARFBZdbge9QCDW09ilbR
QsX+RYwyEq2B5NQ+b+BD4cbjHKoyecDoQXsAgc5mQ5Xb6qAG7/33catNEv5tW9X1T/PI3AKDIVyA
sdpISIVnlYl8c4SiVI8UZejWtLT9P00Fanl1DRirFt0eao6vLjNRKkIcHETG/M7jRjeHAx0O+RjC
mpvvzg==</X509Certificate></X509Data></KeyInfo></Signature></NFe>
Desculpa, a alteração na estrutura no xml ocorre logo após assinar.
Pessoal estou com a seguinte duvida ja instanciei meu bean TNfe e ja setei seus valores dei uma olha de como falso para converter isto em XML.
JAXBContext context = JAXBContext.newInstance(TNFe.class);
JAXBElement<TNFe> element = new ObjectFactory().createTNFe(nfe);
Marshaller marsh = context.createMarshaller();
marsh.marshal( element , new FileOutputStream(new File("/home/projeto/NFE/xml/nfe.xml")));
so que a seguinte propriedade nao existe.
new ObjectFactory().createTNFe(nfe);
somente este que existe
new ObjectFactory().createTNFe();
Obrigado !!!
alguém conseguiu assinar o xml com o novo certificado v2? eu não estou nem conseguindo ver o alias usando o keytool…
Qual a AC que emitiu o certificado?
Para o processo de assinatura em si, não tem diferença alguma ser da cadeia v2 ou v3.
O que pode trancar são os acessos aos ws se a cadeia não estiver correta e completa no ser A3.
Alencar
Então Alencar, foi emitido pela AC Certisign Multipla G5,
o certificado é da cadeia v2, estou tentando primeiramente pegar o Alias através do comando:
keytool -list -storetype pkcs12 -keystore C:\CertificadosHomologacao\cert.pfx
e da erro… e esse comando num certificado antigo mostra os detalhes na boa…
Então Alencar, foi emitido pela AC Certisign Multipla G5,
o certificado é da cadeia v2, estou tentando primeiramente pegar o Alias através do comando:
keytool -list -storetype pkcs12 -keystore C:\CertificadosHomologacao\cert.pfx
e da erro… e esse comando num certificado antigo mostra os detalhes na boa…
Posta o erro todo para analise. Parece ser senha inválida.
Alencar
dei um jeito de pegar o alias do certificado direto no java…
agora estou mudando os meus algoritmos de sha1 para SHA256… vou ver oque vai dar…
qq posto ai…
valeo por enquanto Alencar…
nao demorei muito Alencar…rsrs
qdo vou fazer o loado no meu Keystore, da esse erro…ja viu?
if(keyStore==null)
{
keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(dado, senha);
alias = getAlias(keyStore);
}
java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1277)
at java.security.KeyStore.load(KeyStore.java:1185)
at br.com.nfe.web.action.MeuAssinador.getCertificado(MeuAssinador.java:210)...
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore.b(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1274)
... 40 more
Alencar… tudo resolvido…
o filho da mãe me passou a senha errada
…
assinou o arquivo normalmente… acho que por enquanto esta resolvido… rsrs
abraco
nao demorei muito Alencar…rsrs
qdo vou fazer o loado no meu Keystore, da esse erro…ja viu?
if(keyStore==null) { keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(dado, senha); alias = getAlias(keyStore); }
java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded ...
Perguntinha básica: testou o acesso ao .pfx através do IE, por exemplo?
Tenta importar o pfx no IE para testar integridade do arquivo e senha.
Se funcionar, retorna aqui.
Alencar
Reference ref = fac.newReference("#" + id, fac.newDigestMethod( DigestMethod.SHA1, null), transformList, null, null);
// Create the SignedInfo.
SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,(C14NMethodParameterSpec) null),
fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
Collections.singletonList(ref));
Reference ref = fac.newReference("#" + id, fac.newDigestMethod( DigestMethod.SHA256, null), transformList, null, null);
String rsa_sha256 = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
// Create the SignedInfo.
SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE,(C14NMethodParameterSpec) null),
fac.newSignatureMethod(rsa_sha256, null),
Collections.singletonList(ref));
The value of the 'Algorithm' attribute does not equal its fixed value.
Caminho: Algorithm
depois eu importei no ie… com a senha certa…rs
e esta tudo certo com o certificado…
me diz uma coisa… na hora de assinar com esse certificado v2, vc precisa alterar a criptografia de rsa_sha1 para rsa_sha256 certo?
Não alterei nada no meu código para assinar com as demais cadeias e acredito que não tenha mudança alguma no algorítimo.
Alencar
hummm então eu estava viajando…
testei com uma nfe e a principio funcionou, agora tenho que testar a assinatura da nfse…
valeo de volta Alencar.
abraco
Estou com seguinte problema mando a NFe em homologacao SP recebo o recibo normal a hora que mando consultar o recibo ele mostra que estou com falha de schema XML.
meu retorno e este.
Retorno do Recibo
<retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006j</verAplic><nRec>351000061394658</nRec><cStat>225</cStat><xMotivo>Rejeição: Falha no Schema XML do lote de NFe</xMotivo><cUF>35</cUF></retConsReciNFe>
Outro detalhe quando mando validar meu xml neste link esta ok.
http://www.sefaz.rs.gov.br/nfe/nfe-val.aspx
O que sera que pode ser alguem pode me ajudar.
]Estou com seguinte problema mando a NFe em homologacao SP recebo o recibo normal a hora que mando consultar o recibo ele mostra que estou com falha de schema XML.meu retorno e este.
Retorno do Recibo
<retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006j</verAplic><nRec>351000061394658</nRec><cStat>225</cStat><xMotivo>Rejeição: Falha no Schema XML do lote de NFe</xMotivo><cUF>35</cUF></retConsReciNFe>Outro detalhe quando mando validar meu xml neste link esta ok.
http://www.sefaz.rs.gov.br/nfe/nfe-val.aspx
O que sera que pode ser alguem pode me ajudar.
Sobre o problema acima ja fiz de tudo e nada alguem pode me ajudar meu xml e este
Seu xml ta apresentando o seguinte problema :
XML INCONSISTENTE!
Início da validação…
Arquivo XML: C:\Users\Byter02\AppData\Local\Temp\35120503203556000254550010000002731000002739-nfe
Arquivo SCHEMA: C:\Unimake\UniNFe\schemas\NFe\procNFe_v2.00.xsd
Linha: 33 Coluna: 92 Erro: O elemento ‘nfeProc’ no espaço para nome ‘http://www.portalfiscal.inf.br/nfe’ apresenta conteúdo incompleto. Lista de possíveis elementos esperados: ‘protNFe’ no espaço para nome ‘http://www.portalfiscal.inf.br/nfe’.
…Final da validação
Cara valeu estava faltando a tag enviNFe agora esta ok
Obrigado.
Alencar…
sabe me dizer se tem problema se o certificado da receita tiver a assinatura SHA1withRSA e o meu certificado estar com sha256RSA?
Alencar…
sabe me dizer se tem problema se o certificado da receita tiver a assinatura SHA1withRSA e o meu certificado estar com sha256RSA?
Não vejo problemas nisso, pois são independentes os usos.
Alencar
Boa tarde,
alguém conseguiu implementar a Carta Correcao Eletronica em SP, eu estou enviar o XML que vem de exemplo junto com o Download dos Schemas, mas só recebo a seguinte rejeição:
238-Rejeição: Versão dos Dados informada é superior à versão vigente
Olhei em todos os manuais e não vi nada descrevendo a versão correta, no arquivo de exemplo a versão é 1.00 e é essa que eu estou utilizando.
No schema a versão é essa mesmo 1.00:
<xs:simpleType name="TVerEvento">
<xs:annotation>
<xs:documentation>Tipo Versão do Evento</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:pattern value="1\.00"/>
</xs:restriction>
</xs:simpleType>
Alguem conseguiu fazer isso funcionar?
Valeu.
Boa tarde,
alguém conseguiu implementar a Carta Correcao Eletronica em SP, eu estou enviar o XML que vem de exemplo junto com o Download dos Schemas, mas só recebo a seguinte rejeição:
238-Rejeição: Versão dos Dados informada é superior à versão vigente
Esqueçam minha pergunta acima, eu fiquei tão bitolado no XML que não percebi que a versão que estava errada era a versão dos Dados do cabeçalho da mensagem SOAP.
Bom dia,
Gostaria de saber se alguémtem maiores informações com relação a mensagem abaixo.
Alertamos que, conforme já descrito no Manual de Orientação do Contribuinte versão 5.00, página 61, o Web Service nfeConsultaNF2 versão 2.0.0 será desativado a partir de 1o de Julho de 2012. Apenas a versão 2.0.1 (que permite a consulta de NF-e com eventos) ficará habilitada.
pois estou tentando implementar com 2.01 mas o sistema de homologação de SP está apenas funcionando com o 2.00.
se alguem tiver maiores informações peço que me responda.
att.
Leonardo.
Olá galera…
Bom me desculpem em estar movimentando um tópico já antigo, mas hj ele me resolveu o problema da tradução das mensagens de validação da NF-e…
então como minha colaboração envio o arquivo XMLSchemaMessages_pt_BR.properties que contém a tradução das mensagens.
realizando os passos que nosso amigo evandromib relatou e usando esse arquivo ai suas mensagens estarão em português.
Grato pela ajuda,
Alan
O consumo do WebService hoje o pessoal esta trabalhando muito Axis2 eu quero saber se tem como fazer a conexao com WebService usando HttpClient e envelopando tudo por este plugin o que voces me falam sobre isto ?
Bom dia Galera blz ?
Seguinte hj tenho um programa que desenvolvi que atualmente faz a assinatura e transmissão de nota usando certificado A3 , sem maiores problemas
a questão é que essa solução é distribuída em diversos cliente que utiliza variados (modelos,tipo) de dispositivos A3 entre (smartcard e toke) estou encontrando uma certa dificuldade em poder reconhecer esses variados tipos de dispositos
alguem ja fez ou tem alguma ideia de como resolver isso ?
tenho atualmente uma rotina que vare o system32 atraz de “dll” q seja compativel com os metodos PKCS11 , para smartcard até que resolveu , para token ja nao consegui ter mto sucesso
como uma opção tb tenho uma rotina que vare o repositorio do windows e monto uma lista com certificados disponiveis , até da certo consigo fazer a assinatura do xml , mais nao consigo autorizar conexao com web-service usando o repositorio do windows
enfim estou em um dilema rsrs
Consegui fazer comunicar via HttpClient se alguem tiver alguma sugestao favor postar.
public class HttpClientTest {
private static StringBuffer xml = new StringBuffer();
private static String url = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx";
private static Integer tpAmb = 2;
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
// TODO Auto-generated method stub
HttpClient httpClient = new DefaultHttpClient();
tpAmb = 1;
//gerarXmlStatus();
gerarXmlContulta();
//Certificado .JKS
TrustManagerFactory tmf = null;
try {
KeyStore ts = KeyStore.getInstance("JKS", "SUN");
ts.load(new FileInputStream("cacertsSP.jks"), "senhaCacerts".toCharArray());
tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ts);
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
//Certificado .CER .PFX
KeyManagerFactory kmf = null;
try {
KeyStore ks = KeyStore.getInstance("PKCS12", "SunJSSE");
ks.load(new FileInputStream("CERTIFICADO.pfx"), "senhaCertificado".toCharArray());
kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "senhaCertificado".toCharArray());
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
// SSL
SSLContext ctx = null;
try {
ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
// socket
SSLSocketFactory socketFactory = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme sch = new Scheme("https", 443, socketFactory);
httpClient.getConnectionManager().getSchemeRegistry().register(sch);
//
//File fileXml = new File("/Users/jvds/Desktop/jvds.xml");
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write(xml.toString().getBytes("UTF-8"));
System.out.println(xml.toString());
HttpPost httpPost = new HttpPost(url);
//httpPost.setEntity(new InputStreamEntity(new FileInputStream(fileXml),fileXml.length()));
httpPost.setEntity(new ByteArrayEntity(out.toByteArray()));
httpPost.setHeader("Content-Type","application/soap+xml;charset=UTF-8");
HttpResponse response = httpClient.execute(httpPost);
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"UTF-8"));
String linha = br.readLine();
while (linha != null) {
System.out.println(linha);
linha = br.readLine();
}
}
private static StringBuffer gerarXmlStatus() {
// TODO Auto-generated method stub
url = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx";
url = "https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx";
//url = "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteStatusServico.asmx";
xml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
xml.append("<soapenv:Envelope xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\">");
xml.append("<soapenv:Header>");
xml.append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">");
xml.append("<versaoDados>2.00</versaoDados><cUF>35</cUF>");
xml.append("</nfeCabecMsg>");
xml.append("</soapenv:Header>");
xml.append("<soapenv:Body>");
xml.append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">");
xml.append("<consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">");
xml.append(String.format("<tpAmb>%d</tpAmb><cUF>35</cUF><xServ>STATUS</xServ>",tpAmb));
xml.append("</consStatServ>");
xml.append("</nfeDadosMsg>");
xml.append("</soapenv:Body>");
xml.append("</soapenv:Envelope>");
return xml;
}
private static StringBuffer gerarXmlContulta() {
// TODO Auto-generated method stub
//url = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx";
url = "https://nfe.fazenda.sp.gov.br/nfeweb/services/nferetrecepcao2.asmx";
xml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
xml.append("<soapenv:Envelope xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\">");
xml.append("<soapenv:Header>");
xml.append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2\">");
xml.append("<versaoDados>2.00</versaoDados><cUF>35</cUF>");
xml.append("</nfeCabecMsg>");
xml.append("</soapenv:Header>");
xml.append("<soapenv:Body>");
xml.append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2\">");
xml.append("<consReciNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">");
xml.append(String.format("<tpAmb>%d</tpAmb><nRec>351001262045477</nRec>",tpAmb));
xml.append("</consReciNFe>");
xml.append("</nfeDadosMsg>");
xml.append("</soapenv:Body>");
xml.append("</soapenv:Envelope>");
return xml;
}
}
Estou com uma duvida simples, no XML existe uma TAG chamada “cNF”, porém estou na duvidaem relação ao valor que tem que ter nela, sei que ela precisa ter no maximo 8 digitos (Ex: “00000365”), porém andei lendo e parece que este valor é gerado aleatoriamente, não entendi bem.
Tem a TAG “nNF”, nela fica o numero da nota, o cNF seria o valor do Id(PK) da tabela?
obs.: Li em um outro site que seria um trech da CHAVE (pega 8 dos 43 digitos da chave), não entendi bem isso.
Agradeço qualquer esclarecimento a respeito disso.
Minha pergunta foi respondida aqui:
http://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&ved=0CDUQFjAC&url=http%3A%2F%2Fnf-eletronica.com%2Fblog%2F%3Fdl_id%3D25&ei=yySAUJjzJYnA0QGz0IDABg&usg=AFQjCNG8uai6ZxgMxKDAyu1qNzLRfqUVnA
Coloquei um certificado A1 de SP novo esta semana e agora minha aplicacao parou de funcionar so estou tomando 403-Forbidden alguem saberia me dizer o sefaz modificou alguma coisa.
Obrigado !!!
Estou com uma duvida simples, no XML existe uma TAG chamada “cNF”, porém estou na duvidaem relação ao valor que tem que ter nela, sei que ela precisa ter no maximo 8 digitos (Ex: “00000365”), porém andei lendo e parece que este valor é gerado aleatoriamente, não entendi bem.Tem a TAG “nNF”, nela fica o numero da nota, o cNF seria o valor do Id(PK) da tabela?
obs.: Li em um outro site que seria um trech da CHAVE (pega 8 dos 43 digitos da chave), não entendi bem isso.…
O conteúdo da tag cNF deve ser um valor aleatório de 8 dígitos que será parte determinante da segurança no acesso aos dados da NFe.
Veja o caso do Carrefour, o qual foi publicado aqui por mim. Eles usam (ou usavam) sempre o número “00000000” neste campo.
Com isso, consegui consultar todas as notas de um mês inteiro a partir de uma chave qualquer (NFe de uma compra minha).
Nesta consulta, consigo ler os dados do comprados (nome, enddereco, cpf, telefone, etc…) e os produtos comprados por estes!
Se precisar mais esclarecimentos, pode solicitar.
Alencar
]Coloquei um certificado A1 de SP novo esta semana e agora minha aplicacao parou de funcionar so estou tomando 403-Forbidden alguem saberia me dizer o sefaz modificou alguma coisa.Obrigado !!!
Verifique que tamanho tem o arquivo .pfx ou .p2
Se tiver menos que 7KB, não está contido nele a cadeia validadora do certificado.
Se é este o caso, importe o A1 no IE e reexporte com toda a cadeia junto.
Alencar
Realmente so esta com 4K a cadeia inteira o que seria ?
Obrigado !!!
]Realmente so esta com 4K a cadeia inteira o que seria ?Obrigado !!!
Algumas AC’s, ao emitirem o certificado, não incluem a cadeia na emissão.
Com isso, o seu certificado não tem validade, pois não pode ser "validado"
como sendo emitido por uma AC válida ICP-Brasil.
É só importar no IE e reexportar com a flag de “Incluir toda a cadeia…” marcada.
O arquivo gerado terá entre 7 e 10KB, dependendo de quem o emitiu.
Alencar
Fiz isto ele me gerou um arquivo com 7K certificado.p7b so que hora que fui rodar deu a seguinte exception
Exception in thread "main" java.io.IOException: DER input, Integer tag error
at sun.security.util.DerInputStream.getInteger(DerInputStream.java:151)
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1202)
at java.security.KeyStore.load(KeyStore.java:1185)
at br.com.jvds.ws.tdd.HttpClientTest.main(HttpClientTest.java:78)
]Fiz isto ele me gerou um arquivo com 7K certificado.p7b so que hora que fui rodar deu a seguinte exception
Exception in thread "main" java.io.IOException: DER input, Integer tag error at sun.security.util.DerInputStream.getInteger(DerInputStream.java:151) at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1202) at java.security.KeyStore.load(KeyStore.java:1185) at br.com.jvds.ws.tdd.HttpClientTest.main(HttpClientTest.java:78)
Algo falhou na exportação.
Tem que marcar a exportação da PK junto e gerar um .pfx ou .p12
Não exporte no padrão .p7b
Alencar
Cara valeu mesmo pela dica resolveu o problema.
Mais uma que aprendi hoje.
Obrigado !!!
Uma NFe pode ter varios status Digitada, Assinada, Validada, transmitida, Cancelada, etc.
Minha duvida:
Quando efetivamente sei que a NFe foi autorizada ou rejeitada?
- Imagino que na String de retorno (Ex.: “OK: …”) ele mande algum informação que possa ser capturada, e tenha essa detalhe lá.
Preciso justamente saber isso, para poder manter atualizado o status da NFe no banco de dados.
Tem algum arquivo(pdf ou não) que tenha essa informação, sobre as mensagens de retorno?
Agradeço quem possa tirar esta duvida.
Você precisa baixar o Manual de Orientação no site da NF-e: http://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=33ol5hhSYZk=
Principais Status: 15=Autorizado o Uso, 16=Cancelada, 17=Inutilizada
Boa tarde,
desde a semana passada a SEFAZ de SP está voltando algumas retEnviNFe com falha no SCHEMA, mas alguém teve esse problema?
no meu caso eu peguei no ambiente de produção retEnviNFe com , mas alguém recebeu isso?
Bom dia GaleraBom como eu prometi Resolvi o probleminha de 215 - Falha no schema XML que ocorre no SEFAZ do PR sem precisar mudar minha aplicação para SAX conforme postado pelo alves.Felipe neste topico
no meu codigo antigo fazia do seguinte modo
String nfeDadosMsg = arq_xml; // a variavel arq_xml é o XML "073012-160211-env-lot.xml" + as tag <nfeDadosMsg> ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes()); XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source); NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados); String http = Endereco(Integer.parseInt(cod_uf), tpAmb); NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado, cabE);nessa rotina se perdia o atributo "xmlns=“http://www.portalfiscal.inf.br/nfe” da tag
neste trecho do codigo =ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());para corrigir o codigo ficou assim
DocumentBuilderFactory factoryy = DocumentBuilderFactory.newInstance(); factoryy.setNamespaceAware(false); DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance(); Document docs_uf = bf.newDocumentBuilder().parse(new InputSource(new StringReader(arq_xml))); Source source = new DOMSource(docs_uf); // ByteArrayInputStream nfeDados = new ByteArrayInputStream(nfeDadosMsg.getBytes()); XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source); NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados); String http = Endereco(Integer.parseInt(cod_uf), tpAmb); NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado, cabE);criei um Document da String arq_xml e usei DOMSource ao inves de ByteArrayInputStream
e resolvi a questão da perda do namespace , transmitir a nota e consegui o retorno desejado ( 100 - Autorizado o uso da NF-e )
bom antes de terminar gostaria de agradecer principalmente a alves.Felipe , AGAraujo pela troca de informaçoes
espero q ajude a todos
abraço
Estou tentando resolver o problema do erro: java.lang.RuntimeException: Message:org.apache.axis2.databinding.ADBException: Unexpected subelement NFe Cause: org.apache.axis2.databinding.ADBException: Unexpected subelement NFe. Olhando este post, tentei montar a função de transmissão conforme passado acima. Entretanto estou com o problema ainda. Provavelmente estou esquecendo de fazer algo. Segue abaixo o codigo que desenvolvi para realizar o envio de nfe para a SEFAZ do PR.
//Classe de transmissão da NFe
package recepcao;
import br.inf.portalfiscal.www.nfe.wsdl.nferecepcao2.NfeRecepcao2Stub;
import br.inf.portalfiscal.www.nfe.wsdl.nferecepcao2.NfeRecepcao2Stub.NfeCabecMsg;
import br.inf.portalfiscal.www.nfe.wsdl.nferecepcao2.NfeRecepcao2Stub.NfeRecepcaoLote2Result;
import java.io.*;
import java.net.URL;
import java.security.Security;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
public class NFeRecepcao
{
public static String lerXML(String fileXML) throws IOException
{
String linha = "";
StringBuilder xml = new StringBuilder();
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream(fileXML), "ISO8859-1"));
while ((linha = in.readLine()) != null) {
xml.append(linha);
}
in.close();
return xml.toString();
}
public String recepcao(String nfeDadosMsg, String vXML, String codEstado,
String http, String caminhoCertCliente, String senhaCertCliente,
String caminhoCasserts)
{
try
{
NfeCabecMsg nfeCabecMsg = new NfeCabecMsg();
/*Código do Estado(UF)*/
nfeCabecMsg.setCUF(codEstado);
/*Versão do XML*/
nfeCabecMsg.setVersaoDados(vXML);
NfeRecepcao2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeRecepcao2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
/*Informações do Certificado Digital*/
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("javax.net.ssl.trustStore");
System.setProperty("javax.net.ssl.keyStore", caminhoCertCliente);
System.setProperty("javax.net.ssl.keyStorePassword", senhaCertCliente);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", caminhoCasserts);
/*XML de Consulta*/
DocumentBuilderFactory factoryy = DocumentBuilderFactory.newInstance();
factoryy.setNamespaceAware(false);
DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
Document docs_uf = bf.newDocumentBuilder().parse(new InputSource(new StringReader(nfeDadosMsg)));
Source source = new DOMSource(docs_uf);
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(source);
NfeRecepcao2Stub.NfeDadosMsg dado = NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(streamDados);
URL url = new URL(http);
NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http).nfeRecepcaoLote2(dado, nfeCabecMsgE);
//XML de Retorno da SEFAZ
return result.getExtraElement().toString();
}
catch(Exception e)
{
throw new RuntimeException("Message:" + e.getMessage() + " Cause: " + e.getCause());
}
}
}
//Classe Main que testa a aplicação
package servicoparana;
import java.io.IOException;
import recepcao.NFeRecepcao;
public class ServicoParana {
public static void main(String[] args) throws IOException
{
String xmlEnvio = NFeRecepcao.lerXML("D:\\envio.xml");
NFeRecepcao nfe = new NFeRecepcao();
String resultado = nfe.recepcao(xmlEnvio, "2.00", "41", "https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeRecepcao2?wsdl", "D:\\certificado.pfx", "senhaCert", "C:\\Dzyon\\NotaSoft\\JSSECACERTS");
System.out.println(resultado);
}
}
Estou utilizando o Axis2 para me comunicar com os webservices da SEFAZ.
Segue o erro que estou recebendo (erro conhecido neste post…hehe)
Agradeço muito pela ajuda, nem sei mais o que fazer para essa SEFAZ do PR funcionar…=/
Existe um site que oferece uma API com a funcionalidade de baixar o XML da NF-e de maneira automatizada e com validade jurídica, pois é necessário o uso do certificado digital. O serviço é pago porém funciona muito bem, contratei para minha empresa e facilitou muito a vida, pois agora baixamos automaticamente os XMLs e já são armazenados no sistema para utilização. Como são muitas NF-e, baixar manualmente cada XML estava inviável para nós.
Para quem se interessar, o link é esse aqui : http://knu.com.br/ajuda/documentacao/documentacao#nfe
Abraços
Galera estou implementando o cancelamento por evento e estou tendo o retorno :
<retEnvEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>PR-Evt-1_1_7</verAplic>
<cOrgao>41</cOrgao>
<cStat>239</cStat>
<xMotivo>Cabeçalho - Versão do arquivo XML não suportada</xMotivo>
</retEnvEvento>
segue meu XML envelopado
<?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">
<cUF>41</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</soap12:Header>
<soap12:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe">
<procEventoNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>32</idLote>
<evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00">
<infEvento Id="ID1101114112110006649100017355001000000183180089561801">
<cOrgao>41</cOrgao>
<tpAmb>2</tpAmb>
<CNPJ>00066491000173</CNPJ>
<chNFe>41121100066491000173550010000001831800895618</chNFe>
<dhEvento>2012-11-27T23:30:49-02:00</dhEvento>
<tpEvento>110111</tpEvento>
<nSeqEvento>1</nSeqEvento>
<verEvento>1.00</verEvento>
<detEvento versao="1.00">
<descEvento>Cancelamento</descEvento>
<nProt>123123123213312</nProt>
<xJust>Teste de homologacao</xJust>
</detEvento>
</infEvento>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#ID1101114112110006649100017355001000000183180089561801">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>y+KDBcBCZNqi0rWR8cCve1DFDgE=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>pZs7CWeUXZwpCY2GDxYOUYMXcpT2Y49beIpShbX1wZPM3zZEru7+/BoHNUVjjRxeIb3+ANNNuv42 X2rd2dBMI117v1uT6GbdS+mQ3UH1Xd7de6I9O8f0/x7Tr21ZUlwg0Z0o6ykUHYzJEVnBRIo07nNJ ZcLSr9cklf8oh19dY0mAw6kNUnYddlglfNQH7l545bsq3a6wpbadRq7P6Y9/o7qzygVlg0fm9B2B D1NWT1c04mxQn5rGcjeYdSeqZgoLMa70l4qb/L0Q1NVGBjPXt0oQPWjdpwkVYJNtfbzGLTmbqPBn i17P5xwTbiVoFUTpTvAn1/harXOxKicNnVKUTA==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIHkzCCBXugAwIBAgIQMjAxMjAyMTQxMjI1MDcxNTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UE BhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0 YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEuMCwGA1UEAxMlQXV0b3JpZGFkZSBDZXJ0aWZpY2Fk b3JhIFNFUlBST1JGQiB2MzAeFw0xMjAyMTYxNDAyMjRaFw0xMzAyMTUxMzU2MTRaMIHrMQswCQYD VQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2VjcmV0YXJpYSBkYSBSZWNl aXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMREwDwYDVQQLEwhDT1JSRUlPUzETMBEGA1UECxMK QVJDT1JSRUlPUzEWMBQGA1UECxMNUkZCIGUtQ05QSiBBMTESMBAGA1UEBxMJUEFSQU5BVkFJMQsw CQYDVQQIEwJQUjEuMCwGA1UEAxMlRCBTIEdPRVMgRSBDSUEgTFREQSBNRTowMDA2NjQ5MTAwMDE3 MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOeN1nYQEAO0v1I1QsCQG89DH78isGTy YQPJdW058npmHT9zuv+Dcgh+GouDhproH+FjwOy+O2qlXT7IiG+qxFIlf/m6B0wIHQE/r1hD7smT 9iQOdrJwj6j2m4FI2MK0E1GI9QlpHOfvkwawbKwrKdN/uO7V+aZzeo/GE1R8oJS7tATRb5Db12vQ UcrIO0F48+N5SE3bXO8Wc3xBRK/cu6OA1YGU4npWH8LCrkzf4xynT3atndTRKUaVl5Cj5UkZm+Kq 6Vjfg5/vHZmvXjPo0MNNs8n/8XRA8JOLFaDhNgTwV5YDWHfWN04PbvBs8GXlylIteba1h0/oVyYe ieM25AUCAwEAAaOCApAwggKMMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUsWexHeccrndCFK1/ ngkO5oWwt64wDgYDVR0PAQH/BAQDAgXgMGAGA1UdIARZMFcwVQYGYEwBAgEKMEswSQYIKwYBBQUH AgEWPWh0dHBzOi8vY2NkLnNlcnByby5nb3YuYnIvYWNzZXJwcm9yZmIvZG9jcy9kcGNhY3NlcnBy b3JmYi5wZGYwgbYGA1UdEQSBrjCBq6A4BgVgTAEDBKAvBC0xNzA4MTk0ODA4ODMzMDAxOTIwMTE3 MjMxMDYxOTkwMDAwMDAwMDAwMDAwMDCgIAYFYEwBAwKgFwQVRE9SSVZBTCBERSBTT1VaQSBHT0VT oBkGBWBMAQMDoBAEDjAwMDY2NDkxMDAwMTczoBcGBWBMAQMHoA4EDDAwMDAwMDAwMDAwMIEZZG9y aXZhbGdvZXMyMDExQGdtYWlsLmNvbTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcAG A1UdHwSBuDCBtTA0oDKgMIYuaHR0cDovL2NjZC5zZXJwcm8uZ292LmJyL2xjci9hY3NlcnByb3Jm YnYzLmNybDA1oDOgMYYvaHR0cDovL2NjZDIuc2VycHJvLmdvdi5ici9sY3IvYWNzZXJwcm9yZmJ2 My5jcmwwRqBEoEKGQGh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9zZXJw cm8vYWNzZXJwcm9yZmJ2My5jcmwwTgYIKwYBBQUHAQEEQjBAMD4GCCsGAQUFBzAChjJodHRwOi8v Y2NkLnNlcnByby5nb3YuYnIvY2FkZWlhcy9hY3NlcnByb3JmYnYzLnA3YjANBgkqhkiG9w0BAQsF AAOCAgEAobOQLqOlot9o52+TD6RnZKZ4EAtNCA4Ggm7fUFON9K9eDOCOoaxgZzU3chmLT1/sMZ5y s0XTsBjBNkojMWCqX2+Phf8bkPKelBxJ3kU6ZzYOaggR36Q9+06+b3GgyFk+BVjXwNee0/pne27C Fhe8tV+gj7KigcCWXXzW8HTreNhK+zxNr+1n6NYZ3vSBpAclgkNQl4CWMVceDb96AP3Wfw+PiEs2 3/OQiPVJv6oQ2FdCL/fGRZYl6je/MxjTCXketh/W8eOUs0DjGFf2oOPK/8l+q/E6ggGia2vzu/aa p1A+GkfUdMDbXSVomIsG1YViaM/xQD033Ix1471Z9Ml0HG94x6YukkSaSA78YSIvKuHVdzxIW+7/ GC4DMBwW1JqdWEU72/cnlfEDGQBlNHIfbGuqaafYTKW5FZVZiIKxnPTWkrDnFR+bJG3VlJAdVJOC nsSOOHXxNYUEGrfqrCMSO7y9uKqopY6CKOSotZj/jGw+C6Rpt2MDjHyxYEAtGeTfw/PRyxwZyjEO hOeBbK+M8Pdx6gd8vuLFqvnsQkHUgJWRwKSdjvvlTfeHMpK4no6FSPkudPAAhtw8/QA+sZ7nDhsM nFeCoFcPAOV0UooRg/jPV8+AFLT7qGP5CRny468OoUNfMu6i2EPSv9OGfGIUIqvdtp+YxO4VvVjR MT6CMh0=</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</evento>
</envEvento>
</procEventoNFe>
</nfeDadosMsg>
</soap12:Body>
</soap12:Envelope>
alguém pode me dar uma ajudar por favor, obrigado.
Complementando já mudei a versao para"2.01" do meu ConsSitNFe
esse
antes do envEvento num ta errado não?
outra coisa no header: 2.00
a versao é 1.00
esse
antes do envEvento num ta errado não?
outra coisa no header: 2.00
a versao é 1.00
Obrigado Rafael era isso mesmo: 2.01
então o é para quando vai armazenar.
Obrigado.
E ai Thiago de Paula Beserra
Conseguiu resolver seu problema?
Estou no mesmo pé que vc, mesmo erro.
Qualquer ajuda será valiosa
abraços
Galera estou tentando rodar essas duas classes mas estou tendo erro…
erro:
Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
at javax.xml.ws.Service.<init>(Service.java:77)
at br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDownloadNF.<init>(NfeDownloadNF.java:44)
at br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDownloadNFSoap_NfeDownloadNFSoap_Client.main(NfeDownloadNFSoap_NfeDownloadNFSoap_Client.java:48)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
... 4 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'https://hom.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx?wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:262)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
... 6 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1902)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1338)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:632)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:799)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
... 12 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1320)
... 30 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
... 36 more
A classe é essa! alguém pode ajudar?
package br.inf.portalfiscal.nfe.wsdl.nfedownloadnf;
* Please modify this class to meet your needs
import java.io.File;
/**
* This class was generated by Apache CXF 2.7.4
* 2013-04-16T17:44:25.758-03:00
* Generated source version: 2.7.4
*
*/
public final class NfeDownloadNFSoap_NfeDownloadNFSoap12_Client {
private static final QName SERVICE_NAME = new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF", "NfeDownloadNF");
private NfeDownloadNFSoap_NfeDownloadNFSoap12_Client() {
}
public static void main(String args[]) throws java.lang.Exception {
URL wsdlURL = NfeDownloadNF.WSDL_LOCATION;
if (args.length > 0 && args[0] != null && !"".equals(args[0])) {
File wsdlFile = new File(args[0]);
try {
if (wsdlFile.exists()) {
wsdlURL = wsdlFile.toURI().toURL();
} else {
wsdlURL = new URL(args[0]);
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
NfeDownloadNF ss = new NfeDownloadNF(wsdlURL, SERVICE_NAME);
NfeDownloadNFSoap port = ss.getNfeDownloadNFSoap12();
{
System.out.println("Invoking nfeDownloadNF...");
br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDadosMsg _nfeDownloadNF_nfeDadosMsg = new br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDadosMsg();
java.util.List<java.lang.Object> _nfeDownloadNF_nfeDadosMsgContent = new java.util.ArrayList<java.lang.Object>();
java.lang.Object _nfeDownloadNF_nfeDadosMsgContentVal1 = null;
_nfeDownloadNF_nfeDadosMsgContent.add(_nfeDownloadNF_nfeDadosMsgContentVal1);
_nfeDownloadNF_nfeDadosMsg.getContent().addAll(_nfeDownloadNF_nfeDadosMsgContent);
br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDownloadNFResult _nfeDownloadNF__return = port.nfeDownloadNF(_nfeDownloadNF_nfeDadosMsg);
System.out.println("nfeDownloadNF.result=" + _nfeDownloadNF__return);
}
System.exit(0);
}
}
Pessoal aproveitando o tópico estou com problema que quando mando o xml de remessa assinado no retorno só vem a palavra ERRO, ele não me retorna um xml, Alguem sabe o que pode ser? Abraço !
diogo.munhos tem numero do erro? ou volta apenas erro mesmo?
Apenas erro mesmo, após muito testar consegui pegar a nfe assinada e um metodo separado envio e me retornou o codigo 107 que a data nao pode ser maior que a data de hoje, porém no xml e na cadeia ASC de assinatura está indo a data certa, e nos outros clientes não da este problema só neste cliente que usa o smart card Omnikey 3021 e o token G&D StarSign, ambos usam a dll aetpkss1 e estão gerando este problema. Ja testei inumeras vezes e o erro ainda persiste.
Abraços
estou tendo esse erro agora galera… alguém pode me ajudar
desde de já obrigado!
Message enviada
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@5fda3acc
in :
<?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/NfeDownloadNF"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></soap12:Header><soap12:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF"><downloadNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"><tpAmb>1</tpAmb><cUF>35</cUF><xServ>DOWNLOAD NFE</xServ><CNPJ>***********</CNPJ><chNFe>***********************************</chNFe></downloadNFe></nfeDadosMsg></soap12:Body></soap12:Envelope>
out :
<?xml
version="1.0"
encoding="utf-8"?><soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><nfeDownloadNFResult
xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF"><retDownloadNFe
versao="1.00"
xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><verAplic>AN_1.0.0</verAplic><cStat>238</cStat><xMotivo>Rejeicao:
Cabecalho
-
Versao
do
arquivo
XML
superior
a
Versao
vigente</xMotivo><dhResp>2013-04-23T16:41:12</dhResp></retDownloadNFe></nfeDownloadNFResult></soap:Body></soap:Envelope>
Gostaria de saber se alguem já se deparou com a seguinte situação e como solucionou:
Ao emitir a NFe e consultar a mesma no Sefaz de origem, esta encontra-se com a Situação Atual: “Autorizado o uso da NF-e”, porem ao carregar o arquivo XML para o Visualizador de documentos fiscais eletronicos aparece a seguinte critíca:
"Estrutura/Conteúdo do documento digital não são válidos " e “A assinatura digital do documento é inválida” , impossibilitando sua validação no VISUALIZADOR.
Obrigado desde já.
Isso, justamente era oque eu estava fazendo.
Mas enfim resolvi, ou melhor a SEFAZ-RS resolveu para mim, lançando uma versão corrigida do Visualizador da NFE.
Coisa linda né, me quebro dois dias atrás disso, para depois saber que o problema nem era comigo.


