br.com.swconsultoria.nfe.util.WebServiceUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-nfe Show documentation
Show all versions of java-nfe Show documentation
Api java para consumo do webService de nota fiscal eletronica
/**
*
*/
package br.com.swconsultoria.nfe.util;
import br.com.swconsultoria.nfe.dom.ConfiguracoesNfe;
import br.com.swconsultoria.nfe.dom.enuns.AmbienteEnum;
import br.com.swconsultoria.nfe.dom.enuns.DocumentoEnum;
import br.com.swconsultoria.nfe.dom.enuns.EstadosEnum;
import br.com.swconsultoria.nfe.dom.enuns.ServicosEnum;
import br.com.swconsultoria.nfe.exception.NfeException;
import lombok.extern.java.Log;
import org.ini4j.Wini;
import java.io.*;
import java.util.logging.Logger;
/**
* @author Samuel Oliveira
*
* Classe responsávelem montar as URL's de consulta de serviços do SEFAZ.
*/
@Log
public class WebServiceUtil {
private final static Logger logger = Logger.getLogger(WebServiceUtil.class.getName());
/**
* Retorna a URL para consulta de operações do SEFAZ.
*
*
* O método carrega o arquivo WebServicesNfe.ini que contêm as
* URL's de operações do SEFAZ, busca pela seção no arquivo .ini que
* corresponda com os argumentos tipo, config, servico
* e retorna essa URL.
*
*
* @param config interface que contêm os dados necessários para a comunicação.
* @param tipoDocumento DocumentoEnum.NFE e ConstantesUtil.NFCE
* @param tipoServico é a operação que se deseja fazer.
* Ex.: para consultas status deserviço no ambiente de produção
* use ServicosEnum.NfeStatusServico_4.00
*
* @return url String que representa a URL do serviço.
* @throws NfeException
*
* @see ConfiguracoesNfe
* @see ConstantesUtil
**/
public static String getUrl(ConfiguracoesNfe config, DocumentoEnum tipoDocumento, ServicosEnum tipoServico) throws NfeException {
try {
String secao = tipoDocumento.getTipo() + "_" + config.getEstado() + "_"
+ (config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "H" : "P");
InputStream is;
if (ObjetoUtil.verifica(config.getArquivoWebService()).isPresent()) {
File arquivo = new File(config.getArquivoWebService());
if (!arquivo.exists())
throw new FileNotFoundException("Arquivo WebService" + config.getArquivoWebService() + " não encontrado");
is = new FileInputStream(arquivo);
log.info("[ARQUIVO INI CUSTOMIZADO]: " + config.getArquivoWebService());
} else {
is = WebServiceUtil.class.getResourceAsStream("/WebServicesNfe.ini");
}
Wini ini = new Wini();
ini.getConfig().setLowerCaseOption(true);
ini.load(is);
is.close();
String url = ini.get(secao, "usar");
//URLS CONSULTA CADASTO
if (tipoServico.equals(ServicosEnum.CONSULTA_CADASTRO) && (
config.getEstado().equals(EstadosEnum.PA) ||
config.getEstado().equals(EstadosEnum.AM) ||
config.getEstado().equals(EstadosEnum.AL) ||
config.getEstado().equals(EstadosEnum.AP) ||
config.getEstado().equals(EstadosEnum.DF) ||
config.getEstado().equals(EstadosEnum.PI) ||
config.getEstado().equals(EstadosEnum.RJ) ||
config.getEstado().equals(EstadosEnum.RO) ||
config.getEstado().equals(EstadosEnum.SE) ||
config.getEstado().equals(EstadosEnum.TO))) {
throw new NfeException("Estado não possui Consulta Cadastro.");
// URLS de ambiente nacional
} else if (tipoServico.equals(ServicosEnum.DISTRIBUICAO_DFE)
|| tipoServico.equals(ServicosEnum.MANIFESTACAO)
|| tipoServico.equals(ServicosEnum.EPEC)) {
secao = config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "NFe_AN_H" : "NFe_AN_P";
} else if (!tipoServico.equals(ServicosEnum.URL_CONSULTANFCE)
&& !tipoServico.equals(ServicosEnum.URL_QRCODE) && ObjetoUtil.verifica(url).isPresent()) {
secao = url;
} else if (config.isContigenciaSVC()) {
// SVC-RS
if (config.getEstado().equals(EstadosEnum.GO) || config.getEstado().equals(EstadosEnum.AM)
|| config.getEstado().equals(EstadosEnum.BA) || config.getEstado().equals(EstadosEnum.CE)
|| config.getEstado().equals(EstadosEnum.MA) || config.getEstado().equals(EstadosEnum.MS)
|| config.getEstado().equals(EstadosEnum.MT) || config.getEstado().equals(EstadosEnum.PA)
|| config.getEstado().equals(EstadosEnum.PE) || config.getEstado().equals(EstadosEnum.PI)
|| config.getEstado().equals(EstadosEnum.PR)) {
secao = tipoDocumento.getTipo() + "_SVRS_"
+ (config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "H" : "P");
// SVC-AN
} else {
secao = tipoDocumento.getTipo() + "_SVC-AN_"
+ (config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "H" : "P");
}
}
url = ini.get(secao, tipoServico.getServico().toLowerCase());
ObjetoUtil.verifica(url).orElseThrow(() -> new NfeException(
"WebService de " + tipoServico + " não encontrado para " + config.getEstado().getNome()));
log.info("[URL]: " + tipoServico + ": " + url);
return url;
} catch (IOException e) {
throw new NfeException(e.getMessage(),e);
}
}
}