Nfe - Nota Fiscal Eletronica

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…!!

[quote=philler]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

[code]
// 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());
    }

[/code][/quote]

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

http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx

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…

http://www.opensc-project.org/engine_pkcs11

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

[quote=dankshit]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.[/quote]

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!");
	}

Porem o que acontece é que no arquivo xml exemplo da receita nesta parte do código em xml está 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>...
...

no meu arquivo sai assim:

[code]

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> ... ...[/code]

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??