[quote=Rafael Rossignol]Então, assinei a nota com meu software e transmiti sem problemas pelo software da SEFAZ.
To achando que pode ser na hora que envio ou na hora que gero o lote.
Alguém pode me dizer como faz a transmissão?
Eu utilizei o apache axis2 e mandei gerar o cliente pelo eclipse, ele gera duas classes (pra cada webservice, segue exemplo)
NfeRecepcao2Stub e
NfeRecepcao2CallbackHandler
para transmitir
[code] OMElement ome = AXIOMUtil.stringToOM(xmlLote);
NfeRecepcao2Stub.NfeDadosMsg dadosMsg = new NfeRecepcao2Stub.NfeDadosMsg();
dadosMsg.setExtraElement(ome);
NfeRecepcao2Stub.NfeCabecMsg nfeCabecMsg = new NfeRecepcao2Stub.NfeCabecMsg();
nfeCabecMsg.setCUF(uf.toString());
nfeCabecMsg.setVersaoDados(VERSAO);
NfeRecepcao2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeRecepcao2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
NfeRecepcao2Stub stub = new NfeRecepcao2Stub();
NfeRecepcao2Stub.NfeRecepcaoLote2Result result = stub
.nfeRecepcaoLote2(dadosMsg, nfeCabecMsgE);
return result.getExtraElement().toString();[/code]
To achando que o tal do cabeçalho ele manda com as tais quebras de linha.
Alguém faz diferente disso pra transmitir?
se faz, tem como mandar um exemplo?
Obrigado de antemão.[/quote]Eu cansei de tentar reiventar a roda e fiz a exportação do meu ERP para o Emissor do SEFAZ e depois eu leio os dados das notas enviadas no Emissor do SEFAZ e atualizo meu ERP.
O código que eu usava para enviar notas era esse, levava 2 horas para enviar um lote de notas.
[code]public TRetEnviNFe enviarNotaFiscal(String arquivoXML, String cUF) throws AxisFault, RemoteException, ParserConfigurationException, SAXException, IOException, JAXBException, KeyStoreException, NoSuchAlgorithmException, CertificateException {
if (!Global.PROPRIEDADES_CERTIFICADO_OK) {
setPropriedadesCertificado();
}
emissor.ws.h.recepcaonota.NfeRecepcao2Stub.NfeCabecMsg cabecalho = new emissor.ws.h.recepcaonota.NfeRecepcao2Stub.NfeCabecMsg();
cabecalho.setCUF(cUF);
cabecalho.setVersaoDados(NFe.VERSAO_LEIAUTE_NFE);
emissor.ws.h.recepcaonota.NfeRecepcao2Stub.NfeCabecMsgE cabE = new emissor.ws.h.recepcaonota.NfeRecepcao2Stub.NfeCabecMsgE();
cabE.setNfeCabecMsg(cabecalho);
String nfeDadosMsg = getXmlFromFile(arquivoXML);
OMElement el = null;
try {
el = AXIOMUtil.stringToOM(nfeDadosMsg);
} catch (XMLStreamException e1) {
e1.printStackTrace();
}
el.build();
NfeRecepcao2Stub.NfeDadosMsg dadosMsg = new NfeRecepcao2Stub.NfeDadosMsg();
dadosMsg.setExtraElement(el);
String urlRecepcaoNota = (String) mapUrlServicos.get(Global.TIPO_AMBIENTE_NFe).get(this.KEY_URL_RECEPCAO_NOTA);
NfeRecepcao2Stub stub = new NfeRecepcao2Stub(urlRecepcaoNota);
NfeRecepcao2Stub.NfeRecepcaoLote2Result result = null;
result = stub.nfeRecepcaoLote2(dadosMsg, cabE);
String strXmlRetorno = result.getExtraElement().toString();
//System.out.println("XML recepcao: " + strXmlRetorno);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
Document doc = factory.newDocumentBuilder().parse(new ByteArrayInputStream(strXmlRetorno.trim().getBytes("UTF8")));
Element root = doc.getDocumentElement();
// Para colocar o xml de retorno no objeto RTetEnviNFe
JAXBContext context = JAXBContext.newInstance("emissor.bean.nfe.consret");
Unmarshaller unmarshaller = context.createUnmarshaller();
TRetEnviNFe retorno = unmarshaller.unmarshal(root, TRetEnviNFe.class).getValue();
return retorno;
}
[/code]