Exemplo de código em Java
Sobre o Java
Hoje o Java é a linguagem de programação mais popular no mundo, sendo utilizada por empresas de todos os portes para desenvolvimento de todo tipo de sistemas.
A emissão de NFe, NFSe ou NFCe utilizando Java pode ser feita de forma direta através da comunicação sem intermediários com as receitas estaduais ou prefeituras, porém existem inúmeras vantagens em utilizar uma API de terceiros para esta emissão.
O Focus NFe possui uma API simples e completa para emissão destes documentos fiscais, abaixo você irá encontrar exemplos funcionais de código-fonte em Java utilizando a nossa API.
Envio de uma NFe
import java.util.HashMap;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
public class NFeAutorizar {
public static void main(String[] args) throws JSONException{
String login = "Token_obtido_no_cadastro_da_empresa";
/* Substituir pela sua identificação interna da nota. */
String ref = "12345";
/* Para ambiente de produção use a variável abaixo:
String server = "https://api.focusnfe.com.br/"; */
String server = "https://homologacao.focusnfe.com.br/";
String url = server.concat("v2/nfe?ref="+ref);
/* Configuração para realizar o HTTP BasicAuth. */
Object config = new DefaultClientConfig();
Client client = Client.create((ClientConfig) config);
client.addFilter(new HTTPBasicAuthFilter(login, ""));
/* Aqui são criados as hash's que receberão os dados da nota. */
HashMap nfe = new HashMap();
HashMap itens = new HashMap();
nfe.put("data_emissao", "2018-01-16T09:38:00");
nfe.put("natureza_operacao", "Remessa de Produtos");
nfe.put("forma_pagamento", "0");
nfe.put("tipo_documento", "1");
nfe.put("finalidade_emissao", "1");
nfe.put("cnpj_emitente", "51916585000125");
nfe.put("nome_emitente", "ACME LTDA");
nfe.put("nome_fantasia_emitente", "ACME TESTES");
nfe.put("logradouro_emitente", "Rua Interventor Manoel Ribas");
nfe.put("numero_emitente", "1355 ");
nfe.put("bairro_emitente", "Santa Felicidade");
nfe.put("municipio_emitente", "Curitiba");
nfe.put("uf_emitente", "PR");
nfe.put("cep_emitente", "82320030");
nfe.put("telefone_emitente", "44912345678");
nfe.put("inscricao_estadual_emitente", "1234567");
nfe.put("nome_destinatario", "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
nfe.put("cpf_destinatario", "51966818092");
nfe.put("inscricao_estadual_destinatario", "ISENTO");
nfe.put("telefone_destinatario", "19912345678");
nfe.put("logradouro_destinatario", "Rua Leonor Campos");
nfe.put("numero_destinatario", "29");
nfe.put("bairro_destinatario", "Swiss Park");
nfe.put("municipio_destinatario", "Campinas");
nfe.put("uf_destinatario", "SP");
nfe.put("pais_destinatario", "Brasil");
nfe.put("cep_destinatario", "13049555");
nfe.put("icms_base_calculo", "0");
nfe.put("icms_valor_total", "0");
nfe.put("icms_base_calculo_st", "0");
nfe.put("icms_valor_total_st", "0");
nfe.put("icms_modalidade_base_calculo", "0");
nfe.put("icms_valor", "0");
nfe.put("valor_frete", "0");
nfe.put("valor_seguro", "0");
nfe.put("valor_total", "1");
nfe.put("valor_produtos", "1");
nfe.put("valor_desconto", "0.00");
nfe.put("valor_ipi", "0");
nfe.put("modalidade_frete", "1");
itens.put("numero_item","128");
itens.put("codigo_produto","1007");
itens.put("descricao","Multi Mist 500g");
itens.put("cfop","6102");
itens.put("unidade_comercial","un");
itens.put("quantidade_comercial","1");
itens.put("valor_unitario_comercial","1");
itens.put("valor_unitario_tributavel","1");
itens.put("unidade_tributavel","un");
itens.put("codigo_ncm","11041900");
itens.put("valor_frete","0");
itens.put("valor_desconto","0.00");
itens.put("quantidade_tributavel","1");
itens.put("valor_bruto","1");
itens.put("icms_situacao_tributaria","103");
itens.put("icms_origem","0");
itens.put("pis_situacao_tributaria","07");
itens.put("cofins_situacao_tributaria","07");
itens.put("ipi_situacao_tributaria","53");
itens.put("ipi_codigo_enquadramento_legal","999");
/* Depois de fazer o input dos dados, são criados os objetos JSON já com os valores das hash's. */
JSONObject json = new JSONObject (nfe);
JSONObject jsonItens = new JSONObject (itens);
/* Aqui adicionamos os objetos JSON nos campos da API como array no JSON principal. */
json.append("items", jsonItens);
/* É recomendado verificar como os dados foram gerados em JSON e se ele está seguindo a estrutura especificada em nossa documentação.
System.out.print(json); */
WebResource request = client.resource(url);
ClientResponse resposta = request.post(ClientResponse.class, json);
int httpCode = resposta.getStatus();
String body = resposta.getEntity(String.class);
/* As três linhas a seguir exibem as informações retornadas pela nossa API.
* Aqui o seu sistema deverá interpretar e lidar com o retorno. */
System.out.print("HTTP Code: ");
System.out.print(httpCode);
System.out.printf(body);
}
}
Envio de uma NFSe
import java.util.HashMap;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
public class NFSeAutorizar {
public static void main(String[] args) throws JSONException{
String login = "Token_obtido_no_cadastro_da_empresa";
/* Substituir pela sua identificação interna da nota. */
String ref = "12345";
/* Para ambiente de produção use a variável abaixo:
String server = "https://api.focusnfe.com.br/"; */
String server = "https://homologacao.focusnfe.com.br/";
String url = server.concat("v2/nfse?ref="+ref);
/* Configuração para realizar o HTTP BasicAuth. */
Object config = new DefaultClientConfig();
Client client = Client.create((ClientConfig) config);
client.addFilter(new HTTPBasicAuthFilter(login, ""));
/* Aqui são criados as hash's que receberão os dados da nota. */
HashMap nfse = new HashMap();
HashMap prestador = new HashMap();
HashMap tomador = new HashMap();
HashMap tomadorEndereco = new HashMap();
HashMap servico = new HashMap();
nfse.put("data_emissao", "2018-01-15T17:40:00");
nfse.put("natureza_operacao", "1");
prestador.put("cnpj", "51916585000125");
prestador.put("inscricao_municipal", "123456");
prestador.put("codigo_municipio", "4128104");
tomador.put("cpf", "51966818092");
tomador.put("razao_social", "ACME LTDA");
tomador.put("email", "email-do-tomador@google.com.br");
tomadorEndereco.put("bairro", "Jardim America");
tomadorEndereco.put("cep", "82620150");
tomadorEndereco.put("codigo_municipio", "4106902");
tomadorEndereco.put("logradouro", "Rua Paulo Centrone");
tomadorEndereco.put("numero", "168");
tomadorEndereco.put("uf", "PR");
servico.put("discriminacao", "Teste de servico");
servico.put("aliquota", "3.00");
servico.put("base_calculo", "1.0");
servico.put("valor_iss", "0");
servico.put("iss_retido", "false");
servico.put("codigo_tributario_municipio", "080101");
servico.put("item_lista_servico", "0801");
servico.put("valor_servicos", "1.0");
servico.put("valor_liquido", "1.0");
/* Depois de fazer o input dos dados, são criados os objetos JSON já com os valores das hash's. */
JSONObject json = new JSONObject (nfse);
JSONObject jsonPrestador = new JSONObject (prestador);
JSONObject jsonTomador = new JSONObject (tomador);
JSONObject jsonTomadorEndereco = new JSONObject (tomadorEndereco);
JSONObject jsonServico = new JSONObject (servico);
/* Aqui adicionamos os objetos JSON nos campos da API como array no JSON principal. */
json.accumulate("prestador", jsonPrestador);
json.accumulate("tomador", jsonTomador);
jsonTomador.accumulate("endereco", jsonTomadorEndereco);
json.accumulate("servico", jsonServico);
/* É recomendado verificar como os dados foram gerados em JSON e se ele está seguindo a estrutura especificada em nossa documentação.
System.out.print(json); */
WebResource request = client.resource(url);
ClientResponse resposta = request.post(ClientResponse.class, json);
int httpCode = resposta.getStatus();
String body = resposta.getEntity(String.class);
/* As três linhas a seguir exibem as informações retornadas pela nossa API.
* Aqui o seu sistema deverá interpretar e lidar com o retorno. */
System.out.print("HTTP Code: ");
System.out.print(httpCode);
System.out.printf(body);
}
}
Envio de uma NFCe
import java.util.HashMap;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
public class NFCeAutorizar {
public static void main(String[] args) throws JSONException{
String login = "Token_obtido_no_cadastro_da_empresa";
/* Substituir pela sua identificação interna da nota. */
String ref = "12345";
/* Para ambiente de produção use a variável abaixo:
String server = "https://api.focusnfe.com.br/"; */
String server = "https://homologacao.focusnfe.com.br/";
String url = server.concat("v2/nfce?ref="+ ref+"&completa=1");
/* Configuração para realizar o HTTP BasicAuth. */
Object config = new DefaultClientConfig();
Client client = Client.create((ClientConfig) config);
client.addFilter(new HTTPBasicAuthFilter(login, ""));
/* Aqui são criados as hash's que receberão os dados da nota. */
HashMap nfce = new HashMap();
HashMap itens = new HashMap();
HashMap formasPagamento = new HashMap();
nfce.put("data_emissao", "2018-01-15T16:25:00");
nfce.put("consumidor_final", "1");
nfce.put("modalidade_frete", "9");
nfce.put("natureza_operacao", "Venda ao Consumidor");
nfce.put("tipo_documento", "1");
nfce.put("finalidade_emissao", "1");
nfce.put("presenca_comprador", "1");
nfce.put("indicador_inscricao_estadual_destinatario", "9");
nfce.put("cnpj_emitente", "51916585000125");
nfce.put("cpf_destinatario", "");
nfce.put("id_estrangeiro_destinatario", "1234567");
nfce.put("nome_destinatario", "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
nfce.put("informacoes_adicionais_contribuinte", "Documento emitido por ME ou EPP optante pelo Simples Nacional nao gera direito a credito fiscal de ICMS lei 123/2006.");
nfce.put("valor_produtos", "1.0000");
nfce.put("valor_desconto", "0.0000");
nfce.put("valor_total", "1.0000");
nfce.put("forma_pagamento", "0");
nfce.put("icms_base_calculo", "0.0000");
nfce.put("icms_valor_total", "0.0000");
nfce.put("icms_base_calculo_st", "0.0000");
nfce.put("icms_valor_total_st", "0.0");
nfce.put("icms_modalidade_base_calculo", "3");
nfce.put("valor_frete", "0.0");
itens.put("numero_item", "1");
itens.put("unidade_comercial", "PC");
itens.put("unidade_tributavel", "PC");
itens.put("codigo_ncm", "94019090");
itens.put("codigo_produto", "Div.13350000");
itens.put("descricao", "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
itens.put("cfop", "5102");
itens.put("valor_unitario_comercial", "1.0000000000");
itens.put("valor_unitario_tributavel", "1.0000000000");
itens.put("valor_bruto", "1.0000");
itens.put("quantidade_comercial", "1.0000");
itens.put("quantidade_tributavel", "1.0000");
itens.put("quantidade", "1.0000");
itens.put("icms_origem", "0");
itens.put("icms_base_calculo", "1.00");
itens.put("icms_modalidade_base_calculo", "3");
itens.put("valor_frete", "0.0");
itens.put("valor_outras_despesas", "0.0");
itens.put("icms_situacao_tributaria", "102");
formasPagamento.put("forma_pagamento", "99");
formasPagamento.put("valor_pagamento", "1.0000");
/* Depois de fazer o input dos dados, são criados os objetos JSON já com os valores das hash's. */
JSONObject json = new JSONObject (nfce);
JSONObject jsonItens = new JSONObject (itens);
JSONObject jsonPagamento = new JSONObject (formasPagamento);
/* Aqui adicionamos os objetos JSON nos campos da API como array no JSON principal. */
json.append("items", jsonItens);
json.append("formas_pagamento", jsonPagamento);
/* É recomendado verificar como os dados foram gerados em JSON e se ele está seguindo a estrutura especificada em nossa documentação.
System.out.print(json); */
WebResource request = client.resource(url);
ClientResponse resposta = request.post(ClientResponse.class, json);
int httpCode = resposta.getStatus();
String body = resposta.getEntity(String.class);
/* As três linhas a seguir exibem as informações retornadas pela nossa API.
* Aqui o seu sistema deverá interpretar e lidar com o retorno. */
System.out.print("HTTP Code: ");
System.out.print(httpCode);
System.out.printf(body);
}
}
Envio de uma CTe
import java.util.HashMap;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
public class Autorizar {
public static void main(String[] args) throws JSONException{
String login = "Token_obtido_no_cadastro_da_empresa";
/* Substituir pela sua identificação interno do CTe. */
String ref = "12345";
/* Para ambiente de produção use a variável abaixo:
String server = "https://api.focusnfe.com.br/"; */
String server = "https://homologacao.focusnfe.com.br/";
String url = server.concat("v2/cte_os?ref="+ref);
/* Configuração para realizar o HTTP BasicAuth. */
Object config = new DefaultClientConfig();
Client client = Client.create((ClientConfig) config);
client.addFilter(new HTTPBasicAuthFilter(login, ""));
/* Aqui são criados as hash's que receberão os dados do CTe. */
HashMap cte = new HashMap();
HashMap seguroCarga = new HashMap();
HashMap documentosReferenciados = new HashMap();
cte.put("bairro_emitente","Sao Cristova");
cte.put("bairro_tomador","Bacacheri");
cte.put("cep_emitente","99880077");
cte.put("cep_tomador","88991188");
cte.put("cfop","5353");
cte.put("cnpj_emitente","51916585000125");
cte.put("cnpj_tomador","51966818092777");
cte.put("codigo_municipio_emitente","2927408");
cte.put("codigo_municipio_envio","5200050");
cte.put("codigo_municipio_fim","3100104");
cte.put("codigo_municipio_inicio","5200050");
cte.put("codigo_municipio_tomador","4106902");
cte.put("codigo_pais_tomador","1058");
cte.put("complemento_emitente","Andar 19 - sala 23");
cte.put("data_emissao","2018-06-18T09:17:00");
cte.put("descricao_servico","Descricao do seu servico aqui");
cte.put("funcionario_emissor","Nome do funcionario que fez a emissao");
cte.put("icms_aliquota","17.00");
cte.put("icms_base_calculo","1.00");
cte.put("icms_situacao_tributaria","00");
cte.put("icms_valor","0.17");
cte.put("indicador_inscricao_estadual_tomador","9");
cte.put("inscricao_estadual_emitente","12345678");
cte.put("logradouro_emitente","Aeroporto Internacional de Salvador");
cte.put("logradouro_tomador","Rua Joao Dalegrave");
cte.put("modal","02");
cte.put("municipio_emitente","Salvador");
cte.put("municipio_envio","Abadia de Goias");
cte.put("municipio_fim","Abadia dos Dourados");
cte.put("municipio_inicio","Abadia de Goias");
cte.put("municipio_tomador","Curitiba");
cte.put("natureza_operacao","PREST. DE SERV. TRANSPORTE A ESTAB. COMERCIAL");
cte.put("nome_emitente","ACME LTDA");
cte.put("nome_fantasia_emitente","ACME");
cte.put("nome_fantasia_tomador","Nome do tomador do servico aqui");
cte.put("nome_tomador","NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
cte.put("numero_emitente","S/N");
cte.put("numero_fatura","1");
cte.put("numero_tomador","1");
cte.put("pais_tomador","BRASIL");
cte.put("quantidade","1.0000");
cte.put("telefone_emitente","4133336666");
cte.put("tipo_documento","0");
cte.put("tipo_servico","6");
cte.put("uf_emitente","BA");
cte.put("uf_envio","GO");
cte.put("uf_fim","MG");
cte.put("uf_inicio","GO");
cte.put("uf_tomador","PR");
cte.put("valor_desconto_fatura","0.00");
cte.put("valor_inss","0.10");
cte.put("valor_liquido_fatura","1.00");
cte.put("valor_original_fatura","1.00");
cte.put("valor_receber","1.00");
cte.put("valor_total","1.00");
cte.put("valor_total_tributos","0.00");
segurosCarga.put("nome_seguradora","Nome da seguradora aqui");
segurosCarga.put("numero_apolice","12345");
segurosCarga.put("responsavel_seguro","4");
documentosReferenciados.put("data_emissao","2018-06-18");
documentosReferenciados.put("numero","1");
documentosReferenciados.put("serie","1");
documentosReferenciados.put("subserie","1");
documentosReferenciados.put("valor","1.00");
/* Depois de fazer o input dos dados, são criados os objetos JSON já com os valores das hash's. */
JSONObject json = new JSONObject (cte);
JSONObject jsonSegurosCarga = new JSONObject (segurosCarga);
JSONObject jsonDocumentosReferenciados = new JSONObject (documentosReferenciados);
/* Aqui adicionamos os objetos JSON nos campos da API como array no JSON principal. */
json.append("segurosCarga", jsonSegurosCarga);
json.append("documentosReferenciados", jsonDocumentosReferenciados);
/* É recomendado verificar como os dados foram gerados em JSON e se ele está seguindo a estrutura especificada em nossa documentação.*/
//System.out.print(json);
WebResource request = client.resource(url);
ClientResponse resposta = request.post(ClientResponse.class, json);
int httpCode = resposta.getStatus();
String body = resposta.getEntity(String.class);
/* As três linhas a seguir exibem as informações retornadas pela nossa API.
* Aqui o seu sistema deverá interpretar e lidar com o retorno. */
System.out.print("HTTP Code: ");
System.out.print(httpCode);
System.out.printf(body);
}
}
Manifesto do Destinatário
import java.util.HashMap;
import org.codehaus.jettison.json.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
public class Manifestar {
public static void main(String[] args) {
String login = "Token_obtido_no_cadastro_da_empresa";
String chave = "Chave_de_identificação_da_NFe";
/* Para ambiente de produção use a variável abaixo:
String server = "https://api.focusnfe.com.br/"; */
String server = "https://homologacao.focusnfe.com.br/";
String url = server.concat("v2/nfes_recebidas/"+chave+"/manifesto");
/* Aqui criamos um hashmap para receber a chave "tipo" e o valor que pode ser: ciencia, confirmacao, desconhecimento ou nao_realizada. */
HashMap tipoManifestacao = new HashMap();
tipoManifestacao.put("tipo", "nao_realizada");
/* Caso escolha o tipo "nao_realizada", é preciso informar o campo/chave "justificativa".
* TipoManifestacao.put("justificativa", "Informe aqui a sua justificativa do motivo da não realização da operação."); */
/* Criamos um objeto JSON para receber a hash com os dados esperado pela API. */
JSONObject json = new JSONObject(TipoManifestacao);
/* Configuração para realizar o HTTP BasicAuth. */
Object config = new DefaultClientConfig();
Client client = Client.create((ClientConfig) config);
client.addFilter(new HTTPBasicAuthFilter(login, ""));
WebResource request = client.resource(url);
ClientResponse resposta = request.post(ClientResponse.class, json);
int httpCode = resposta.getStatus();
String body = resposta.getEntity(String.class);
/* As três linhas abaixo imprimem as informações retornadas pela API.
* Aqui o seu sistema deverá interpretar e lidar com o retorno. */
System.out.print("HTTP Code: ");
System.out.print(httpCode);
System.out.printf(body);
}
}
A integração com nossa API é simples e rápida e nossa documentação aberta e objetiva. Tudo isso pensando na sua economia de tempo.
Deseja testar nossa API?
Solicite um contato comercial e teremos prazer em ajudar.