diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..5c043c9b
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,6 @@
+language: java
+jdk: oraclejdk8
+
+sudo: false
+
+script: mvn clean install
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..c38afbc4
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Samuel Oliveira
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..b289a030
--- /dev/null
+++ b/README.md
@@ -0,0 +1,111 @@
+# Java-NFe [![Build Status](https://travis-ci.org/Samuel-Oliveira/Java_NFe.svg?branch=master)](https://travis-ci.org/Samuel-Oliveira/Java_NFe)
+Projeto Para implementação do Java-Nfe Utilizando JAXB.
+
+## Gostou do Projeto? Dê sua colaboração: [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=TX9K693QQYA6W)
+
+Para Iniciar :
+- Baixe o java-nfe-4.00.1.jar (https://github.com/Samuel-Oliveira/Java_NFe/raw/master/java-nfe-4.00.1.jar) e o adicione às bibliotecas de Seu Projeto.
+- Baixe o Schemas.rar (https://github.com/Samuel-Oliveira/Java_NFe/raw/master/Schemas.rar) e extraia na sua Máquina.
+
+- Maven :
+```
+
+ Repositorio Autocom
+ Release
+ http://www.autocomsistemas.com.br:8081/nexus/content/repositories/autocom/
+
+
+ br.com.samuelweb
+ java-nfe
+ 4.00.1
+
+```
+
+Veja a Wiki https://github.com/Samuel-Oliveira/Java_NFe/wiki, para ter um Tutorial Completo.
+
+________________________________________________________________________________________________
+
+# Historico de Versões
+
+## v4.00.1 - 28-01-2018
+- Versão Inicial 4.00
+
+## v3.10.9 - 26-01-2018
+- Atualziado Cacert
+- Corrigido URL WS de PE
+- Corrigido URL WS de ES
+- Ultima Versão 3.10
+
+## v3.10.8 - 04-07-2017
+- Corrigido Erro ao Gerar XML de NFC-e sem CDATA no QrCode
+- Removido WebService especial da Bahia Para Nfce
+- Adicionado Compatibilidade com Certificado A3 fora do Repositorio de Windows
+- Adicionado Exception Espeficifica para Erros de Validação
+- Adicionado Java_Docs
+- Corrigido erros ao Consultar Cadastro de Outro Estado diferente da Configuração
+- Adicionado Exception ao não encontrar WebService.
+- Removido Metodos e Constantes de Download e Consulta Destinatario
+- Removido a Parte de Certificado Digitais para outro Projeto.
+- Melhorado Classe Socket DInamico
+- **Atenção: Alterado o caminho do Objeto Certificado, refaça os Imports.**
+
+## v3.10.7 - 23-05-2017
+- Correção Endereço WebService MT.
+- Adicionado Cacert com Alterações do AM
+- Adicionado Cacert com Alteracao da BA
+- Removido Protocol
+- Alterado Configurações de Certificado SSL para SocketDinamico
+- Adicionado Serviço De Consulta Cadastro.
+- Adicionado Schemas de Consulta Cadastro.
+- Alterado Projeto XSD para versão 8.i.2_DFe1.02a
+
+## v3.10.6 - 21-02-2017
+- Issues: # 21, #22 e #23.
+- Adicionado Metodo para Ler Arquivo XML.
+- Adicionado Stubs da Bahia :
+ - Status Serviço
+ - Consulta Xml
+ - Inutilização
+- Arquivo Cacert Atualizado
+- Correção Endereço WebService MG.
+- Adicionado XSD DistribuicaoDFe 1.01
+- Adicionado Função PAra Download de Nfe Por Chave.
+
+## v3.10.5 - 21-11-2016
+- Issues: #15, #16, #17 e #18.
+- Alterado Estrutura para as todas as funções que necessitam de Endereço WebService
+- Adicionado Constantes
+- Adicionado Endereços ConsultaQrcode
+- Corrigido Erro De QrCode não vir no XML FInal
+- Modo Assincorno Implementado.
+- Modo De Contingencia Implementado.
+- **Atenção: Alterado a chamada dos metodos: statusServico, consultaXml, consultaXml, inutilizacao, enviarNfe, cancelarNfe, cce
+ Todos eles devem adicionar o parametro tipo, ondeve informar se é NFE(ConstantesUtil.NFE) ou NFC-e(ConstantesUtil.NFCE)**
+
+## v3.10.4 - 01-11-2016
+- Issues: #10, #11 e #12.
+- Corrigido erro especifico do WebServices SVRS, referente ao nameSpace.
+- Melhorado Lógica de Replace para os "Lixos" gerados ao Converter Objeto pra Xml
+- Adicionado Proxy
+
+## v3.10.3 - 17-10-2016
+- Issues: #5, #6, #7 e #8.
+- Corrigido erro especifico da Sefaz de PE, referente ao cabeçalho SOAP.
+- Corrigido erro de QrCode Vazio.
+- Corrigido erro que acontece ao tentar Manifestar a Nfe, sem fazer a validação.
+- Adicionado função que remove Acentos no XML antes de assinar a Nota.
+
+## v3.10.2 - 07-10-2016
+- Adicionado Compatibilidade com NFC-e
+- Adicionado Método de geração de qrCode : NFCeUtil.getCodeQRCode
+- Adicionado Possibilidade de Usar certificado Digital Fisico (Arquivo .pfx)
+- Adicionado possibilidade de escolher entre Validar ou não o XMl Antes do Envio de todas as Funções;
+- Disponibilizado projeto para download via Maven
+
+## v3.10.1 - 05-10-2016
+- Correção de Erros ao listar Certificados Windows Certificados digitais A3 Ausentes.
+
+## v3.10.0 - 26-09-2016
+- Versão Inicial Do Sistema
+
+Outras Duvidas Entrar em Contato samuk.exe@hotmail.com
diff --git a/Schemas.rar b/Schemas.rar
new file mode 100644
index 00000000..eb19004b
Binary files /dev/null and b/Schemas.rar differ
diff --git a/java-nfe-4.00.1.jar b/java-nfe-4.00.1.jar
new file mode 100644
index 00000000..423a3714
Binary files /dev/null and b/java-nfe-4.00.1.jar differ
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 00000000..709afc27
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,104 @@
+
+ 4.0.0
+ br.com.samuelweb
+ java-nfe
+ 4.00.1
+ Java_NFe
+
+
+
+
+ Repositorio Autocom
+ Release
+ http://www.autocomsistemas.com.br:8081/nexus/content/repositories/autocom/
+
+
+
+
+
+ autocom
+ http://nexus.autocomsistemas.com.br/nexus/content/repositories/autocom/
+
+
+
+
+
+
+
+ br.com.autocom
+ nfe-wsdl
+ 4.00.3
+
+
+
+
+ br.com.autocom
+ nfe-xsd
+ 9-v1.40a
+
+
+
+
+ br.com.samuelweb
+ java_certificado
+ 1.5
+
+
+
+
+ com.sun.xml.txw2
+ txw2
+ 20110809
+
+
+
+
+ org.ini4j
+ ini4j
+ 0.5.4
+
+
+
+ org.apache.httpcomponents
+ httpcore
+ 4.4.6
+
+
+
+
+
+ 1.8
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.3
+
+
+ ${java.version}
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 2.4
+
+
+ jar-with-dependencies
+
+
+
+
+ package
+
+ attached
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/Assinar.java b/src/main/java/br/com/samuelweb/nfe/Assinar.java
new file mode 100644
index 00000000..eee2b374
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/Assinar.java
@@ -0,0 +1,190 @@
+package br.com.samuelweb.nfe;
+
+import br.com.samuelweb.certificado.Certificado;
+import br.com.samuelweb.certificado.CertificadoService;
+import br.com.samuelweb.certificado.exception.CertificadoException;
+import br.com.samuelweb.nfe.dom.ConfiguracoesIniciaisNfe;
+import br.com.samuelweb.nfe.exception.NfeException;
+import br.com.samuelweb.nfe.util.XmlUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+import javax.xml.crypto.dsig.keyinfo.X509Data;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.security.*;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Classe Responsavel Por Assinar O Xml.
+ *
+ * @author Samuel Oliveira - samuk.exe@hotmail.com - www.samuelweb.com.br
+ */
+class Assinar {
+
+ static final String INFINUT = "infInut";
+ static final String EVENTO = "evento";
+
+ private static ConfiguracoesIniciaisNfe configuracoesNfe;
+
+ private static PrivateKey privateKey;
+
+ private static KeyInfo keyInfo;
+
+ Assinar assinarXMLsCertfificadoA1;
+
+ /**
+ * @param stringXml
+ * @param tipo ('NFe' para nfe normal , 'infInut' para inutilizacao, 'evento' para eventos)
+ * @return String do Xml Assinado
+ * @throws NfeException
+ */
+ static String assinaNfe(String stringXml, String tipo) throws NfeException {
+
+ configuracoesNfe = ConfiguracoesIniciaisNfe.getInstance();
+
+ stringXml = XmlUtil.removeAcentos(stringXml);
+ stringXml = assinaDocNFe(stringXml, tipo);
+
+ return stringXml;
+ }
+
+ /**
+ * Assinatura do XML de Envio de Lote da NF-e utilizando Certificado
+ * Digital.
+ *
+ * @param Conteudo do Xml
+ * @param Nome do Certificado Digital
+ * @return String do XMl Assinado
+ * @throws Exception
+ */
+ private static String assinaDocNFe(String xml, String tipo) throws NfeException {
+
+ try {
+ Document document = documentFactory(xml);
+ XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM");
+ ArrayList transformList = signatureFactory(signatureFactory);
+ loadCertificates(signatureFactory);
+
+ for (int i = 0; i < document.getDocumentElement().getElementsByTagName(tipo).getLength(); i++) {
+ assinarNFe(tipo, signatureFactory, transformList, privateKey, keyInfo, document, i);
+ }
+
+ return outputXML(document);
+ } catch (SAXException | IOException | ParserConfigurationException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | KeyStoreException | UnrecoverableEntryException | NoSuchProviderException | CertificateException | CertificadoException | MarshalException | XMLSignatureException e) {
+ throw new NfeException("Erro ao Assinar Nfe" + e.getMessage());
+ }
+ }
+
+ private static void assinarNFe(String tipo, XMLSignatureFactory fac, ArrayList transformList, PrivateKey privateKey, KeyInfo ki, Document document, int indexNFe) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, MarshalException, XMLSignatureException {
+
+ NodeList elements;
+ switch (tipo) {
+ case EVENTO:
+ elements = document.getElementsByTagName("infEvento");
+ break;
+ case INFINUT:
+ elements = document.getElementsByTagName("infInut");
+ break;
+ default:
+ elements = document.getElementsByTagName("infNFe");
+ }
+
+ org.w3c.dom.Element el = (org.w3c.dom.Element) elements.item(indexNFe);
+ String id = el.getAttribute("Id");
+
+ el.setIdAttribute("Id", true);
+
+ 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));
+
+ XMLSignature signature = fac.newXMLSignature(si, ki);
+
+ DOMSignContext dsc;
+
+ if (tipo.equals(INFINUT)) {
+ dsc = new DOMSignContext(privateKey, document.getFirstChild());
+ } else {
+ dsc = new DOMSignContext(privateKey, document.getDocumentElement().getElementsByTagName(tipo).item(indexNFe));
+ }
+
+ dsc.setBaseURI("ok");
+
+ signature.sign(dsc);
+ }
+
+ private static ArrayList signatureFactory(XMLSignatureFactory signatureFactory) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
+
+ ArrayList transformList = new ArrayList();
+ TransformParameterSpec tps = null;
+ Transform envelopedTransform = signatureFactory.newTransform(Transform.ENVELOPED, tps);
+ Transform c14NTransform = signatureFactory.newTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315", tps);
+
+ transformList.add(envelopedTransform);
+ transformList.add(c14NTransform);
+ return transformList;
+ }
+
+ private static Document documentFactory(String xml) throws SAXException, IOException, ParserConfigurationException {
+
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+ return factory.newDocumentBuilder().parse(new ByteArrayInputStream(xml.getBytes()));
+ }
+
+ private static void loadCertificates(XMLSignatureFactory signatureFactory) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableEntryException, NoSuchProviderException, CertificateException, IOException, CertificadoException {
+
+ Certificado certificado = configuracoesNfe.getCertificado();
+ KeyStore keyStore = CertificadoService.getKeyStore(certificado);
+
+ KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(certificado.getNome(), new KeyStore.PasswordProtection(certificado.getSenha().toCharArray()));
+ privateKey = pkEntry.getPrivateKey();
+
+ KeyInfoFactory keyInfoFactory = signatureFactory.getKeyInfoFactory();
+ List x509Content = new ArrayList();
+
+ x509Content.add(CertificadoService.getCertificate(certificado, keyStore));
+ X509Data x509Data = keyInfoFactory.newX509Data(x509Content);
+ keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(x509Data));
+ }
+
+ private static String outputXML(Document doc) throws NfeException {
+
+ try {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer trans = tf.newTransformer();
+ trans.transform(new DOMSource(doc), new StreamResult(os));
+ String xml = os.toString();
+ xml = xml.replaceAll("\\r\\n", "");
+ xml = xml.replaceAll(" standalone=\"no\"", "");
+ return xml;
+ } catch (TransformerException e) {
+ throw new NfeException("Erro ao Transformar Documento:" + e.getMessage());
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/Cancelar.java b/src/main/java/br/com/samuelweb/nfe/Cancelar.java
new file mode 100644
index 00000000..fa8d4344
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/Cancelar.java
@@ -0,0 +1,35 @@
+package br.com.samuelweb.nfe;
+
+import br.com.samuelweb.nfe.exception.NfeException;
+import br.com.samuelweb.nfe.util.ConstantesUtil;
+import br.com.samuelweb.nfe.util.XmlUtil;
+import br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TEnvEvento;
+import br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TRetEnvEvento;
+
+import javax.xml.bind.JAXBException;
+
+/**
+ * @author Samuel Oliveira - samuk.exe@hotmail.com
+ * Data: 28/09/2017 - 11:11
+ */
+ class Cancelar {
+
+ static TRetEnvEvento eventoCancelamento(TEnvEvento enviEvento, boolean valida, String tipo) throws NfeException {
+
+ try {
+
+ String xml = XmlUtil.objectToXml(enviEvento);
+ xml = xml.replaceAll(" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\"", "");
+ xml = xml.replaceAll(" children = ome.getChildrenWithLocalName("NFe");
+ while (children.hasNext()) {
+ OMElement omElementNFe = (OMElement) children.next();
+ if ((omElementNFe != null) && ("NFe".equals(omElementNFe.getLocalName()))) {
+ omElementNFe.addAttribute("xmlns", "http://www.portalfiscal.inf.br/nfe", null);
+ if (nfce) {
+
+ OMFactory f = OMAbstractFactory.getOMFactory();
+ OMText omt = f.createOMText(qrCode, OMElement.CDATA_SECTION_NODE);
+
+ Iterator> itInfSupl = omElementNFe.getChildrenWithLocalName("infNFeSupl");
+ while (itInfSupl.hasNext()) {
+ Object elementInfSupl = itInfSupl.next();
+ if (elementInfSupl instanceof OMElement) {
+ OMElement omElementInfSupl = (OMElement) elementInfSupl;
+ Iterator> itqrCode = omElementInfSupl.getChildrenWithLocalName("qrCode");
+ while (itqrCode.hasNext()) {
+ Object elementQrCode = itqrCode.next();
+ if (elementQrCode instanceof OMElement) {
+ OMElement omElementQrCode = (OMElement) elementQrCode;
+ omElementQrCode.addChild(omt);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //Adicionado CDATA após OM
+ if (nfce) {
+ enviNFe.getNFe().get(0).getInfNFeSupl().setQrCode("");
+ }
+
+ if (config.isLog()) {
+ System.out.println("Xml para Envio: " + ome.toString());
+ }
+
+ NFeAutorizacao4Stub.NfeDadosMsg dadosMsg = new NFeAutorizacao4Stub.NfeDadosMsg();
+ dadosMsg.setExtraElement(ome);
+
+ NFeAutorizacao4Stub stub = new NFeAutorizacao4Stub(nfce ? WebServiceUtil.getUrl(ConstantesUtil.NFCE, ConstantesUtil.SERVICOS.ENVIO) : WebServiceUtil.getUrl(ConstantesUtil.NFE, ConstantesUtil.SERVICOS.ENVIO));
+ NFeAutorizacao4Stub.NfeResultMsg result = stub.nfeAutorizacaoLote(dadosMsg);
+
+ return XmlUtil.xmlToObject(result.getExtraElement().toString(), TRetEnviNFe.class);
+
+ } catch (RemoteException | XMLStreamException | JAXBException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/Eventos.java b/src/main/java/br/com/samuelweb/nfe/Eventos.java
new file mode 100644
index 00000000..96fcdc5c
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/Eventos.java
@@ -0,0 +1,71 @@
+package br.com.samuelweb.nfe;
+
+import br.com.samuelweb.nfe.dom.ConfiguracoesIniciaisNfe;
+import br.com.samuelweb.nfe.exception.NfeException;
+import br.com.samuelweb.nfe.exception.NfeValidacaoException;
+import br.com.samuelweb.nfe.util.ConstantesUtil;
+import br.com.samuelweb.nfe.util.ObjetoUtil;
+import br.com.samuelweb.nfe.util.WebServiceUtil;
+import br.inf.portalfiscal.www.nfe_400.wsdl.NFeRecepcaoEvento.NFeRecepcaoEvento4Stub;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.AXIOMUtil;
+
+import javax.xml.stream.XMLStreamException;
+import java.rmi.RemoteException;
+
+class Eventos {
+
+ static String enviarEvento(String xml, String tipoEvento, boolean valida, String tipo) throws NfeException {
+
+ try {
+
+ xml = Assinar.assinaNfe(xml, Assinar.EVENTO);
+
+ if(valida){
+ String erros ="";
+ switch (tipoEvento) {
+ case ConstantesUtil.EVENTO.CANCELAR:
+ erros = Validar.validaXml(xml, Validar.CANCELAR);
+ break;
+ case ConstantesUtil.EVENTO.CCE:
+ erros = Validar.validaXml(xml, Validar.CCE);
+ break;
+ case ConstantesUtil.EVENTO.MANIFESTACAO:
+ erros = Validar.validaXml(xml, Validar.MANIFESTAR);
+ break;
+ default:
+ break;
+ }
+
+ if(!ObjetoUtil.isEmpty(erros)){
+ throw new NfeValidacaoException("Erro Na Validação do Xml: "+erros);
+ }
+ }
+
+ if (ConfiguracoesIniciaisNfe.getInstance().isLog()) {
+ System.out.println("Xml Evento: " + xml);
+ }
+
+ OMElement ome = AXIOMUtil.stringToOM(xml);
+
+ NFeRecepcaoEvento4Stub.NfeDadosMsg dadosMsg = new NFeRecepcaoEvento4Stub.NfeDadosMsg();
+ dadosMsg.setExtraElement(ome);
+
+ String url ;
+ if(tipoEvento.equals(ConstantesUtil.EVENTO.MANIFESTACAO)){
+ url = WebServiceUtil.getUrl(ConstantesUtil.NFE, ConstantesUtil.SERVICOS.MANIFESTACAO);
+ }else{
+ url = WebServiceUtil.getUrl(tipo, ConstantesUtil.SERVICOS.EVENTO);
+ }
+
+ NFeRecepcaoEvento4Stub stub = new NFeRecepcaoEvento4Stub(url);
+ NFeRecepcaoEvento4Stub.NfeResultMsg result = stub.nfeRecepcaoEvento(dadosMsg);
+
+ return result.getExtraElement().toString();
+ } catch (RemoteException | XMLStreamException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/Inutilizar.java b/src/main/java/br/com/samuelweb/nfe/Inutilizar.java
new file mode 100644
index 00000000..2d737ba3
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/Inutilizar.java
@@ -0,0 +1,78 @@
+package br.com.samuelweb.nfe;
+
+import br.com.samuelweb.nfe.dom.ConfiguracoesIniciaisNfe;
+import br.com.samuelweb.nfe.exception.NfeException;
+import br.com.samuelweb.nfe.exception.NfeValidacaoException;
+import br.com.samuelweb.nfe.util.*;
+import br.inf.portalfiscal.nfe.schema_4.inutNFe.TInutNFe;
+import br.inf.portalfiscal.nfe.schema_4.inutNFe.TRetInutNFe;
+import br.inf.portalfiscal.www.nfe_400.wsdl.NFeInutilizacao.NFeInutilizacao4Stub;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.AXIOMUtil;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.stream.XMLStreamException;
+import java.rmi.RemoteException;
+
+/**
+ * Classe Responsavel por inutilizar uma Faixa de numeracao da Nfe.
+ *
+ * @author Samuel Oliveira - samuk.exe@hotmail.com - www.samuelweb.com.br
+ */
+class Inutilizar {
+
+ static TRetInutNFe inutiliza(String id, String motivo, String tipo) throws NfeException {
+
+ try {
+
+ ConfiguracoesIniciaisNfe config = CertificadoUtil.iniciaConfiguracoes();
+
+ TInutNFe inutNFe = new TInutNFe();
+ inutNFe.setVersao(ConstantesUtil.VERSAO.INUTILIZACAO);
+
+ TInutNFe.InfInut infInut = new TInutNFe.InfInut();
+ infInut.setId(id);
+ infInut.setTpAmb(config.getAmbiente());
+ infInut.setXServ("INUTILIZAR");
+ infInut.setCUF(id.substring(2,4));
+ infInut.setAno(id.substring(4,6));
+
+ infInut.setCNPJ(id.substring(6,20));
+ infInut.setMod(tipo.equals(ConstantesUtil.NFE) ? "55" : "65");
+ infInut.setSerie(Integer.valueOf(id.substring(22,25)).toString());
+
+ infInut.setNNFIni(Integer.valueOf(id.substring(25,34)).toString());
+ infInut.setNNFFin(Integer.valueOf(id.substring(34,43)).toString());
+
+ infInut.setXJust(motivo);
+ inutNFe.setInfInut(infInut);
+
+ String xml = XmlUtil.objectToXml(inutNFe);
+ xml = xml.replaceAll(" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\"", "");
+
+ xml = Assinar.assinaNfe(xml, Assinar.INFINUT);
+
+ String erros = Validar.validaXml(xml, Validar.INUTILIZACAO);
+ if (!ObjetoUtil.isEmpty(erros)) {
+ throw new NfeValidacaoException("Erro Na Validação do Xml: " + erros);
+ }
+
+ if (config.isLog()) {
+ System.out.println("Xml Inutilizar: " + xml);
+ }
+ OMElement ome = AXIOMUtil.stringToOM(xml);
+
+ NFeInutilizacao4Stub.NfeDadosMsg dadosMsg = new NFeInutilizacao4Stub.NfeDadosMsg();
+ dadosMsg.setExtraElement(ome);
+
+ NFeInutilizacao4Stub stub = new NFeInutilizacao4Stub(WebServiceUtil.getUrl(tipo, ConstantesUtil.SERVICOS.INUTILIZACAO));
+ NFeInutilizacao4Stub.NfeResultMsg result = stub.nfeInutilizacaoNF(dadosMsg);
+
+ return XmlUtil.xmlToObject(result.getExtraElement().toString(), TRetInutNFe.class);
+ } catch (RemoteException | XMLStreamException | JAXBException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/ManifestacaoDestinatario.java b/src/main/java/br/com/samuelweb/nfe/ManifestacaoDestinatario.java
new file mode 100644
index 00000000..56f88e68
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/ManifestacaoDestinatario.java
@@ -0,0 +1,68 @@
+package br.com.samuelweb.nfe;
+
+import br.com.samuelweb.nfe.dom.ConfiguracoesIniciaisNfe;
+import br.com.samuelweb.nfe.exception.NfeException;
+import br.com.samuelweb.nfe.util.CertificadoUtil;
+import br.com.samuelweb.nfe.util.ConstantesUtil;
+import br.com.samuelweb.nfe.dom.Enum.TipoManifestacao;
+import br.com.samuelweb.nfe.util.XmlUtil;
+import br.inf.portalfiscal.nfe.schema.envConfRecebto.TEnvEvento;
+import br.inf.portalfiscal.nfe.schema.envConfRecebto.TEvento;
+import br.inf.portalfiscal.nfe.schema.envConfRecebto.TRetEnvEvento;
+
+import javax.xml.bind.JAXBException;
+
+/**
+ * @author Samuel Oliveira - samuk.exe@hotmail.com
+ * Data: 28/09/2017 - 11:11
+ */
+class ManifestacaoDestinatario {
+
+ static TRetEnvEvento eventoManifestacao(String chave, TipoManifestacao manifestacao, String cnpj, String data, String motivo) throws NfeException {
+
+ try {
+
+ ConfiguracoesIniciaisNfe configuracoesNfe = CertificadoUtil.iniciaConfiguracoes();
+
+ String id = "ID" + manifestacao.getCodigo() + chave + "01";
+
+ TEnvEvento envEvento = new TEnvEvento();
+ envEvento.setVersao(ConstantesUtil.VERSAO.EVENTO_MANIFESTAR);
+ envEvento.setIdLote("1");
+
+ TEvento evento = new TEvento();
+ evento.setVersao(ConstantesUtil.VERSAO.EVENTO_MANIFESTAR);
+
+ TEvento.InfEvento infEvento = new TEvento.InfEvento();
+ infEvento.setId(id);
+ infEvento.setCOrgao("91");
+ infEvento.setTpAmb(configuracoesNfe.getAmbiente());
+ infEvento.setCNPJ(cnpj);
+ infEvento.setChNFe(chave);
+ infEvento.setDhEvento(data);
+ infEvento.setTpEvento(manifestacao.getCodigo());
+ infEvento.setNSeqEvento("1");
+ infEvento.setVerEvento(ConstantesUtil.VERSAO.EVENTO_MANIFESTAR);
+
+ TEvento.InfEvento.DetEvento detEvento = new TEvento.InfEvento.DetEvento();
+ detEvento.setVersao(ConstantesUtil.VERSAO.EVENTO_MANIFESTAR);
+ detEvento.setDescEvento(manifestacao.getValor());
+ detEvento.setXJust(motivo);
+ infEvento.setDetEvento(detEvento);
+ evento.setInfEvento(infEvento);
+ envEvento.getEvento().add(evento);
+
+ String xml = XmlUtil.objectToXml(envEvento);
+ xml = xml.replaceAll(" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\"", "");
+ xml = xml.replaceAll("
+ * Inicia Configurações Nfe.
+ */
+public final class ConfiguracoesIniciaisNfe {
+
+ private static ConfiguracoesIniciaisNfe instance;
+
+ private Estados estado;
+ private String ambiente;
+ private Certificado certificado;
+ private String pastaSchemas;
+ private String versaoNfe;
+ private ProxyUtil proxyUtil;
+ private boolean contigenciaSCAN;
+ private boolean log = true;
+
+ //Construtor Singleton
+ private ConfiguracoesIniciaisNfe() {
+ }
+
+ //Construtor Privado
+ private ConfiguracoesIniciaisNfe(Estados estado, String ambiente, Certificado certificado, String pastaSchemas) {
+
+ instance = new ConfiguracoesIniciaisNfe();
+ instance.setEstado(estado);
+ instance.setAmbiente(ambiente);
+ instance.setCertificado(certificado);
+ instance.setPastaSchemas(pastaSchemas);
+ instance.setVersaoNfe(ConstantesUtil.VERSAO.NFE);
+
+ }
+
+ public static ConfiguracoesIniciaisNfe iniciaConfiguracoes(Estados estado, String ambiente, Certificado certificado, String pastaSchemas) {
+ new ConfiguracoesIniciaisNfe(estado, ambiente, certificado, pastaSchemas);
+ System.out.println("Api Java Nfe Versão 4.00.1 - Samuel Olivera - samuk.exe@hotmail.com");
+ System.out.println("Certificado: " + certificado.getTipo().toUpperCase() + " - " + certificado.getNome().toUpperCase() + " - Vencimento: " + certificado.getVencimento());
+ System.out.println("Ambiente: " + (ambiente.equals("1") ? "Produção" : "Homologação") + " - Estado: " + estado.getNome());
+ return instance;
+ }
+
+ public static ConfiguracoesIniciaisNfe iniciaConfiguracoes(Estados estado, String ambiente, Certificado certificado, String pastaSchemas, Boolean log) {
+ new ConfiguracoesIniciaisNfe(estado, ambiente, certificado, pastaSchemas);
+ if (log) {
+ System.out.println("Api Java Nfe Versão 4.00.1 - Samuel Olivera - samuk.exe@hotmail.com");
+ System.out.println("Certificado: " + certificado.getTipo().toUpperCase() + " - " + certificado.getNome().toUpperCase() + " - Vencimento: " + certificado.getVencimento());
+ System.out.println("Ambiente: " + (ambiente.equals("1") ? "Produção" : "Homologação") + " - Estado: " + estado.getNome());
+ }
+ return instance;
+ }
+
+ public static ConfiguracoesIniciaisNfe getInstance() throws NfeException {
+ if (instance == null) {
+ throw new NfeException("Configurações Não Foram Inicializadas.");
+ }
+
+ return instance;
+ }
+
+ public void setProxy(String ip, int porta, String usuario, String senha) {
+ proxyUtil = new ProxyUtil(ip, porta, usuario, senha);
+ }
+
+ /**
+ * @return the pastaSchemas
+ */
+ public String getPastaSchemas() {
+ return pastaSchemas;
+ }
+
+ /**
+ * @param pastaSchemas the pastaSchemas to set
+ */
+ private void setPastaSchemas(String pastaSchemas) {
+ this.pastaSchemas = pastaSchemas;
+ }
+
+ /**
+ * @return the versaoNfe
+ */
+ public String getVersaoNfe() {
+ return versaoNfe;
+ }
+
+ /**
+ * @param versaoNfe the versaoNfe to set
+ */
+ private void setVersaoNfe(String versaoNfe) {
+ this.versaoNfe = versaoNfe;
+ }
+
+ /**
+ * @return the ambiente
+ */
+ public String getAmbiente() {
+ return ambiente;
+ }
+
+ /**
+ * @param ambiente the ambiente to set
+ */
+ public void setAmbiente(String ambiente) {
+ this.ambiente = ambiente;
+ }
+
+ /**
+ * @return the certificado
+ */
+ public Certificado getCertificado() {
+ return certificado;
+ }
+
+ /**
+ * @param certificado the certificado to set
+ */
+ public void setCertificado(Certificado certificado) {
+ this.certificado = certificado;
+ }
+
+ /**
+ * @return configuracao do proxy
+ */
+ public ProxyUtil getProxy() {
+ return proxyUtil;
+ }
+
+ /**
+ * @return the contigenciaSCAN
+ */
+ public boolean isContigenciaSCAN() {
+ return contigenciaSCAN;
+ }
+
+ /**
+ * @param contigenciaSCAN the contigencia to set
+ */
+ public void setContigenciaSCAN(boolean contigenciaSCAN) {
+ this.contigenciaSCAN = contigenciaSCAN;
+ }
+
+ /**
+ * @return the estado
+ */
+ public Estados getEstado() {
+ return estado;
+ }
+
+ /**
+ * @param estado the estado to set
+ */
+ private void setEstado(Estados estado) {
+ this.estado = estado;
+ }
+
+ public boolean isLog() {
+ return log;
+ }
+
+ public void setLog(boolean log) {
+ this.log = log;
+ }
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/dom/Enum/StatusEnum.java b/src/main/java/br/com/samuelweb/nfe/dom/Enum/StatusEnum.java
new file mode 100644
index 00000000..71097076
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/dom/Enum/StatusEnum.java
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package br.com.samuelweb.nfe.dom.Enum;
+
+/**
+ * @author Samuel Oliveira
+ *
+ */
+/**
+ * Enum que contém todos os estados brasileiros.
+ * @author Samuel Oliveira
+ *
+ */
+public enum StatusEnum {
+
+ AUTORIZADO("100"),
+ CANCELADO("101"),
+ INUTILIZADO("102"),
+ LOTE_RECEBIDO("103"),
+ LOTE_PROCESSADO("104"),
+ LOTE_EM_PROCESSAMENTO("105"),
+ CADASTRO_ENCONTRADO("111"),
+ LOTE_EVENTO_PROCESSADO("128"),
+ EVENTO_VINCULADO("135"),
+ NENHUM_DOC_LOCALIZADO_PARA_DESTINATARIO("137"),
+ DOC_LOCALIZADO_PARA_DESTINATARIO("138");
+
+ private final String codigo;
+
+ StatusEnum(String codigo) {
+ this.codigo = codigo;
+ }
+
+ public String getCodigo(){
+ return codigo;
+ }
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/dom/Enum/TipoManifestacao.java b/src/main/java/br/com/samuelweb/nfe/dom/Enum/TipoManifestacao.java
new file mode 100644
index 00000000..01fb5d92
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/dom/Enum/TipoManifestacao.java
@@ -0,0 +1,74 @@
+package br.com.samuelweb.nfe.dom.Enum;
+
+/**
+ * Enum com os Codigos UF do IBGE
+ *
+ * @author Denilson Godinho
+ *
+ */
+public enum TipoManifestacao {
+
+ CONFIRMACAO_DA_OPERACAO ("210200", "Confirmação da Operação", "Confirmacao da Operacao"),
+ CIENCIA_DA_OPERACAO ("210210", "Ciência da Emissão", "Ciencia da Operacao"),
+ DESCONHECIMENTO_DA_OPERACAO ("210220", "Desconhecimento da Operação", "Desconhecimento da Operacao"),
+ OPERACAO_NAO_REALIZADA ("210240", "Operação não Realizada", "Operacao nao Realizada");
+
+ private final String codigo;
+ private final String descricao;
+ private final String valor;
+
+ private TipoManifestacao(String codigo, String descricao, String valor) {
+ this.codigo = codigo;
+ this.descricao = descricao;
+ this.valor = valor;
+ }
+
+ /**
+ * @return the codigo
+ */
+ public String getCodigo() {
+ return codigo;
+ }
+
+ /**
+ * @return the descricao
+ */
+ public String getDescricao() {
+ return descricao;
+ }
+
+ /**
+ * @return the valor
+ */
+ public String getValor() {
+ return valor;
+ }
+
+ /**
+ * @return TipoManifestacao
+ */
+ public static TipoManifestacao getTipo(String codigo){
+ TipoManifestacao tipo = null;
+ switch (codigo) {
+
+ case "210200":
+ tipo = CONFIRMACAO_DA_OPERACAO;
+ break;
+ case "210210":
+ tipo = CIENCIA_DA_OPERACAO;
+ break;
+ case "210220":
+ tipo = DESCONHECIMENTO_DA_OPERACAO;
+ break;
+ case "210240":
+ tipo = OPERACAO_NAO_REALIZADA;
+ break;
+ default:
+ break;
+ }
+
+ return tipo;
+ }
+
+
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/exception/NfeException.java b/src/main/java/br/com/samuelweb/nfe/exception/NfeException.java
new file mode 100644
index 00000000..1e657839
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/exception/NfeException.java
@@ -0,0 +1,49 @@
+package br.com.samuelweb.nfe.exception;
+
+/**
+ * Exceção a ser lançada na ocorrência de falhas provenientes da Nota Fiscal Eletronica.
+ *
+ * @author Samuel Oliveira - samuk.exe@hotmail.com - www.samuelweb.com.br
+ */
+public class NfeException extends Exception {
+
+ private static final long serialVersionUID = -5054900660251852366L;
+
+ String message;
+
+ /**
+ * Construtor da classe.
+ *
+ * @param e
+ */
+ public NfeException(Throwable e) {
+ super(e);
+ }
+
+
+ /**
+ * Construtor da classe.
+ *
+ * @param message
+ */
+ public NfeException(String message) {
+ this((Throwable) null);
+ this.message = message;
+ }
+
+ /**
+ * @return the message
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * @param message the message to set
+ */
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/exception/NfeValidacaoException.java b/src/main/java/br/com/samuelweb/nfe/exception/NfeValidacaoException.java
new file mode 100644
index 00000000..b9f54606
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/exception/NfeValidacaoException.java
@@ -0,0 +1,48 @@
+package br.com.samuelweb.nfe.exception;
+
+/**
+ * Exceção a ser lançada na ocorrência de falhas provenientes da validação da Nota Fiscal Eletronica.
+ *
+ * @author Samuel Oliveira - samuk.exe@hotmail.com - www.samuelweb.com.br
+ */
+public class NfeValidacaoException extends NfeException {
+
+ private static final long serialVersionUID = 2224963351733125955L;
+ String message;
+
+ /**
+ * Construtor da classe.
+ *
+ * @param e
+ */
+ public NfeValidacaoException(Throwable e) {
+ super(e);
+ }
+
+
+ /**
+ * Construtor da classe.
+ *
+ * @param message
+ */
+ public NfeValidacaoException(String message) {
+ this((Throwable) null);
+ this.message = message;
+ }
+
+ /**
+ * @return the message
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * @param message the message to set
+ */
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/util/CDATAContentHandler.java b/src/main/java/br/com/samuelweb/nfe/util/CDATAContentHandler.java
new file mode 100644
index 00000000..9f9b7327
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/CDATAContentHandler.java
@@ -0,0 +1,26 @@
+package br.com.samuelweb.nfe.util;
+import com.sun.xml.txw2.output.XMLWriter;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.regex.Pattern;
+
+public class CDATAContentHandler extends XMLWriter {
+ public CDATAContentHandler(Writer writer, String encoding) throws IOException {
+ super(writer, encoding);
+ }
+
+ private static final Pattern XML_CHARS = Pattern.compile("[<>&]");
+
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ boolean useCData = XML_CHARS.matcher(new String(ch, start, length)).find();
+ if (useCData) {
+ super.startCDATA();
+ }
+ super.characters(ch, start, length);
+ if (useCData) {
+ super.endCDATA();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/util/CertificadoUtil.java b/src/main/java/br/com/samuelweb/nfe/util/CertificadoUtil.java
new file mode 100644
index 00000000..122752e4
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/CertificadoUtil.java
@@ -0,0 +1,32 @@
+package br.com.samuelweb.nfe.util;
+
+import br.com.samuelweb.certificado.Certificado;
+import br.com.samuelweb.certificado.CertificadoService;
+import br.com.samuelweb.certificado.exception.CertificadoException;
+import br.com.samuelweb.nfe.dom.ConfiguracoesIniciaisNfe;
+import br.com.samuelweb.nfe.exception.NfeException;
+
+/**
+ * Classe Responsavel Por Carregar as informações do Certificado Digital
+ *
+ * @author Samuel Oliveira
+ *
+ */
+public class CertificadoUtil {
+
+ public static ConfiguracoesIniciaisNfe iniciaConfiguracoes() throws NfeException {
+
+ try {
+ Certificado certificado = ConfiguracoesIniciaisNfe.getInstance().getCertificado();
+ if(!certificado.isValido()){
+ throw new CertificadoException("Certificado vencido.");
+ }
+ CertificadoService.inicializaCertificado(certificado, CertificadoUtil.class.getResourceAsStream("/Cacert"));
+ } catch (CertificadoException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ return ConfiguracoesIniciaisNfe.getInstance();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/br/com/samuelweb/nfe/util/ConstantesUtil.java b/src/main/java/br/com/samuelweb/nfe/util/ConstantesUtil.java
new file mode 100644
index 00000000..b3440e1b
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/ConstantesUtil.java
@@ -0,0 +1,60 @@
+/**
+ *
+ */
+package br.com.samuelweb.nfe.util;
+
+/**
+ * @author Samuel Oliveira
+ *
+ */
+public interface ConstantesUtil {
+
+ String NFE = "NFe";
+ String NFCE = "NFCe";
+
+ interface SERVICOS {
+
+ String STATUS_SERVICO = "NfeStatusServico_4.00";
+ String ENVIO = "NfeAutorizacao_4.00";
+ String CONSULTA_RECIBO = "NfeRetAutorizacao_4.00";
+ String CONSULTA_CADASTRO = "NfeConsultaCadastro_4.00";
+ String URL_QRCODE = "URL-QRCode";
+ String URL_CONSULTANFCE = "URL-ConsultaNFCe";
+ String EVENTO = "RecepcaoEvento_4.00";
+ String INUTILIZACAO = "NfeInutilizacao_4.00";
+ String CONSULTA_XML = "NfeConsultaProtocolo_4.00";
+ String DISTRIBUICAO_DFE = "NfeDistribuicaoDFe_1.01";
+ String MANIFESTACAO = "MANIFESTACAO";
+ String CSC = "AdministrarCSCNFCe_1.00";
+
+ }
+
+ interface TIPOS {
+ String CNPJ = "CNPJ";
+ String CPF = "CPF";
+ String NSU = "NSU";
+ String CHAVE = "CHAVE";
+ }
+
+ interface EVENTO {
+ String CANCELAR = "110111";
+ String CCE = "110110";
+ String MANIFESTACAO = "MANIFESTACAO";
+ }
+
+
+ interface AMBIENTE {
+ String HOMOLOGACAO = "2";
+ String PRODUCAO = "1";
+ }
+
+ interface VERSAO{
+ String NFE = "4.00";
+ String INUTILIZACAO = "4.00";
+ String DIST_DFE = "1.01";
+ String EVENTO_CANCELAMENTO = "1.00";
+ String EVENTO_CCE = "1.00";
+ String EVENTO_MANIFESTAR = "1.00";
+ }
+
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/util/Estados.java b/src/main/java/br/com/samuelweb/nfe/util/Estados.java
new file mode 100644
index 00000000..607883df
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/Estados.java
@@ -0,0 +1,60 @@
+/**
+ *
+ */
+package br.com.samuelweb.nfe.util;
+
+/**
+ * @author Samuel Oliveira
+ *
+ */
+/**
+ * Enum que contém todos os estados brasileiros.
+ * @author Jerônimo Nunes Rocha
+ *
+ */
+public enum Estados {
+
+ RO("11","Rondônia"),
+ AC("12","Acre"),
+ AM("13","Amazonas"),
+ RR("14","Roraima"),
+ PA("15","Pará"),
+ AP("16","Amapá"),
+ TO("17","Tocantins"),
+ MA("21","Maranhão"),
+ PI("22","Piauí"),
+ CE("23","Ceará"),
+ RN("24","Rio Grande do Norte"),
+ PB("25","Paraíba"),
+ PE("26","Pernambuco"),
+ AL("27","Alagoas"),
+ SE("28","Sergipe"),
+ BA("29","Bahia"),
+ MG("31","Minas Gerais"),
+ ES("32","Espírito Santo"),
+ RJ("33","Rio de Janeiro"),
+ SP("35","São Paulo"),
+ PR("41","Paraná"),
+ SC("42","Santa Catarina"),
+ RS("43","Rio Grande do Sul"),
+ MS("50","Mato Grosso do Sul"),
+ MT("51","Mato Grosso"),
+ GO("52","Goiás"),
+ DF("53","Distrito Federal");
+
+ private final String codigoIbge;
+ private final String nome;
+
+ private Estados(String codigoIbge,String nome) {
+ this.codigoIbge = codigoIbge;
+ this.nome = nome;
+ }
+
+ public String getNome(){
+ return nome;
+ }
+
+ public String getCodigoIbge(){
+ return codigoIbge;
+ }
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/util/NFCeUtil.java b/src/main/java/br/com/samuelweb/nfe/util/NFCeUtil.java
new file mode 100644
index 00000000..f1c0a74d
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/NFCeUtil.java
@@ -0,0 +1,87 @@
+package br.com.samuelweb.nfe.util;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+*
+* @author Samuel Oliveira
+*/
+public class NFCeUtil {
+
+ private static String cHashQRCode;
+
+ /**
+ *
+ * Funcao Responsavel por Devolver o QrCode já no padrão da Nota.
+ *
+ * @param chave : Chave de Acesso da NFCe
+ * @param versao: Versão do QR Code. Atual : "100"
+ * @param ambiente : Identificação do Ambiente (1 – Produção, 2 – Homologação)
+ * @param cpfCnpj : Documento de Identificação do Consumidor (CNPJ/CPF)
+ * @param dhEmi : Data e Hora de Emissão da NFC-e Ex: 2016-10-06T10:55:33-03:00
+ * @param valorNF : Valor Total da NFC-e
+ * @param valorICMS : Valor Total ICMS na NFC-e
+ * @param digVal : Digest Value da NFC-e
+ * @param idToken : Identificador do CSC – Código de Segurança do Contribuinte no Banco de Dados da SEFAZ
+ * @param CSC : Código de Segurança do Contribuinte (antigo Token)
+ * @param urlConsulta : Url De Consulta da Nfc-e do Estado
+ *
+ * @return String do QrCode
+ */
+ public static String getCodeQRCode(String chave, String versao, String ambiente, String cpfCnpj, String dhEmi, String valorNF, String valorICMS, String digVal, String idToken, String CSC, String urlConsulta) {
+
+ StringBuilder value = new StringBuilder();
+ value.append("chNFe=").append(chave);
+ value.append("&nVersao=").append(versao);
+ value.append("&tpAmb=").append(ambiente);
+ value.append((cpfCnpj == null | "".equals(cpfCnpj)) ? "" : "&cDest=" + cpfCnpj);
+ value.append("&dhEmi=").append(getHexa(dhEmi));
+ value.append("&vNF=").append(valorNF);
+ value.append("&vICMS=").append(valorICMS);
+ value.append("&digVal=").append(getHexa(digVal));
+ value.append("&cIdToken=").append(idToken);
+ cHashQRCode = getHexa(getHash(value.toString() + CSC, "SHA-1")).toUpperCase();
+
+ StringBuilder ret = new StringBuilder();
+ ret.append(urlConsulta).append("?");
+ ret.append(value);
+ ret.append("&cHashQRCode=").append(cHashQRCode);
+ return ret.toString();
+ }
+
+
+ /**
+ * @param valor
+ * @param algoritmo "SHA-256", "SHA-1", "MD5"
+ * @return
+ */
+ private static byte[] getHash(String valor, String algoritmo) {
+ try {
+ MessageDigest md = MessageDigest.getInstance(algoritmo);
+ md.update(valor.getBytes());
+ return md.digest();
+ } catch (NoSuchAlgorithmException e) {
+ return null;
+ }
+ }
+
+ private static String getHexa(String valor) {
+ return getHexa(valor.getBytes());
+ }
+
+ private static String getHexa(byte[] bytes) {
+ StringBuilder s = new StringBuilder();
+ for (int i = 0; i < bytes.length; i++) {
+ int parteAlta = ((bytes[i] >> 4) & 0xf) << 4;
+ int parteBaixa = bytes[i] & 0xf;
+ if (parteAlta == 0) {
+ s.append('0');
+ }
+ s.append(Integer.toHexString(parteAlta | parteBaixa));
+ }
+ return s.toString();
+ }
+
+}
+
diff --git a/src/main/java/br/com/samuelweb/nfe/util/ObjetoUtil.java b/src/main/java/br/com/samuelweb/nfe/util/ObjetoUtil.java
new file mode 100644
index 00000000..703bb565
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/ObjetoUtil.java
@@ -0,0 +1,57 @@
+package br.com.samuelweb.nfe.util;
+
+import java.util.Collection;
+
+public final class ObjetoUtil {
+
+ private ObjetoUtil(){
+ super();
+ }
+
+ public static Boolean equalsNull(Object object ){
+ return object == null;
+ }
+
+ public static Boolean differentNull(Object object){
+ return object != null;
+ }
+
+
+ /**
+ * Verifica se um objeto é vazio.
+ *
+ * @param obj
+ * @return true se o objeto for vazio(empty).
+ */
+ public static boolean isEmpty(Object obj) {
+ if (obj == null)
+ return true;
+ if (obj instanceof Collection)
+ return ((Collection>) obj).size() == 0;
+
+ final String s = String.valueOf(obj).trim();
+
+ return s.length() == 0 || s.equalsIgnoreCase("null");
+ }
+
+ @SuppressWarnings("rawtypes")
+ public static Boolean equalsNull(Collection collection){
+ return collection == null;
+ }
+
+ @SuppressWarnings("rawtypes")
+ public static Boolean differentNull(Collection collection){
+ return collection != null;
+ }
+
+ @SuppressWarnings("rawtypes")
+ public static Boolean isEmpty(Collection collection){
+ return collection.isEmpty();
+ }
+
+ @SuppressWarnings("rawtypes")
+ public static Boolean isNotEmpty(Collection collection){
+ return !collection.isEmpty();
+ }
+
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/util/ProxyUtil.java b/src/main/java/br/com/samuelweb/nfe/util/ProxyUtil.java
new file mode 100644
index 00000000..1587b18b
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/ProxyUtil.java
@@ -0,0 +1,37 @@
+package br.com.samuelweb.nfe.util;
+
+import org.apache.axis2.transport.http.HttpTransportProperties;
+
+public class ProxyUtil {
+ HttpTransportProperties.ProxyProperties proxyProperties;
+
+ public ProxyUtil(String ip, int porta, String usuario,String senha) {
+
+ proxyProperties = new HttpTransportProperties.ProxyProperties();
+
+ proxyProperties.setProxyName(ip);
+
+ proxyProperties.setProxyPort(porta);
+
+ proxyProperties.setUserName(usuario);
+
+ proxyProperties.setPassWord(senha);
+ }
+
+ public String getProxyHostName(){
+ return proxyProperties.getProxyHostName();
+ }
+
+ public String getProxyPort(){
+ return String.valueOf(proxyProperties.getProxyPort());
+ }
+
+ public String getProxyUserName(){
+ return proxyProperties.getUserName();
+ }
+
+ public String getProxyPassWord(){
+ return proxyProperties.getPassWord();
+ }
+}
+
diff --git a/src/main/java/br/com/samuelweb/nfe/util/SchemaUtil.java b/src/main/java/br/com/samuelweb/nfe/util/SchemaUtil.java
new file mode 100644
index 00000000..dee91858
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/SchemaUtil.java
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package br.com.samuelweb.nfe.util;
+
+/**
+ * @author Samuel Oliveira - samuk.exe@hotmail.com - www.samuelweb.com.br
+ *
+ */
+public class SchemaUtil {
+
+ public static final String STATUS = "consStatServ_v4.00.xsd";
+ public static final String CONSULTA_XML = "consSitNFe_v4.00.xsd";
+ public static final String CONSULTA_CADASTRO = "ConsCad_v4.00.xsd";
+ public static final String ENVIO = "enviNFe_v4.00.xsd";
+ public static final String INUTILIZACAO = "inutNFe_v4.00.xsd";
+ public static final String CANCELAR = "envEventoCancNFe_v1.00.xsd";
+ public static final String CCE = "envCCe_v1.00.xsd";
+ public static final String DIST_DFE = "distDFeInt_v1.01.xsd";
+ public static final String MANIFESTAR = "envConfRecebto_v1.00.xsd";
+ public static final String CONSULTA_RECIBO = "consReciNFe_v4.00.xsd";
+
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/util/WebServiceUtil.java b/src/main/java/br/com/samuelweb/nfe/util/WebServiceUtil.java
new file mode 100644
index 00000000..ac2594d1
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/WebServiceUtil.java
@@ -0,0 +1,112 @@
+/**
+ *
+ */
+package br.com.samuelweb.nfe.util;
+
+import br.com.samuelweb.nfe.dom.ConfiguracoesIniciaisNfe;
+import br.com.samuelweb.nfe.exception.NfeException;
+import org.ini4j.Wini;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author Samuel Oliveira
+ *
+ */
+public class WebServiceUtil {
+
+ public static String getUrl(String tipo, String servico) throws NfeException {
+
+ try {
+
+ ConfiguracoesIniciaisNfe config = ConfiguracoesIniciaisNfe.getInstance();
+ String secao = tipo + "_" + config.getEstado() + "_"
+ + (config.getAmbiente().equals(ConstantesUtil.AMBIENTE.HOMOLOGACAO) ? "H" : "P");
+
+ InputStream is = WebServiceUtil.class.getResourceAsStream("/WebServices.ini");
+
+ Wini ini = new Wini();
+ ini.getConfig().setLowerCaseOption(true);
+ ini.load(is);
+ String url = ini.get(secao, "usar");
+
+ if (servico.equals(ConstantesUtil.SERVICOS.DISTRIBUICAO_DFE) || servico.equals(ConstantesUtil.SERVICOS.MANIFESTACAO)) {
+ secao = config.getAmbiente().equals(ConstantesUtil.AMBIENTE.HOMOLOGACAO) ? "NFe_AN_H" : "NFe_AN_P";
+
+ if (servico.equals(ConstantesUtil.SERVICOS.MANIFESTACAO)) {
+ servico = ConstantesUtil.SERVICOS.EVENTO;
+ }
+
+ } else if (!servico.equals(ConstantesUtil.SERVICOS.URL_CONSULTANFCE)
+ && !servico.equals(ConstantesUtil.SERVICOS.URL_QRCODE) && ObjetoUtil.differentNull(url)) {
+ secao = url;
+ } else if(config.isContigenciaSCAN()){
+ //SVC-RS
+ if(config.getEstado().equals(Estados.GO)
+ || config.getEstado().equals(Estados.AM)
+ || config.getEstado().equals(Estados.BA)
+ || config.getEstado().equals(Estados.CE)
+ || config.getEstado().equals(Estados.MA)
+ || config.getEstado().equals(Estados.MS)
+ || config.getEstado().equals(Estados.MT)
+ || config.getEstado().equals(Estados.PA)
+ || config.getEstado().equals(Estados.PE)
+ || config.getEstado().equals(Estados.PI)
+ || config.getEstado().equals(Estados.PR)){
+ secao = tipo + "_SVRS_" + (config.getAmbiente().equals(ConstantesUtil.AMBIENTE.HOMOLOGACAO) ? "H" : "P");
+ //SVC-AN
+ }else{
+ secao = tipo + "_SVAN_" + (config.getAmbiente().equals(ConstantesUtil.AMBIENTE.HOMOLOGACAO) ? "H" : "P");
+ }
+ }
+
+ url = ini.get(secao, servico.toLowerCase());
+
+ if(ObjetoUtil.isEmpty(url)){
+ throw new NfeException("WebService de "+servico+" não encontrado para "+config.getEstado().getNome());
+ }
+
+ if (config.isLog()){
+ System.out.println("WebService - " + url);
+ }
+ return url;
+
+ } catch (IOException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ }
+ public static String getUrlConsultaCadastro(String uf) throws NfeException {
+
+ String tipo = ConstantesUtil.NFE;
+ String servico = ConstantesUtil.SERVICOS.CONSULTA_CADASTRO;
+ try {
+
+ ConfiguracoesIniciaisNfe config = ConfiguracoesIniciaisNfe.getInstance();
+ String secao = tipo + "_" + uf.toUpperCase() + "_"
+ + (config.getAmbiente().equals(ConstantesUtil.AMBIENTE.HOMOLOGACAO) ? "H" : "P");
+
+ InputStream is = WebServiceUtil.class.getResourceAsStream("/WebServices.ini");
+
+ Wini ini = new Wini();
+ ini.getConfig().setLowerCaseOption(true);
+ ini.load(is);
+ String url = ini.get(secao, servico.toLowerCase());
+
+ if(ObjetoUtil.isEmpty(url)){
+ throw new NfeException("WebService de "+servico+" não encontrado para "+uf);
+ }
+
+ if (config.isLog()) {
+ System.out.println("WebService - " + url);
+ }
+ return url;
+
+ } catch (IOException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ }
+
+}
diff --git a/src/main/java/br/com/samuelweb/nfe/util/XmlUtil.java b/src/main/java/br/com/samuelweb/nfe/util/XmlUtil.java
new file mode 100644
index 00000000..f15a64cc
--- /dev/null
+++ b/src/main/java/br/com/samuelweb/nfe/util/XmlUtil.java
@@ -0,0 +1,300 @@
+/**
+ *
+ */
+package br.com.samuelweb.nfe.util;
+
+import br.com.samuelweb.nfe.exception.NfeException;
+import br.inf.portalfiscal.nfe.schema.consCad.TConsCad;
+import br.inf.portalfiscal.nfe.schema.distdfeint.DistDFeInt;
+import br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TEnvEvento;
+import br.inf.portalfiscal.nfe.schema_4.consReciNFe.TConsReciNFe;
+import br.inf.portalfiscal.nfe.schema_4.consSitNFe.TConsSitNFe;
+import br.inf.portalfiscal.nfe.schema_4.consStatServ.TConsStatServ;
+import br.inf.portalfiscal.nfe.schema_4.enviNFe.TEnviNFe;
+import br.inf.portalfiscal.nfe.schema_4.enviNFe.TNfeProc;
+import br.inf.portalfiscal.nfe.schema_4.enviNFe.TProtNFe;
+import br.inf.portalfiscal.nfe.schema_4.inutNFe.TInutNFe;
+import br.inf.portalfiscal.nfe.schema_4.util.XsdUtil;
+
+import javax.xml.bind.*;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeConstants;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.transform.stream.StreamSource;
+import java.io.*;
+import java.text.Normalizer;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.GregorianCalendar;
+import java.util.zip.GZIPInputStream;
+
+//import br.inf.portalfiscal.nfe.schema_4.TConsCad;
+
+/**
+ * Classe Responsavel por Metodos referentes ao XML
+ *
+ * @author Samuel Oliveira
+ */
+public class XmlUtil {
+
+ private static final String STATUS = "TConsStatServ";
+ private static final String SITUACAO_NFE = "TConsSitNFe";
+ private static final String ENVIO_NFE = "TEnviNFe";
+ private static final String DIST_DFE = "DistDFeInt";
+ private static final String INUTILIZACAO = "TInutNFe";
+ private static final String NFEPROC = "TNfeProc";
+ private static final String EVENTO = "TEnvEvento";
+ private static final String TPROCEVENTO = "TProcEvento";
+ private static final String TCONSRECINFE = "TConsReciNFe";
+ private static final String TConsCad = "TConsCad";
+
+ private static final String TPROCCANCELAR = "br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TProcEvento";
+ private static final String TPROCCCE = "br.inf.portalfiscal.nfe.schema.envcce.TProcEvento";
+
+ private static final String TProtNFe = "TProtNFe";
+ private static final String TProtEnvi = "br.inf.portalfiscal.nfe.schema_4.enviNFe.TProtNFe";
+ private static final String TProtCons = "br.inf.portalfiscal.nfe.schema_4.retConsSitNFe.TProtNFe";
+ private static final String TProtReci = "br.inf.portalfiscal.nfe.schema_4.retConsReciNFe.TProtNFe";
+
+ private static final String CANCELAR = "br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TEnvEvento";
+ private static final String CCE = "br.inf.portalfiscal.nfe.schema.envcce.TEnvEvento";
+ private static final String MANIFESTAR = "br.inf.portalfiscal.nfe.schema.envConfRecebto.TEnvEvento";
+
+ /**
+ * Transforma o String do XML em Objeto
+ *
+ * @param xml
+ * @param classe
+ * @return T
+ */
+ public static T xmlToObject(String xml, Class classe) throws JAXBException {
+
+ JAXBContext context = JAXBContext.newInstance(classe);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+
+ return unmarshaller.unmarshal(new StreamSource(new StringReader(xml)), classe).getValue();
+ }
+
+ /**
+ * Transforma o Objeto em XML(String)
+ *
+ * @param obj
+ * @return
+ * @throws JAXBException
+ * @throws NfeException
+ */
+ public static String objectToXml(Object obj) throws JAXBException, NfeException {
+
+ JAXBContext context = null;
+ JAXBElement> element = null;
+
+ switch (obj.getClass().getSimpleName()) {
+
+ case STATUS:
+ context = JAXBContext.newInstance(TConsStatServ.class);
+ element = new br.inf.portalfiscal.nfe.schema_4.consStatServ.ObjectFactory().createConsStatServ((TConsStatServ) obj);
+ break;
+
+ case ENVIO_NFE:
+ context = JAXBContext.newInstance(TEnviNFe.class);
+ element = new br.inf.portalfiscal.nfe.schema_4.enviNFe.ObjectFactory().createEnviNFe((TEnviNFe) obj);
+ break;
+
+ case SITUACAO_NFE:
+ context = JAXBContext.newInstance(TConsSitNFe.class);
+ element = new br.inf.portalfiscal.nfe.schema_4.consSitNFe.ObjectFactory().createConsSitNFe((TConsSitNFe) obj);
+ break;
+
+ case DIST_DFE:
+ context = JAXBContext.newInstance(DistDFeInt.class);
+ element = new br.inf.portalfiscal.nfe.schema.distdfeint.ObjectFactory().createDistDFeInt((DistDFeInt) obj);
+ break;
+
+ case TCONSRECINFE:
+ context = JAXBContext.newInstance(TConsReciNFe.class);
+ element = new br.inf.portalfiscal.nfe.schema_4.consReciNFe.ObjectFactory().createConsReciNFe((TConsReciNFe) obj);
+ break;
+
+ case TConsCad:
+ context = JAXBContext.newInstance(TConsCad.class);
+ element = new br.inf.portalfiscal.nfe.schema.consCad.ObjectFactory().createConsCad((TConsCad) obj);
+ break;
+
+ case INUTILIZACAO:
+ context = JAXBContext.newInstance(TInutNFe.class);
+ element = new br.inf.portalfiscal.nfe.schema_4.inutNFe.ObjectFactory().createInutNFe((TInutNFe) obj);
+ break;
+
+ case TPROCEVENTO:
+ if (obj.getClass().getName().equals(TPROCCANCELAR)) {
+ context = JAXBContext.newInstance(br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TProcEvento.class);
+ element = new br.inf.portalfiscal.nfe.schema.envEventoCancNFe.ObjectFactory().createTProcEvento((br.inf.portalfiscal.nfe.schema.envEventoCancNFe.TProcEvento) obj);
+ } else if (obj.getClass().getName().equals(TPROCCCE)) {
+ context = JAXBContext.newInstance(br.inf.portalfiscal.nfe.schema.envcce.TProcEvento.class);
+ element = new br.inf.portalfiscal.nfe.schema.envcce.ObjectFactory().createTProcEvento((br.inf.portalfiscal.nfe.schema.envcce.TProcEvento) obj);
+ }
+
+ break;
+
+ case NFEPROC:
+ context = JAXBContext.newInstance(TNfeProc.class);
+ element = XsdUtil.enviNfe.createTNfeProc((TNfeProc) obj);
+ break;
+
+
+ case EVENTO:
+ if (obj.getClass().getName().equals(CANCELAR)) {
+ context = JAXBContext.newInstance(TEnvEvento.class);
+ element = new br.inf.portalfiscal.nfe.schema.envEventoCancNFe.ObjectFactory().createEnvEvento((TEnvEvento) obj);
+ } else if (obj.getClass().getName().equals(CCE)) {
+ context = JAXBContext.newInstance(br.inf.portalfiscal.nfe.schema.envcce.TEnvEvento.class);
+ element = new br.inf.portalfiscal.nfe.schema.envcce.ObjectFactory().createEnvEvento((br.inf.portalfiscal.nfe.schema.envcce.TEnvEvento) obj);
+ } else if (obj.getClass().getName().equals(MANIFESTAR)) {
+ context = JAXBContext.newInstance(br.inf.portalfiscal.nfe.schema.envConfRecebto.TEnvEvento.class);
+ element = new br.inf.portalfiscal.nfe.schema.envConfRecebto.ObjectFactory().createEnvEvento((br.inf.portalfiscal.nfe.schema.envConfRecebto.TEnvEvento) obj);
+ }
+ break;
+
+ case TProtNFe:
+ if (obj.getClass().getName().equals(TProtEnvi)) {
+ context = JAXBContext.newInstance(TProtNFe.class);
+ element = XsdUtil.enviNfe.createTProtNFe((br.inf.portalfiscal.nfe.schema_4.enviNFe.TProtNFe) obj);
+ } else if (obj.getClass().getName().equals(TProtCons)) {
+ context = JAXBContext.newInstance(br.inf.portalfiscal.nfe.schema_4.retConsSitNFe.TProtNFe.class);
+ element = XsdUtil.retConsSitNfe.createTProtNFe((br.inf.portalfiscal.nfe.schema_4.retConsSitNFe.TProtNFe) obj);
+ } else if (obj.getClass().getName().equals(TProtReci)) {
+ context = JAXBContext.newInstance(br.inf.portalfiscal.nfe.schema_4.retConsReciNFe.TProtNFe.class);
+ element = XsdUtil.retConsReciNfe.createTProtNFe((br.inf.portalfiscal.nfe.schema_4.retConsReciNFe.TProtNFe) obj);
+ }
+ break;
+
+ default:
+ throw new NfeException("Objeto não mapeado no XmlUtil:" + obj.getClass().getSimpleName());
+ }
+ Marshaller marshaller = context.createMarshaller();
+
+ marshaller.setProperty("jaxb.encoding", "Unicode");
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
+ marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+
+ StringWriter sw = new StringWriter();
+
+ if (obj.getClass().getSimpleName().equals(ENVIO_NFE) || obj.getClass().getSimpleName().equals(NFEPROC)) {
+ try {
+ CDATAContentHandler cdataHandler = new CDATAContentHandler(sw, "utf-8");
+ marshaller.marshal(element, cdataHandler);
+ } catch (IOException e) {
+ throw new NfeException(e.getMessage());
+ }
+ } else {
+ marshaller.marshal(element, sw);
+ }
+ StringBuilder xml = new StringBuilder();
+ xml.append("").append(sw.toString());
+
+ if ((obj.getClass().getSimpleName().equals(TPROCEVENTO))) {
+ return replacesNfe(xml.toString().replaceAll("procEvento", "procEventoNFe"));
+ } else {
+ return replacesNfe(xml.toString());
+ }
+
+ }
+
+ public static String gZipToXml(byte[] conteudo) throws IOException {
+ if (conteudo == null || conteudo.length == 0) {
+ return "";
+ }
+ GZIPInputStream gis;
+ gis = new GZIPInputStream(new ByteArrayInputStream(conteudo));
+ BufferedReader bf = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
+ StringBuilder outStr = new StringBuilder();
+ String line;
+ while ((line = bf.readLine()) != null) {
+ outStr.append(line);
+ }
+
+ return outStr.toString();
+ }
+
+ public static String criaNfeProc(TEnviNFe enviNfe, Object retorno) throws JAXBException, NfeException {
+
+ TNfeProc nfeProc = new TNfeProc();
+ nfeProc.setVersao("4.00");
+ nfeProc.setNFe(enviNfe.getNFe().get(0));
+ String xml = XmlUtil.objectToXml(retorno);
+ nfeProc.setProtNFe(XmlUtil.xmlToObject(xml, TProtNFe.class));
+
+ return XmlUtil.objectToXml(nfeProc);
+ }
+
+ public static String removeAcentos(String str) {
+
+ str = str.replaceAll("\r", "");
+ str = str.replaceAll("\t", "");
+ str = str.replaceAll("\n", "");
+ str = str.replaceAll("&", "E");
+ str = str.replaceAll(">\\s+<", "><");
+ CharSequence cs = new StringBuilder(str == null ? "" : str);
+ return Normalizer.normalize(cs, Normalizer.Form.NFKD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
+
+ }
+
+ private static String replacesNfe(String xml) {
+
+ xml = xml.replaceAll("ns2:", "");
+ xml = xml.replaceAll("\\]\\]>", "\\]\\]>");
+ xml = xml.replaceAll("ns3:", "");
+ xml = xml.replaceAll("<", "<");
+ xml = xml.replaceAll("&", "&");
+ xml = xml.replaceAll(">", ">");
+ xml = xml.replaceAll("", "");
+ xml = xml.replaceAll(" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\"", "");
+ xml = xml.replaceAll(" xmlns=\"\" xmlns:ns3=\"http://www.portalfiscal.inf.br/nfe\"", "");
+
+ return xml;
+
+ }
+
+ /**
+ * Le o Arquivo XML e retona String
+ *
+ * @return String
+ * @throws NfeException
+ */
+ public static String leXml(String arquivo) throws NfeException {
+
+ StringBuilder xml = new StringBuilder();
+ BufferedReader in;
+ try {
+ in = new BufferedReader(new InputStreamReader(new FileInputStream(arquivo), "UTF-8"));
+ String linha;
+
+ while ((linha = in.readLine()) != null) {
+ xml.append(linha);
+
+ }
+ in.close();
+ } catch (IOException e) {
+ throw new NfeException("Ler Xml: " + e.getMessage());
+ }
+ return xml.toString();
+ }
+
+ public static String dataNfe() throws NfeException {
+ try {
+ LocalDateTime dataASerFormatada = LocalDateTime.now();
+ GregorianCalendar calendar = GregorianCalendar.from(dataASerFormatada.atZone(ZoneId.of("Brazil/East")));
+
+ XMLGregorianCalendar xmlCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar);
+ xmlCalendar.setMillisecond(DatatypeConstants.FIELD_UNDEFINED);
+
+ return (xmlCalendar.toString());
+ } catch (DatatypeConfigurationException e) {
+ throw new NfeException(e.getMessage());
+ }
+
+ }
+
+}
diff --git a/src/main/resources/Cacert b/src/main/resources/Cacert
new file mode 100644
index 00000000..3ec263cd
Binary files /dev/null and b/src/main/resources/Cacert differ
diff --git a/src/main/resources/WebServices.ini b/src/main/resources/WebServices.ini
new file mode 100644
index 00000000..920c4166
--- /dev/null
+++ b/src/main/resources/WebServices.ini
@@ -0,0 +1,1175 @@
+;;;;;;;;;;;;;; ENDERECOS DA NFe ;;;;;;;;;;;;;;;;
+[NFe_AC_P]
+Usar=NFe_SVRS_P
+
+[NFe_AC_H]
+Usar=NFe_SVRS_H
+
+[NFe_AL_P]
+Usar=NFe_SVRS_P
+
+[NFe_AL_H]
+Usar=NFe_SVRS_H
+
+[NFe_AP_P]
+Usar=NFe_SVRS_P
+
+[NFe_AP_H]
+Usar=NFe_SVRS_H
+
+[NFe_AM_P]
+RecepcaoEvento_1.00=https://nfe.sefaz.am.gov.br/services2/services/RecepcaoEvento
+NfeRecepcao_2.00=https://nfe.sefaz.am.gov.br/services2/services/NfeRecepcao2
+NfeRetRecepcao_2.00=https://nfe.sefaz.am.gov.br/services2/services/NfeRetRecepcao2
+NfeInutilizacao_2.00=https://nfe.sefaz.am.gov.br/services2/services/NfeInutilizacao2
+NfeInutilizacao_3.10=https://nfe.sefaz.am.gov.br/services2/services/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.am.gov.br/services2/services/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.am.gov.br/services2/services/NfeConsulta2
+NfeStatusServico_2.00=https://nfe.sefaz.am.gov.br/services2/services/NfeStatusServico2
+NfeStatusServico_3.10=https://nfe.sefaz.am.gov.br/services2/services/NfeStatusServico2
+NfeConsultaCadastro_2.00=https://nfe.sefaz.am.gov.br/services2/services/cadconsultacadastro2
+NfeConsultaCadastro_3.10=https://nfe.sefaz.am.gov.br/services2/services/cadconsultacadastro2
+NfeAutorizacao_3.10=https://nfe.sefaz.am.gov.br/services2/services/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://nfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao
+
+[NFe_AM_H]
+RecepcaoEvento_1.00=https://homnfe.sefaz.am.gov.br/services2/services/RecepcaoEvento
+NfeRecepcao_2.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeRecepcao2
+NfeRetRecepcao_2.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeRetRecepcao2
+NfeInutilizacao_2.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeInutilizacao2
+NfeInutilizacao_3.10=https://homnfe.sefaz.am.gov.br/services2/services/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta2
+NfeStatusServico_2.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeStatusServico2
+NfeStatusServico_3.10=https://homnfe.sefaz.am.gov.br/services2/services/NfeStatusServico2
+NfeConsultaCadastro_2.00=https://homnfe.sefaz.am.gov.br/services2/services/cadconsultacadastro2
+NfeConsultaCadastro_3.10=https://homnfe.sefaz.am.gov.br/services2/services/cadconsultacadastro2
+NfeAutorizacao_3.10=https://homnfe.sefaz.am.gov.br/services2/services/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://homnfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao
+NfeConsultaProtocolo_4.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta4
+NfeStatusServico_4.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeStatusServico4
+NfeInutilizacao_4.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeInutilizacao4
+NfeAutorizacao_4.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeAutorizacao4
+NFeRetAutorizacao_4.00=https://homnfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao4
+RecepcaoEvento_4.00=https://homnfe.sefaz.am.gov.br/services2/services/RecepcaoEvento4
+
+[NFe_BA_P]
+NfeRecepcao_2.00=https://nfe.sefaz.ba.gov.br/webservices/nfenw/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://nfe.sefaz.ba.gov.br/webservices/nfenw/NfeRetRecepcao2.asmx
+NfeInutilizacao_2.00=https://nfe.sefaz.ba.gov.br/webservices/nfenw/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.ba.gov.br/webservices/nfenw/nfeconsulta2.asmx
+NfeStatusServico_2.00=https://nfe.sefaz.ba.gov.br/webservices/nfenw/NfeStatusServico2.asmx
+NfeConsultaCadastro_2.00=https://nfe.sefaz.ba.gov.br/webservices/nfenw/CadConsultaCadastro2.asmx
+RecepcaoEvento_1.00=https://nfe.sefaz.ba.gov.br/webservices/sre/recepcaoevento.asmx
+NfeInutilizacao_3.10=https://nfe.sefaz.ba.gov.br/webservices/NfeInutilizacao/NfeInutilizacao.asmx
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.ba.gov.br/webservices/NfeConsulta/NfeConsulta.asmx
+NfeStatusServico_3.10=https://nfe.sefaz.ba.gov.br/webservices/NfeStatusServico/NfeStatusServico.asmx
+NfeAutorizacao_3.10=https://nfe.sefaz.ba.gov.br/webservices/NfeAutorizacao/NfeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe.sefaz.ba.gov.br/webservices/NfeRetAutorizacao/NfeRetAutorizacao.asmx
+NfeInutilizacao_4.00=https://nfe.sefaz.ba.gov.br/webservices/NFeInutilizacao4/NFeInutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe.sefaz.ba.gov.br/webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx
+NfeStatusServico_4.00=https://nfe.sefaz.ba.gov.br/webservices/NFeStatusServico4/NFeStatusServico4.asmx
+NfeConsultaCadastro_4.00=https://nfe.sefaz.ba.gov.br/webservices/CadConsultaCadastro4/CadConsultaCadastro4.asmx
+RecepcaoEvento_4.00=https://nfe.sefaz.ba.gov.br/webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+NFeAutorizacao_4.00=https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe.sefaz.ba.gov.br/webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx
+
+[NFe_BA_H]
+NfeRecepcao_2.00=https://hnfe.sefaz.ba.gov.br/webservices/nfenw/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://hnfe.sefaz.ba.gov.br/webservices/nfenw/NfeRetRecepcao2.asmx
+NfeInutilizacao_2.00=https://hnfe.sefaz.ba.gov.br/webservices/nfenw/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://hnfe.sefaz.ba.gov.br/webservices/nfenw/nfeconsulta2.asmx
+NfeStatusServico_2.00=https://hnfe.sefaz.ba.gov.br/webservices/nfenw/NfeStatusServico2.asmx
+NfeConsultaCadastro_2.00=https://hnfe.sefaz.ba.gov.br/webservices/nfenw/CadConsultaCadastro2.asmx
+RecepcaoEvento_1.00=https://hnfe.sefaz.ba.gov.br/webservices/sre/recepcaoevento.asmx
+NfeInutilizacao_3.10=https://hnfe.sefaz.ba.gov.br/webservices/NfeInutilizacao/NfeInutilizacao.asmx
+NfeConsultaProtocolo_3.10=https://hnfe.sefaz.ba.gov.br/webservices/NfeConsulta/NfeConsulta.asmx
+NfeStatusServico_3.10=https://hnfe.sefaz.ba.gov.br/webservices/NfeStatusServico/NfeStatusServico.asmx
+NfeAutorizacao_3.10=https://hnfe.sefaz.ba.gov.br/webservices/NfeAutorizacao/NfeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://hnfe.sefaz.ba.gov.br/webservices/NfeRetAutorizacao/NfeRetAutorizacao.asmx
+NfeAutorizacao_4.00=https://hnfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx
+NfeConsultaProtocolo_4.00=https://hnfe.sefaz.ba.gov.br/webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx
+NfeInutilizacao_4.00=https://hnfe.sefaz.ba.gov.br/webservices/NFeInutilizacao4/NFeInutilizacao4.asmx
+NFeRetAutorizacao_4.00=https://hnfe.sefaz.ba.gov.br/webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx
+NfeStatusServico_4.00=https://hnfe.sefaz.ba.gov.br/webservices/NFeStatusServico4/NFeStatusServico4.asmx
+RecepcaoEvento_4.00=https://hnfe.sefaz.ba.gov.br/webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+WSDL=WSDL_V4_SP
+SoapAction=SOAP_V4_SP
+
+[NFe_CE_P]
+RecepcaoEvento_1.00=https://nfe.sefaz.ce.gov.br/nfe2/services/RecepcaoEvento?wsdl
+NfeRecepcao_2.00=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://nfe.sefaz.ce.gov.br/nfe2/services/CadConsultaCadastro2?wsdl
+NfeConsultaCadastro_3.10=https://nfe.sefaz.ce.gov.br/nfe2/services/CadConsultaCadastro2?wsdl
+NfeDownloadNF_1.00=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeDownloadNF?wsdl
+NfeAutorizacao_3.10=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfe.sefaz.ce.gov.br/nfe2/services/NfeRetAutorizacao?wsdl
+
+[NFe_CE_H]
+RecepcaoEvento_1.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/RecepcaoEvento?wsdl
+NfeRecepcao_2.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/CadConsultaCadastro2?wsdl
+NfeConsultaCadastro_3.10=https://nfeh.sefaz.ce.gov.br/nfe2/services/CadConsultaCadastro2?wsdl
+NfeDownloadNF_1.00=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeDownloadNF?wsdl
+NfeAutorizacao_3.10=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfeh.sefaz.ce.gov.br/nfe2/services/NfeRetAutorizacao?wsdl
+NfeInutilizacao_4.00=https://nfeh.sefaz.ce.gov.br/nfe4/services/NFeInutilizacao4?WSDL
+NfeConsultaProtocolo_4.00=https://nfeh.sefaz.ce.gov.br/nfe4/services/NFeConsultaProtocolo4?WSDL
+NfeStatusServico_4.00=https://nfeh.sefaz.ce.gov.br/nfe4/services/NFeStatusServico4?WSDL
+NFeAutorizacao_4.00=https://nfeh.sefaz.ce.gov.br/nfe4/services/NFeAutorizacao4?WSDL
+NFeRetAutorizacao_4.00=https://nfeh.sefaz.ce.gov.br/nfe4/services/NFeRetAutorizacao4?WSDL
+
+[NFe_DF_P]
+Usar=NFe_SVRS_P
+
+[NFe_DF_H]
+Usar=NFe_SVRS_H
+
+[NFe_ES_P]
+Usar=NFe_SVRS_P
+NfeConsultaCadastro_2.00=https://app.sefaz.es.gov.br/ConsultaCadastroService/CadConsultaCadastro2.asmx
+
+[NFe_ES_H]
+Usar=NFe_SVRS_H
+NfeConsultaCadastro_2.00=https://app.sefaz.es.gov.br/ConsultaCadastroService/CadConsultaCadastro2.asmx
+
+[NFe_GO_P]
+RecepcaoEvento_1.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/RecepcaoEvento?wsdl
+NfeRecepcao_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeConsultaCadastro_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRetAutorizacao?wsdl
+NfeInutilizacao_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://nfe.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4?wsdl
+RecepcaoEvento_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4?wsdl
+NFeAutorizacao_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4?wsdl
+
+[NFe_GO_H]
+RecepcaoEvento_1.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/RecepcaoEvento?wsdl
+NfeRecepcao_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeConsultaCadastro_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeRetAutorizacao?wsdl
+RecepcaoEvento_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4?wsdl
+NfeInutilizacao_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://homolog.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4?wsdl
+NFeAutorizacao_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4?wsdl
+
+[NFe_MA_P]
+Usar=NFe_SVAN_P
+NfeConsultaCadastro_2.00=https://sistemas.sefaz.ma.gov.br/wscadastro/CadConsultaCadastro2?wsdl
+
+[NFe_MA_H]
+Usar=NFe_SVAN_H
+NfeConsultaCadastro_2.0=https://sistemas.sefaz.ma.gov.br/wscadastro/CadConsultaCadastro2?wsdl
+
+[NFe_MG_P]
+NfeRecepcao_2.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeRecepcao2
+NfeRetRecepcao_2.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeRetRecepcao2
+NfeInutilizacao_2.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeConsulta2
+NfeStatusServico_2.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeStatus2
+NfeConsultaCadastro_2.00=https://nfe.fazenda.mg.gov.br/nfe2/services/cadconsultacadastro2
+RecepcaoEvento_1.00=https://nfe.fazenda.mg.gov.br/nfe2/services/RecepcaoEvento
+NfeAutorizacao_3.10=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://nfe.fazenda.mg.gov.br/nfe2/services/NfeRetAutorizacao
+NfeInutilizacao_4.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NFeInutilizacao4
+NfeConsultaProtocolo_4.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NFeConsulta4
+NfeStatusServico_4.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4
+NFeAutorizacao_4.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NFeAutorizacao4
+NFeRetAutorizacao_4.00=https://nfe.fazenda.mg.gov.br/nfe2/services/NFeRetAutorizacao4
+WSDL=WSDL_V4_MG
+SoapAction=SOAP_V4_MG
+
+[NFe_MG_H]
+RecepcaoEvento_1.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/RecepcaoEvento
+NfeRecepcao_2.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeRecepcao2
+NfeRetRecepcao_2.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeRetRecepcao2
+NfeInutilizacao_2.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeInutilizacao2
+NfeInutilizacao_3.10=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeConsulta2
+NfeStatusServico_2.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeStatusServico2
+NfeStatusServico_3.10=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeStatusServico2
+NfeConsultaCadastro_2.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/cadconsultacadastro2
+NfeConsultaCadastro_3.10=https://hnfe.fazenda.mg.gov.br/nfe2/services/cadconsultacadastro2
+NfeAutorizacao_3.10=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeRetAutorizacao
+NFeAutorizacao_4.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeAutorizacao4
+NFeConsultaProtocolo_4.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeConsulta4
+NFeInutilizacao_4.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeInutilizacao4
+NFeRetAutorizacao_4.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeRetAutorizacao4
+NFeStatusServico_4.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4
+RecepcaoEvento_4.00=https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeRecepcaoEvento4
+WSDL=WSDL_V4_MG
+SoapAction=SOAP_V4_MG
+
+[NFe_MS_P]
+RecepcaoEvento_1.00=https://nfe.fazenda.ms.gov.br/producao/services2/RecepcaoEvento
+NfeRecepcao_2.00=https://nfe.fazenda.ms.gov.br/producao/services2/NfeRecepcao2
+NfeRetRecepcao_2.00=https://nfe.fazenda.ms.gov.br/producao/services2/NfeRetRecepcao2
+NfeConsultaCadastro_2.00=https://nfe.fazenda.ms.gov.br/producao/services2/CadConsultaCadastro2
+NfeInutilizacao_2.00=https://nfe.fazenda.ms.gov.br/producao/services2/NfeInutilizacao2
+NfeInutilizacao_3.10=https://nfe.fazenda.ms.gov.br/producao/services2/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://nfe.fazenda.ms.gov.br/producao/services2/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://nfe.fazenda.ms.gov.br/producao/services2/NfeConsulta2
+NfeStatusServico_2.00=https://nfe.fazenda.ms.gov.br/producao/services2/NfeStatusServico2
+NfeStatusServico_3.10=https://nfe.fazenda.ms.gov.br/producao/services2/NfeStatusServico2
+NfeAutorizacao_3.10=https://nfe.fazenda.ms.gov.br/producao/services2/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://nfe.fazenda.ms.gov.br/producao/services2/NfeRetAutorizacao
+NfeInutilizacao_4.00=https://nfe.fazenda.ms.gov.br/ws/NFeInutilizacao4
+NfeConsultaProtocolo_4.00=https://nfe.fazenda.ms.gov.br/ws/NFeConsultaProtocolo4
+NfeStatusServico_4.00=https://nfe.fazenda.ms.gov.br/ws/NFeStatusServico4
+NfeConsultaCadastro_4.00=https://nfe.fazenda.ms.gov.br/ws/CadConsultaCadastro4
+RecepcaoEvento_4.00=https://nfe.fazenda.ms.gov.br/ws/NFeRecepcaoEvento4
+NFeAutorizacao_4.00=https://nfe.fazenda.ms.gov.br/ws/NFeAutorizacao4
+NFeRetAutorizacao_4.00=https://nfe.fazenda.ms.gov.br/ws/NFeRetAutorizacao4
+
+[NFe_MS_H]
+RecepcaoEvento_1.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/RecepcaoEvento
+NfeRecepcao_2.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeRecepcao2
+NfeRetRecepcao_2.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeRetRecepcao2
+NfeConsultaCadastro_2.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/CadConsultaCadastro2
+NfeInutilizacao_2.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeInutilizacao2
+NfeInutilizacao_3.10=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeConsulta2
+NfeStatusServico_2.00=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeStatusServico2
+NfeStatusServico_3.10=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeStatusServico2
+NfeAutorizacao_3.10=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeRetAutorizacao
+NFeAutorizacao_4.00=https://homologacao.nfe.ms.gov.br/ws/NFeAutorizacao4
+NFeRetAutorizacao_4.00=https://homologacao.nfe.ms.gov.br/ws/NFeRetAutorizacao4
+NFeConsultaProtocolo_4.00=https://homologacao.nfe.ms.gov.br/ws/NFeConsultaProtocolo4
+NFeStatusServico_4.00=https://homologacao.nfe.ms.gov.br/ws/NFeStatusServico4
+NFeInutilizacao_4.00=https://homologacao.nfe.ms.gov.br/ws/NFeInutilizacao4
+RecepcaoEvento_4.00=https://homologacao.nfe.ms.gov.br/ws/NFeRecepcaoEvento4
+
+[NFe_MT_P]
+NfeRecepcao_2.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro2?wsdl
+RecepcaoEvento_1.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento?wsdl
+NfeAutorizacao_3.10=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao?wsdl
+NfeInutilizacao_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4?wsdl
+NfeStatusServico_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro4?wsdl
+RecepcaoEvento_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4?wsdl
+NFeAutorizacao_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4?wsdl
+
+[NFe_MT_H]
+NfeRecepcao_2.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico2?wsdl
+RecepcaoEvento_1.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento?wsdl
+NfeConsultaCadastro_2.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao?wsdl
+NFeRetAutorizacao_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4
+RecepcaoEvento_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4
+NfeConsultaProtocolo_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4
+NFeAutorizacao_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4
+NfeInutilizacao_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4
+NfeConsultaCadastro_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro4
+NfeStatusServico_4.00=https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4
+
+[NFe_PA_P]
+Usar=NFe_SVAN_P
+
+[NFe_PA_H]
+Usar=NFe_SVAN_H
+
+[NFe_PB_P]
+Usar=NFe_SVRS_P
+
+[NFe_PB_H]
+Usar=NFe_SVRS_H
+
+[NFe_PE_P]
+RecepcaoEvento_1.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/RecepcaoEvento
+NfeRecepcao_2.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeRecepcao2
+NfeRetRecepcao_2.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeRetRecepcao2
+NfeInutilizacao_2.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeInutilizacao2
+NfeInutilizacao_3.10=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeConsulta2
+NfeStatusServico_2.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeStatusServico2
+NfeStatusServico_3.10=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeStatusServico2
+NfeConsultaCadastro_2.00=https://nfe.sefaz.pe.gov.br/nfe-service/services/CadConsultaCadastro2
+NfeConsultaCadastro_3.10=https://nfe.sefaz.pe.gov.br/nfe-service/services/CadConsultaCadastro2
+NfeAutorizacao_3.10=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfe.sefaz.pe.gov.br/nfe-service/services/NfeRetAutorizacao?wsdl
+
+[NFe_PE_H]
+RecepcaoEvento_1.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/RecepcaoEvento
+NfeRecepcao_2.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRecepcao2
+NfeRetRecepcao_2.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRetRecepcao2
+NfeInutilizacao_2.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeInutilizacao2
+NfeInutilizacao_3.10=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeInutilizacao2
+NfeConsultaProtocolo_2.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeConsulta2
+NfeConsultaProtocolo_3.10=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeConsulta2
+NfeStatusServico_2.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeStatusServico2
+NfeStatusServico_3.10=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeStatusServico2
+NfeAutorizacao_3.10=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRetAutorizacao?wsdl
+NfeInutilizacao_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/CadConsultaCadastro4?wsdl
+RecepcaoEvento_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4?wsdl
+NFeAutorizacao_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRetAutorizacao4?wsdl
+
+[NFe_PI_P]
+Usar=NFe_SVRS_P
+
+[NFe_PI_H]
+Usar=NFe_SVRS_H
+
+[NFe_PR_P]
+RecepcaoEvento_1.00=https://nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento?wsdl
+NfeInutilizacao_3.10=https://nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3?wsdl
+NfeConsultaProtocolo_3.10=https://nfe.fazenda.pr.gov.br/nfe/NFeConsulta3?wsdl
+NfeStatusServico_3.10=https://nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3?wsdl
+NfeConsultaCadastro_2.00=https://nfe.fazenda.pr.gov.br/nfe/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://nfe.fazenda.pr.gov.br/nfe/NFeAutorizacao3?wsdl
+NFeRetAutorizacao_3.10=https://nfe.fazenda.pr.gov.br/nfe/NFeRetAutorizacao3?wsdl
+NfeInutilizacao_4.00=https://nfe.sefa.pr.gov.br/nfe/NFeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://nfe.sefa.pr.gov.br/nfe/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://nfe.sefa.pr.gov.br/nfe/NFeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://nfe.sefa.pr.gov.br/nfe/CadConsultaCadastro4?wsdl
+RecepcaoEvento_4.00=https://nfe.sefa.pr.gov.br/nfe/NFeRecepcaoEvento4?wsdl
+NFeAutorizacao_4.00=https://nfe.sefa.pr.gov.br/nfe/NFeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://nfe.sefa.pr.gov.br/nfe/NFeRetAutorizacao4?wsdl
+
+[NFe_PR_H]
+RecepcaoEvento_1.00=https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento?wsdl
+NfeInutilizacao_3.10=https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3?wsdl
+NfeConsultaProtocolo_3.10=https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeConsulta3?wsdl
+NfeStatusServico_3.10=https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3?wsdl
+NfeConsultaCadastro_2.00=https://homologacao.nfe.fazenda.pr.gov.br/nfe/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeAutorizacao3?wsdl
+NFeRetAutorizacao_3.10=https://homologacao.nfe.fazenda.pr.gov.br/nfe/NFeRetAutorizacao3?wsdl
+RecepcaoEvento_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeRecepcaoEvento4?wsdl
+NfeInutilizacao_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/CadConsultaCadastro4?wsdl
+NfeAutorizacao_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeRetAutorizacao4?wsdl
+
+[NFe_RJ_P]
+Usar=NFe_SVRS_P
+
+[NFe_RJ_H]
+Usar=NFe_SVRS_H
+
+[NFe_RN_P]
+Usar=NFe_SVRS_P
+
+[NFe_RN_H]
+Usar=NFe_SVRS_H
+
+[NFe_RO_P]
+Usar=NFe_SVRS_P
+
+[NFe_RO_H]
+Usar=NFe_SVRS_H
+
+[NFe_RS_P]
+NfeAutorizacao_3.10=https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_2.00=https://nfe.sefazrs.rs.gov.br/ws/NfeInutilizacao/NfeInutilizacao2.asmx
+NfeInutilizacao_3.10=https://nfe.sefazrs.rs.gov.br/ws/NfeInutilizacao/NfeInutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://nfe.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://nfe.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+NfeConsultaCadastro_2.00=https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx
+NfeInutilizacao_4.00=https://nfe.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+RecepcaoEvento_4.00=https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NFeAutorizacao_4.00=https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+
+[NFe_RS_H]
+NfeAutorizacao_3.10=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_2.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeInutilizacao_3.10=https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+NfeConsultaCadastro_2.00=https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx
+NfeInutilizacao_4.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+RecepcaoEvento_4.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NFeAutorizacao_4.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+
+[NFe_RR_P]
+Usar=NFe_SVRS_P
+
+[NFe_RR_H]
+Usar=NFe_SVRS_H
+
+[NFe_SC_P]
+Usar=NFe_SVRS_P
+
+[NFe_SC_H]
+Usar=NFe_SVRS_H
+
+[NFe_SE_P]
+Usar=NFe_SVRS_P
+
+[NFe_SE_H]
+Usar=NFe_SVRS_H
+
+[NFe_SP_P]
+NfeRecepcao_2.00=https://nfe.fazenda.sp.gov.br/nfeweb/services/nferecepcao2.asmx
+NfeRetRecepcao_2.00=https://nfe.fazenda.sp.gov.br/nfeweb/services/nferetrecepcao2.asmx
+NfeInutilizacao_2.00=https://nfe.fazenda.sp.gov.br/nfeweb/services/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta2.asmx
+NfeStatusServico_2.00=https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx
+NfeConsultaCadastro_2.00=https://nfe.fazenda.sp.gov.br/ws/cadconsultacadastro2.asmx
+RecepcaoEvento_1.00=https://nfe.fazenda.sp.gov.br/ws/RecepcaoEvento.asmx
+NfeInutilizacao_3.10=https://nfe.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://nfe.fazenda.sp.gov.br/ws/nfeconsulta2.asmx
+NfeStatusServico_3.10=https://nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx
+NfeAutorizacao_3.10=https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe.fazenda.sp.gov.br/ws/nferetautorizacao.asmx
+NfeInutilizacao_4.00=https://nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx
+NfeStatusServico_4.00=https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx
+NfeConsultaCadastro_4.00=https://nfe.fazenda.sp.gov.br/ws/cadconsultacadastro4.asmx
+RecepcaoEvento_4.00=https://nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx
+NFeAutorizacao_4.00=https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx
+
+[NFe_SP_H]
+NfeRecepcao_2.00=https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx
+NfeInutilizacao_2.00=https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta2.asmx
+NfeStatusServico_2.00=https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx
+NfeConsultaCadastro_2.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/cadconsultacadastro2.asmx
+RecepcaoEvento_1.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/RecepcaoEvento.asmx
+NfeInutilizacao_3.10=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeconsulta2.asmx
+NfeStatusServico_3.10=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx
+NFeAutorizacao_3.10=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx
+NFeRetAutorizacao_3.10=https://homologacao.nfe.fazenda.sp.gov.br/ws/nferetautorizacao.asmx
+NfeInutilizacao_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx
+NfeStatusServico_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx
+NFeAutorizacao_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx
+NFeRetAutorizacao_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx
+NfeConsultaCadastro_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/cadconsultacadastro4.asmx
+RecepcaoEvento_4.00=https://homologacao.nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx
+
+[NFe_TO_P]
+Usar=NFe_SVRS_P
+
+[NFe_TO_H]
+Usar=NFe_SVRS_H
+
+[NFe_SVAN_P]
+RecepcaoEvento_1.00=https://www.sefazvirtual.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
+NfeRecepcao_2.00=https://www.sefazvirtual.fazenda.gov.br/NfeRecepcao2/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://www.sefazvirtual.fazenda.gov.br/NfeRetRecepcao2/NfeRetRecepcao2.asmx
+NfeInutilizacao_2.00=https://www.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx
+NfeInutilizacao_3.10=https://www.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://www.sefazvirtual.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://www.sefazvirtual.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://www.sefazvirtual.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://www.sefazvirtual.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeDownloadNF_1.00=https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx
+NfeAutorizacao_3.10=https://www.sefazvirtual.fazenda.gov.br/NfeAutorizacao/NfeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://www.sefazvirtual.fazenda.gov.br/NfeRetAutorizacao/NfeRetAutorizacao.asmx
+RecepcaoEvento_4.00=https://www.sefazvirtual.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+NfeInutilizacao_4.00=https://www.sefazvirtual.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://www.sefazvirtual.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx
+NfeStatusServico_4.00=https://www.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx
+NFeAutorizacao_4.00=https://www.sefazvirtual.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://www.sefazvirtual.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx
+
+[NFe_SVAN_H]
+RecepcaoEvento_1.00=https://hom.sefazvirtual.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
+NfeRecepcao_2.00=https://hom.sefazvirtual.fazenda.gov.br/NfeRecepcao2/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://hom.sefazvirtual.fazenda.gov.br/NfeRetRecepcao2/NfeRetRecepcao2.asmx
+NfeInutilizacao_2.00=https://hom.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx
+NfeInutilizacao_3.10=https://hom.sefazvirtual.fazenda.gov.br/NfeInutilizacao2/NfeInutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://hom.sefazvirtual.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://hom.sefazvirtual.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://hom.sefazvirtual.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://hom.sefazvirtual.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeDownloadNF_1.00=https://hom.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx
+NfeAutorizacao_3.10=https://hom.sefazvirtual.fazenda.gov.br/NfeAutorizacao/NfeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://hom.sefazvirtual.fazenda.gov.br/NfeRetAutorizacao/NfeRetAutorizacao.asmx
+NfeInutilizacao_4.00=https://hom.sefazvirtual.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://hom.sefazvirtual.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx
+NfeStatusServico_4.00=https://hom.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx
+RecepcaoEvento_4.00=https://hom.sefazvirtual.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+NFeAutorizacao_4.00=https://hom.sefazvirtual.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://hom.sefazvirtual.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx
+
+[NFe_SVRS_P]
+NfeAutorizacao_3.10=https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_2.00=https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeInutilizacao_3.10=https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+NfeConsultaCadastro_2.00=https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx
+NFeAutorizacao_4.00=https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+NfeInutilizacao_4.00=https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+RecepcaoEvento_4.00=https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NfeConsultaCadastro_4.00=https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro4.asmx
+
+[NFe_SVRS_H]
+NfeAutorizacao_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_2.00=https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeInutilizacao_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_2.00=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+NfeConsultaCadastro_2.00=https://cad-homologacao.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx
+NfeInutilizacao_4.00=https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+RecepcaoEvento_4.00=https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NFeAutorizacao_4.00=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+
+[NFe_SVC-AN_P]
+RecepcaoEvento_1.00=https://www.svc.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
+NfeRecepcao_2.00=https://www.svc.fazenda.gov.br/NfeRecepcao2/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://www.svc.fazenda.gov.br/NfeRetRecepcao2/NfeRetRecepcao2.asmx
+NfeConsultaProtocolo_2.00=https://www.svc.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://www.svc.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://www.svc.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://www.svc.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeAutorizacao_3.10=https://www.svc.fazenda.gov.br/NfeAutorizacao/NfeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://www.svc.fazenda.gov.br/NfeRetAutorizacao/NfeRetAutorizacao.asmx
+NfeConsultaProtocolo_4.00=https://www.svc.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx
+NfeStatusServico_4.00=https://www.svc.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx
+RecepcaoEvento_4.00=https://www.svc.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+NFeAutorizacao_4.00=https://www.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://www.svc.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx
+
+[NFe_SVC-AN_H]
+RecepcaoEvento_1.00=https://hom.svc.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
+NfeRecepcao_2.00=https://hom.svc.fazenda.gov.br/NfeRecepcao2/NfeRecepcao2.asmx
+NfeRetRecepcao_2.00=https://hom.svc.fazenda.gov.br/NfeRetRecepcao2/NfeRetRecepcao2.asmx
+NfeConsultaProtocolo_2.00=https://hom.svc.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeConsultaProtocolo_3.10=https://hom.svc.fazenda.gov.br/NfeConsulta2/NfeConsulta2.asmx
+NfeStatusServico_2.00=https://hom.svc.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeStatusServico_3.10=https://hom.svc.fazenda.gov.br/NfeStatusServico2/NfeStatusServico2.asmx
+NfeAutorizacao_3.10=https://hom.svc.fazenda.gov.br/NfeAutorizacao/NfeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://hom.svc.fazenda.gov.br/NfeRetAutorizacao/NfeRetAutorizacao.asmx
+NfeConsultaProtocolo_4.00=https://hom.svc.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx
+NfeStatusServico_4.00=https://hom.svc.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx
+RecepcaoEvento_4.00=https://hom.svc.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+NFeAutorizacao_4.00=https://hom.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://hom.svc.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx
+
+[NFe_SVC-RS_P]
+NfeAutorizacao_3.10=https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_3.10=https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_3.10=https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+NfeInutilizacao_4.00=https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+RecepcaoEvento_4.00=https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NFeAutorizacao_4.00=https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+
+[NFe_SVC-RS_H]
+NfeAutorizacao_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_3.10=https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+
+[NFe_AN_P]
+RecepcaoEvento_1.00=https://www.nfe.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
+NFeDistribuicaoDFe_1.01=https://www1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx
+NfeConsultaDest_1.01=https://www.nfe.fazenda.gov.br/NFeConsultaDest/NFeConsultaDest.asmx
+NfeDownloadNF_1.00=https://www.nfe.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx
+RecepcaoEvento_4.00=https://www.nfe.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+
+[NFe_AN_H]
+RecepcaoEvento_1.00=https://hom.nfe.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
+NFeDistribuicaoDFe_1.01=https://hom.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx
+NfeConsultaDest_1.01=https://hom.nfe.fazenda.gov.br/NFeConsultaDest/NFeConsultaDest.asmx
+NfeDownloadNF_1.00=https://hom.nfe.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx
+RecepcaoEvento_4.00=https://hom.nfe.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx
+
+;;;;;;;;;;;;;; ENDERECOS DA NFCe ;;;;;;;;;;;;;;;;
+
+[NFCe_AC_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://www.sefaznet.ac.gov.br/nfce/qrcode
+URL-ConsultaNFCe=http://www.sefaznet.ac.gov.br/nfce/
+
+[NFCe_AC_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://hml.sefaznet.ac.gov.br/nfce/qrcode
+URL-ConsultaNFCe=http://hml.sefaznet.ac.gov.br/nfce/
+
+[NFCe_AL_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://nfce.sefaz.al.gov.br/QRCode/consultarNFCe.jsp
+URL-ConsultaNFCe=http://nfce.sefaz.al.gov.br/consultaNFCe.htm
+
+[NFCe_AL_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://nfce.sefaz.al.gov.br/QRCode/consultarNFCe.jsp
+URL-ConsultaNFCe=http://nfce.sefaz.al.gov.br/consultaNFCe.htm
+
+[NFCe_AP_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=https://www.sefaz.ap.gov.br/nfce/nfcep.php
+URL-ConsultaNFCe=https://www.sefaz.ap.gov.br/sate/seg/SEGf_AcessarFuncao.jsp?cdFuncao=FIS_1261
+
+[NFCe_AP_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=https://www.sefaz.ap.gov.br/nfcehml/nfce.php
+URL-ConsultaNFCe=https://www.sefaz.ap.gov.br/sate1/seg/SEGf_AcessarFuncao.jsp?cdFuncao=FIS_1261
+
+[NFCe_AM_P]
+NfeAutorizacao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRetAutorizacao
+NfeConsultaProtocolo_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeConsulta2
+NfeRecepcao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRecepcao2
+RecepcaoEvento_1.00=https://nfce.sefaz.am.gov.br/nfce-services/services/RecepcaoEvento
+NfeStatusServico_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeStatusServico2
+NfeRetRecepcao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRetRecepcao2
+NfeInutilizacao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeInutilizacao2
+AdministrarCSCNFCe_1.00=https://nfce.sefaz.am.gov.br/nfce-services/services/CscNFCe
+URL-QRCode=http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp
+URL-ConsultaNFCe=http://sistemas.sefaz.am.gov.br/nfceweb/formConsulta.do
+
+[NFCe_AM_H]
+NfeAutorizacao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeRetAutorizacao
+NfeConsultaProtocolo_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeConsulta2
+NfeRecepcao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeRecepcao2
+RecepcaoEvento_1.00=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/RecepcaoEvento
+NfeStatusServico_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeStatusServico2
+NfeRetRecepcao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeRetRecepcao2
+NfeInutilizacao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeInutilizacao2
+AdministrarCSCNFCe_1.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/CscNFCe
+URL-QRCode=http://homnfce.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp
+URL-ConsultaNFCe=http://homnfce.sefaz.am.gov.br/nfceweb/formConsulta.do
+
+[NFCe_BA_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://nfe.sefaz.ba.gov.br/servicos/nfce/modulos/geral/NFCEC_consulta_chave_acesso.aspx
+URL-ConsultaNFCe=http://nfe.sefaz.ba.gov.br/servicos/nfce/default.aspx
+
+[NFCe_BA_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://hnfe.sefaz.ba.gov.br/servicos/nfce/modulos/geral/NFCEC_consulta_chave_acesso.aspx
+URL-ConsultaNFCe=http://nfe.sefaz.ba.gov.br/servicos/nfce/default.aspx
+
+[NFCe_CE_P]
+NfeAutorizacao_3.10=https://nfce.sefaz.ce.gov.br/nfce/services/NfeAutorizacao?WSDL
+NFeRetAutorizacao_3.10=https://nfce.sefaz.ce.gov.br/nfce/services/NfeRetAutorizacao?WSDL
+NfeConsultaProtocolo_3.10=https://nfce.sefaz.ce.gov.br/nfce/services/NfeConsulta2?WSDL
+NfeInutilizacao_3.10=https://nfce.sefaz.ce.gov.br/nfce/services/NfeInutilizacao2?WSDL
+NfeStatusServico_3.10=https://nfce.sefaz.ce.gov.br/nfce/services/NfeStatusServico2?WSDL
+NfeConsultaCadastro_3.10=https://nfce.sefaz.ce.gov.br/nfce/services/CadConsultaCadastro2?WSDL
+RecepcaoEvento_1.00=https://nfce.sefaz.ce.gov.br/nfce/services/RecepcaoEvento?WSDL
+URL-QRCode=http://nfce.sefaz.ce.gov.br/pages/ShowNFCe.html
+URL-ConsultaNFCe=http://nfce.sefaz.ce.gov.br/pages/consultaChaveAcesso.jsf
+
+[NFCe_CE_H]
+NfeAutorizacao_3.10=https://nfceh.sefaz.ce.gov.br/nfce/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfceh.sefaz.ce.gov.br/nfce/services/NfeRetAutorizacao?wsdl
+NfeConsultaProtocolo_3.10=https://nfceh.sefaz.ce.gov.br/nfce/services/NfeConsulta2?wsdl
+NfeInutilizacao_3.10=https://nfceh.sefaz.ce.gov.br/nfce/services/NfeInutilizacao2?wsdl
+NfeStatusServico_3.10=https://nfceh.sefaz.ce.gov.br/nfce/services/NfeStatusServico2?wsdl
+NfeConsultaCadastro_3.10=https://nfceh.sefaz.ce.gov.br/nfce/services/CadConsultaCadastro2?wsdl
+RecepcaoEvento_1.00=https://nfceh.sefaz.ce.gov.br/nfce/services/RecepcaoEvento?wsdl
+URL-QRCode=http://nfceh.sefaz.ce.gov.br/pages/ShowNFCe.html
+URL-ConsultaNFCe=http://nfceh.sefaz.ce.gov.br/pages/consultaChaveAcesso.jsf
+
+[NFCe_DF_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx
+URL-ConsultaNFCe=http://dec.fazenda.df.gov.br/nfce
+
+[NFCe_DF_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx
+URL-ConsultaNFCe=http://dec.fazenda.df.gov.br/nfce
+
+[NFCe_ES_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://app.sefaz.es.gov.br/ConsultaNFCe/qrcode.aspx
+URL-ConsultaNFCe=http://app.sefaz.es.gov.br/ConsultaNFCe
+
+[NFCe_ES_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://homologacao.sefaz.es.gov.br/ConsultaNFCe/qrcode.aspx
+URL-ConsultaNFCe=http://app.sefaz.es.gov.br/ConsultaNFCe
+
+[NFCe_GO_P]
+RecepcaoEvento_1.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/RecepcaoEvento?wsdl
+NfeRecepcao_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeConsultaCadastro_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeRetAutorizacao?wsdl
+AdministrarCSCNFCe_1.00=https://nfe.sefaz.go.gov.br/nfe/services/v2/CscNFCe?wsdl
+RecepcaoEvento_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4?wsdl
+NfeInutilizacao_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://nfe.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4?wsdl
+NFeAutorizacao_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://nfe.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4?wsdl
+URL-QRCode=http://nfe.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCe
+URL-ConsultaNFCe=http://nfe.sefaz.go.gov.br/nfeweb/jsp/ConsultaDANFENFCe.jsf
+URL-ConsultaNFCe_4.0=http://nfe.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCe
+
+[NFCe_GO_H]
+RecepcaoEvento_1.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/RecepcaoEvento?wsdl
+NfeRecepcao_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeRecepcao2?wsdl
+NfeRetRecepcao_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeRetRecepcao2?wsdl
+NfeInutilizacao_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeInutilizacao_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeInutilizacao2?wsdl
+NfeConsultaProtocolo_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeConsultaProtocolo_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeConsulta2?wsdl
+NfeStatusServico_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeStatusServico_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl
+NfeConsultaCadastro_2.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeConsultaCadastro_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/CadConsultaCadastro2?wsdl
+NfeAutorizacao_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://homolog.sefaz.go.gov.br/nfe/services/v2/NfeRetAutorizacao?wsdl
+AdministrarCSCNFCe_1.00=https://homolog.sefaz.go.gov.br/nfe/services/v2/CscNFCe?wsdl
+RecepcaoEvento_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4?wsdl
+NfeInutilizacao_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeInutilizacao4?wsdl
+NfeConsultaProtocolo_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4?wsdl
+NfeStatusServico_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeStatusServico4?wsdl
+NfeConsultaCadastro_4.00=https://homolog.sefaz.go.gov.br/nfe/services/CadConsultaCadastro4?wsdl
+NFeAutorizacao_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4?wsdl
+NFeRetAutorizacao_4.00=https://homolog.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4?wsdl
+URL-QRCode=http://homolog.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCe
+URL-ConsultaNFCe=http://homolog.sefaz.go.gov.br/nfeweb/jsp/ConsultaDANFENFCe.jsf
+URL-ConsultaNFCe_4.0=http://homolog.sefaz.go.gov.br/nfeweb/sites/nfce/danfeNFCe
+
+[NFCe_MA_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://www.nfce.sefaz.ma.gov.br/portal/consultarNFCe.jsp
+URL-ConsultaNFCe=http://www.nfce.sefaz.ma.gov.br/portal/consultaNFe.do
+
+[NFCe_MA_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://www.hom.nfce.sefaz.ma.gov.br/portal/consultarNFCe.jsp
+URL-ConsultaNFCe=http://www.hom.nfce.sefaz.ma.gov.br/portal/consultaNFe.do
+
+[NFCe_MG_P]
+
+[NFCe_MG_H]
+
+[NFCe_MS_P]
+NfeAutorizacao_3.10=https://nfce.fazenda.ms.gov.br/producao/services2/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://nfce.fazenda.ms.gov.br/producao/services2/NfeRetAutorizacao
+RecepcaoEvento_1.00=https://nfce.fazenda.ms.gov.br/producao/services2/RecepcaoEvento
+NfeInutilizacao_3.10=https://nfce.fazenda.ms.gov.br/producao/services2/NfeInutilizacao2
+NfeConsultaProtocolo_3.10=https://nfce.fazenda.ms.gov.br/producao/services2/NfeConsulta2
+NfeStatusServico_3.10=https://nfce.fazenda.ms.gov.br/producao/services2/NfeStatusServico2
+NfeConsultaCadastro_3.10=https://nfe.fazenda.ms.gov.br/producao/services2/CadConsultaCadastro2
+URL-QRCode=http://www.dfe.ms.gov.br/nfce/qrcode
+URL-ConsultaNFCe=http://www.dfe.ms.gov.br/nfce
+
+[NFCe_MS_H]
+NfeAutorizacao_3.10=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/NfeAutorizacao
+NFeRetAutorizacao_3.10=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/NfeRetAutorizacao
+RecepcaoEvento_1.00=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/RecepcaoEvento
+NfeInutilizacao_3.10=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/NfeInutilizacao2
+NfeConsultaProtocolo_3.10=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/NfeConsulta2
+NfeStatusServico_3.10=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/NfeStatusServico2
+NfeConsultaCadastro_3.10=https://homologacao.nfce.fazenda.ms.gov.br/homologacao/services2/CadConsultaCadastro2
+NfeAutorizacao_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/NFeAutorizacao4
+NFeRetAutorizacao_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/NFeRetAutorizacao4
+NfeConsultaProtocolo_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/NFeConsultaProtocolo4
+NfeInutilizacao_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/NFeInutilizacao4
+NfeStatusServico_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/NFeStatusServico4
+RecepcaoEvento_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/NFeRecepcaoEvento4
+NfeConsultaCadastro_4.00=https://homologacao.nfce.fazenda.ms.gov.br/ws/CadConsultaCadastro4
+URL-QRCode=http://www.dfe.ms.gov.br/nfce/qrcode
+URL-ConsultaNFCe=http://www.dfe.ms.gov.br/nfce
+
+[NFCe_MT_P]
+NfeAutorizacao_3.10=https://nfce.sefaz.mt.gov.br/nfcews/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://nfce.sefaz.mt.gov.br/nfcews/services/NfeRetAutorizacao?wsdl
+NfeInutilizacao_3.10=https://nfce.sefaz.mt.gov.br/nfcews/services/NfeInutilizacao2?wsdl
+RecepcaoEvento_1.00=https://nfce.sefaz.mt.gov.br/nfcews/services/RecepcaoEvento?wsdl
+NfeStatusServico_3.10=https://nfce.sefaz.mt.gov.br/nfcews/services/NfeStatusServico2?wsdl
+NfeConsultaProtocolo_3.10=https://nfce.sefaz.mt.gov.br/nfcews/services/NfeConsulta2?wsdl
+URL-QRCode=http://www.sefaz.mt.gov.br/nfce/consultanfce
+URL-ConsultaNFCe=http://www.sefaz.mt.gov.br/nfce/consultanfce
+
+[NFCe_MT_H]
+NfeAutorizacao_3.10=https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeAutorizacao?wsdl
+NFeRetAutorizacao_3.10=https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeRetAutorizacao?wsdl
+NfeInutilizacao_3.10=https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeInutilizacao2?wsdl
+RecepcaoEvento_1.00=https://homologacao.sefaz.mt.gov.br/nfcews/services/RecepcaoEvento?wsdl
+NfeStatusServico_3.10=https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeStatusServico2?wsdl
+NfeConsultaProtocolo_3.10=https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeConsulta2?wsdl
+URL-QRCode=http://homologacao.sefaz.mt.gov.br/nfce/consultanfce
+URL-ConsultaNFCe=http://homologacao.sefaz.mt.gov.br/nfce/consultanfce
+NfeStatusServico_4.00=https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4?wsdl
+
+[NFCe_PA_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=https://appnfc.sefa.pa.gov.br/portal/view/consultas/nfce/nfceForm.seam
+URL-ConsultaNFCe=https://appnfc.sefa.pa.gov.br/portal/view/consultas/nfce/consultanfce.seam
+
+[NFCe_PA_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=https://appnfc.sefa.pa.gov.br/portal-homologacao/view/consultas/nfce/nfceForm.seam
+URL-ConsultaNFCe=https://appnfc.sefa.pa.gov.br/portal-homologacao/view/consultas/nfce/consultanfce.seam
+
+[NFCe_PB_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://www.receita.pb.gov.br/nfce
+URL-ConsultaNFCe=http://www.receita.pb.gov.br/nfce
+
+[NFCe_PB_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://www.receita.pb.gov.br/nfcehom
+URL-ConsultaNFCe=http://www.receita.pb.gov.br/nfcehom
+
+[NFCe_PE_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://nfce.sefaz.pe.gov.br/nfce-web/consultarNFCe
+URL-ConsultaNFCe=http://nfce.sefaz.pe.gov.br/nfce-web/consultarNFCe
+
+[NFCe_PE_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://nfcehomolog.sefaz.pe.gov.br/nfce-web/consultarNFCe
+URL-ConsultaNFCe=http://nfcehomolog.sefaz.pe.gov.br/nfce-web/consultarNFCe
+
+[NFCe_PI_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://webas.sefaz.pi.gov.br/nfceweb/consultarNFCe.jsf
+URL-ConsultaNFCe=http://webas.sefaz.pi.gov.br/nfceweb/consultarNFCe.jsf
+
+[NFCe_PI_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://webas.sefaz.pi.gov.br/nfceweb-homologacao/consultarNFCe.jsf
+URL-ConsultaNFCe=http://webas.sefaz.pi.gov.br/nfceweb-homologacao/consultarNFCe.jsf
+
+[NFCe_PR_P]
+NfeAutorizacao_3.10=https://nfce.fazenda.pr.gov.br/nfce/NFeAutorizacao3
+NFeRetAutorizacao_3.10=https://nfce.fazenda.pr.gov.br/nfce/NFeRetAutorizacao3
+NfeConsultaProtocolo_3.10=https://nfce.fazenda.pr.gov.br/nfce/NFeConsulta3
+NfeInutilizacao_3.10=https://nfce.fazenda.pr.gov.br/nfce/NFeInutilizacao3
+NfeStatusServico_3.10=https://nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3
+RecepcaoEvento_1.00=https://nfce.fazenda.pr.gov.br/nfce/NFeRecepcaoEvento
+NfeAutorizacao_4.00=https://nfce.sefa.pr.gov.br/nfce/NFeAutorizacao4
+NFeRetAutorizacao_4.00=https://nfce.sefa.pr.gov.br/nfce/NFeRetAutorizacao4
+NfeConsultaProtocolo_4.00=https://nfce.sefa.pr.gov.br/nfce/NFeConsultaProtocolo4
+NfeInutilizacao_4.00=https://nfce.sefa.pr.gov.br/nfce/NFeInutilizacao4
+NfeStatusServico_4.00=https://nfce.sefa.pr.gov.br/nfce/NFeStatusServico4
+RecepcaoEvento_4.00=https://nfce.sefa.pr.gov.br/nfce/NFeRecepcaoEvento4
+NfeConsultaCadastro_4.00=https://nfce.sefa.pr.gov.br/nfce/CadConsultaCadastro4
+URL-QRCode=http://www.dfeportal.fazenda.pr.gov.br/dfe-portal/rest/servico/consultaNFCe
+URL-QRCode_4.00=http://www.fazenda.pr.gov.br/nfce/qrcode/
+URL-ConsultaNFCe=http://www.fazenda.pr.gov.br/
+URL-ConsultaNFCe_4.00=http://www.fazenda.pr.gov.br
+
+[NFCe_PR_H]
+NfeAutorizacao_3.10=https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeAutorizacao3
+NFeRetAutorizacao_3.10=https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeRetAutorizacao3
+NfeConsultaProtocolo_3.10=https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeConsulta3
+NfeInutilizacao_3.10=https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeInutilizacao3
+NfeStatusServico_3.10=https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3
+RecepcaoEvento_1.00=https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeRecepcaoEvento
+NfeAutorizacao_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/NFeAutorizacao4
+NFeRetAutorizacao_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/NFeRetAutorizacao4
+NfeConsultaProtocolo_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/NFeConsultaProtocolo4
+NfeInutilizacao_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/NFeInutilizacao4
+NfeStatusServico_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/NFeStatusServico4
+RecepcaoEvento_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/NFeRecepcaoEvento4
+NfeConsultaCadastro_4.00=https://homologacao.nfce.sefa.pr.gov.br/nfce/CadConsultaCadastro4
+URL-QRCode=http://www.dfeportal.fazenda.pr.gov.br/dfe-portal/rest/servico/consultaNFCe
+URL-QRCode_4.00=http://www.fazenda.pr.gov.br/nfce/qrcode/
+URL-ConsultaNFCe=http://www.fazenda.pr.gov.br/
+URL-ConsultaNFCe_4.00=http://www.fazenda.pr.gov.br
+
+[NFCe_RJ_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode
+URL-ConsultaNFCe=http://nfce.fazenda.rj.gov.br/consulta
+
+[NFCe_RJ_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode
+URL-ConsultaNFCe=http://nfce.fazenda.rj.gov.br/consulta
+
+[NFCe_RN_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://nfce.set.rn.gov.br/consultarNFCe.aspx
+URL-ConsultaNFCe=http://nfce.set.rn.gov.br/portalDFE/NFCe/ConsultaNFCe.aspx
+
+[NFCe_RN_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://hom.nfce.set.rn.gov.br/consultarNFCe.aspx
+URL-ConsultaNFCe=http://hom.nfce.set.rn.gov.br/portalDFE/NFCe/ConsultaNFCe.aspx
+
+[NFCe_RO_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://www.nfce.sefin.ro.gov.br/consultanfce/consulta.jsp
+URL-ConsultaNFCe=http://www.nfce.sefin.ro.gov.br
+
+[NFCe_RO_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://www.nfce.sefin.ro.gov.br/consultanfce/consulta.jsp
+URL-ConsultaNFCe=http://www.nfce.sefin.ro.gov.br/consultaAmbHomologacao.jsp
+
+[NFCe_RS_P]
+NfeAutorizacao_3.10=https://nfce.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfce.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeConsultaProtocolo_3.10=https://nfce.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeInutilizacao_3.10=https://nfce.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeStatusServico_3.10=https://nfce.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfce.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+URL-QRCode=https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx
+URL-ConsultaNFCe=https://www.sefaz.rs.gov.br/NFE/NFE-NFC.aspx
+
+[NFCe_RS_H]
+NfeAutorizacao_3.10=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeConsultaProtocolo_3.10=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeInutilizacao_3.10=https://nfce-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeStatusServico_3.10=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+RecepcaoEvento_4.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NfeInutilizacao_4.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+NFeAutorizacao_4.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfce-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+URL-QRCode=https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx
+URL-ConsultaNFCe=https://www.sefaz.rs.gov.br/NFE/NFE-NFC.aspx
+
+[NFCe_RR_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=https://www.sefaz.rr.gov.br/nfce/servlet/qrcode
+URL-ConsultaNFCe=https://www.sefaz.rr.gov.br/nfce/servlet/wp_consulta_nfce
+
+[NFCe_RR_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://200.174.88.103:8080/nfce/servlet/qrcode
+URL-ConsultaNFCe=http://200.174.88.103:8080/nfce/servlet/wp_consulta_nfce
+
+[NFCe_SC_P]
+Usar=NFCe_SVRS_P
+
+[NFCe_SC_H]
+Usar=NFCe_SVRS_H
+
+[NFCe_SE_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://www.nfce.se.gov.br/portal/consultarNFCe.jsp
+URL-ConsultaNFCe=http://www.nfce.se.gov.br/portal/consultarNFCe.jsp
+
+[NFCe_SE_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://www.hom.nfe.se.gov.br/portal/consultarNFCe.jsp
+URL-ConsultaNFCe=http://www.hom.nfe.se.gov.br/portal/consultarNFCe.jsp
+
+[NFCe_SP_P]
+NfeInutilizacao_3.10=https://nfce.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://nfce.fazenda.sp.gov.br/ws/nfeconsulta2.asmx
+NfeStatusServico_3.10=https://nfce.fazenda.sp.gov.br/ws/nfestatusservico2.asmx
+NfeConsultaCadastro_3.10=https://nfe.fazenda.sp.gov.br/ws/cadconsultacadastro2.asmx
+RecepcaoEvento_1.00=https://nfce.fazenda.sp.gov.br/ws/recepcaoevento.asmx
+NfeAutorizacao_3.10=https://nfce.fazenda.sp.gov.br/ws/nfeautorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfce.fazenda.sp.gov.br/ws/nferetautorizacao.asmx
+URL-QRCode=https://www.nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaQRCode.aspx
+URL-ConsultaNFCe=https://www.nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaPublica.aspx
+EventoEPEC_1.00=https://nfce.epec.fazenda.sp.gov.br/EPECws/RecepcaoEPEC.asmx
+
+[NFCe_SP_H]
+NfeInutilizacao_3.10=https://homologacao.nfce.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://homologacao.nfce.fazenda.sp.gov.br/ws/nfeconsulta2.asmx
+NfeStatusServico_3.10=https://homologacao.nfce.fazenda.sp.gov.br/ws/nfestatusservico2.asmx
+NfeConsultaCadastro_3.10=https://homologacao.nfe.fazenda.sp.gov.br/ws/cadconsultacadastro2.asmx
+RecepcaoEvento_1.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/recepcaoevento.asmx
+NfeAutorizacao_3.10=https://homologacao.nfce.fazenda.sp.gov.br/ws/nfeautorizacao.asmx
+NFeRetAutorizacao_3.10=https://homologacao.nfce.fazenda.sp.gov.br/ws/nferetautorizacao.asmx
+URL-QRCode=https://www.homologacao.nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaQRCode.aspx
+URL-ConsultaNFCe=https://www.homologacao.nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaPublica.aspx
+EventoEPEC_1.00=https://homologacao.nfce.epec.fazenda.sp.gov.br/EPECws/RecepcaoEPEC.asmx
+NFeAutorizacao_4.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/NFeRetAutorizacao4.asmx
+NFeInutilizacao_4.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/NFeInutilizacao4.asmx
+NFeConsultaProtocolo_4.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/NFeConsultaProtocolo4.asmx
+RecepcaoEvento_4.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/NFeRecepcaoEvento4.asmx
+NfeStatusServico_4.00=https://homologacao.nfce.fazenda.sp.gov.br/ws/NFeStatusServico4.asmx
+URL-QRCode_4.00=https://www.homologacao.nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaQRCode.aspx
+URL-ConsultaNFCe_4.00=https://www.homologacao.nfce.fazenda.sp.gov.br/NFCeConsultaPublica
+
+[NFCe_TO_P]
+Usar=NFCe_SVRS_P
+URL-QRCode=http://apps.sefaz.to.gov.br/portal-nfce/qrcodeNFCe
+URL-ConsultaNFCe=http://apps.sefaz.to.gov.br/portal-nfce/consultarNFCe.jsf
+
+[NFCe_TO_H]
+Usar=NFCe_SVRS_H
+URL-QRCode=http://apps.sefaz.to.gov.br/portal-nfce-homologacao/qrcodeNFCe
+URL-ConsultaNFCe=http://apps.sefaz.to.gov.br/portal-nfce-homologacao/consultarNFCe.jsf
+
+[NFCe_SVAN_P]
+
+[NFCe_SVAN_H]
+
+[NFCe_SVRS_P]
+NfeAutorizacao_3.10=https://nfce.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfce.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_3.10=https://nfce.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://nfce.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_3.10=https://nfce.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfce.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+RecepcaoEvento_4.00=https://nfce.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NfeInutilizacao_4.00=https://nfce.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfce.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfce.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+NFeAutorizacao_4.00=https://nfce.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfce.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+
+
+
+[NFCe_SVRS_H]
+NfeAutorizacao_3.10=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx
+NFeRetAutorizacao_3.10=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx
+NfeInutilizacao_3.10=https://nfce-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx
+NfeConsultaProtocolo_3.10=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx
+NfeStatusServico_3.10=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
+RecepcaoEvento_1.00=https://nfce-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
+RecepcaoEvento_4.00=https://nfce-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx
+NfeInutilizacao_4.00=https://nfce-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx
+NfeConsultaProtocolo_4.00=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx
+NfeStatusServico_4.00=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx
+NFeAutorizacao_4.00=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
+NFeRetAutorizacao_4.00=https://nfce-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx
+
+[WSDL_V4]
+NFeAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4
+NFeRetAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4
+NfeInutilizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4
+NFeConsultaProtocolo_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4
+NFeStatusServico_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4
+RecepcaoEvento_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4
+CadConsultaCadastro_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro4
+
+[SOAP_V4]
+NFeAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4/nfeAutorizacaoLote
+NFeRetAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4/nfeRetAutorizacaoLote
+NfeInutilizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4/nfeInutilizacaoNF
+NFeConsultaProtocolo_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4/nfeConsultaNF
+NFeStatusServico_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4/nfeStatusServicoNF
+RecepcaoEvento_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4/nfeRecepcaoEvento
+CadConsultaCadastro_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro4/consultaCadastro
+
+[WSDL_V4_SP]
+NFeAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao4
+NFeRetAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetAutorizacao4
+NfeInutilizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao4
+NFeConsultaProtocolo_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta4
+NFeStatusServico_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico4
+RecepcaoEvento_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/RecepcaoEvento4
+CadConsultaCadastro_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro4
+
+[SOAP_V4_SP]
+NFeAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao4/nfeAutorizacaoLote
+NFeRetAutorizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetAutorizacao4/nfeRetAutorizacaoLote
+NfeInutilizacao_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao4/nfeInutilizacaoNF
+NFeConsultaProtocolo_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta4/nfeConsultaNF
+NFeStatusServico_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico4/nfeStatusServicoNF
+RecepcaoEvento_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/RecepcaoEvento4/nfeRecepcaoEventoNF
+CadConsultaCadastro_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro4/consultaCadastro
+
+[WSDL_V4_MG]
+NFeConsultaProtocolo_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsulta4
+
+[SOAP_V4_MG]
+NFeConsultaProtocolo_4.00=http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsulta4/nfeConsulta4
\ No newline at end of file