Bom dia,
Meu nome é Phellipe, programo Java há 2 anos, e sempre consegui sanar minhas dúvidas com o GUJ, internet (google xD) ou na documentação Java.
Porém, surgiu um problema em que realmente não consigo achar uma solução, até por ser um problema bem especifico, por isso decidi me cadastrar no GUJ e pedir ajuda a vocês, espero que possam me ajudar =].
Então, o que aconteceu foi o seguinte, preciso fazer uma validação (enviar) "notas fiscais". Para isso estou usando o 'Fly e-Nota' da 'Betha'.
Fui no seguinte link: https://e-gov.betha.com.br/e-nota-test/ambienteteste.faces
Entrei no "Recepção e Processamento de Lote de RPS", e me abriu o seguinte link: https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps?wsdl
Peguei tal link, fui no Eclipse e criei um novo 'web service client' e ele me retornou, um monte de classes.
Usando tais classes fiz novas Classes para criarem um RPS e um lote de RPS (nesse caso só de 1 RPS).
Então, criado o lote de RPS, preciso enviá-lo, nessa hora é que ocorre o erro.
Sei que: Cada RPS precisa ser assinado, e o lote também precisa ser assinado (mesma assinatura), e o erro está acontecendo na assinatura.
Obs.: A minha assinatura está com valores que peguei de um outro membro do fórum da Betha, que estava correto (até era dado como exemplo).
Enfim, um pedaço da minha classe que cria a assinatura: (onde provavelmente está o erro)private TcReference crieReference() {
TcReference reference = new TcReference();
reference.setURI("#14021");
reference.setTransforms(this.crieTransforms());
reference.setDigestMethod(this.crieDigestMethod());
reference.setDigestValue("fWLv0z9Bu1LMiH1YkpBOeUhLBbU=");
return reference;
}
private TcTransform[] crieTransforms() {
TcTransform[] transforms = new TcTransform[2];
transforms[0] = new TcTransform("http://www.w3.org/2000/09/xmldsig#enveloped-signature");
transforms[1] = new TcTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315");
return transforms;
}
private TcDigestMethod crieDigestMethod() {
TcDigestMethod method = new TcDigestMethod();
method.setAlgorithm("http://www.w3.org/TR/2001/REC-xml-c14n-20010315");
return method;
}
public static void main(String[] args) {
try {
RecepcionarLoteRps adm = new RecepcionarLoteRpsServiceLocator().getRecepcionarLoteRpsPort();
TcRps[] listaRps = new TcRps[1];
CriadorDeRps cr = new CriadorDeRps();
cr.crie();
listaRps[0] = cr.getRps();
CriadorDeLoteDeRps clr = new CriadorDeLoteDeRps();
clr.crie(listaRps);
TcLoteRps lote = clr.getLote();
adm.enviarLoteRpsEnvio(lote, lote.getListaRps()[0].getSignature());
} catch (Exception e) {
e.printStackTrace();
}
}
12/07/2012 10:35:46 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
faultSubcode:
faultString: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.w3.org/2000/09/xmldsig#", local:"Transforms"). Expected elements are <{http://www.w3.org/2000/09/xmldsig#}Transform>
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.w3.org/2000/09/xmldsig#", local:"Transforms"). Expected elements are <{http://www.w3.org/2000/09/xmldsig#}Transform>
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1759)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2915)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
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 logic.loteRps.recepcionar.RecepcionarLoteRpsBindingStub.enviarLoteRpsEnvio(RecepcionarLoteRpsBindingStub.java:370)
at main.MainBethaNFE.main(MainBethaNFE.java:30)
{http://xml.apache.org/axis/}hostname:ubuntu
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.w3.org/2000/09/xmldsig#", local:"Transforms"). Expected elements are <{http://www.w3.org/2000/09/xmldsig#}Transform>
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1759)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2915)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
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 logic.loteRps.recepcionar.RecepcionarLoteRpsBindingStub.enviarLoteRpsEnvio(RecepcionarLoteRpsBindingStub.java:370)
at main.MainBethaNFE.main(MainBethaNFE.java:30)
Lembrando que: os "Recepcionar" foram classes criadas pelo eclipse importadas do próprio site da Betha, e não tenho noção de como funciona os métodos dessas classes. Até porquê essa é a primeira vez que estou lidando com algo do gênero, sei que ela cria um XML e manda para o site para validar, mas pelo visto tem algum problema na estrutura do XML.
Se alguém já mexeu com a Betha, ou já passou por algo parecido, agradeceria muito sua ajuda, quem não, também agradeço =].
Obrigado,
Phellipe