
Exemplo de código em Java
Emita nota fiscal eletrônica pelo seu sistema Java utilizando nossa API
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.
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<String, String> nfe = new HashMap<String, String>();
HashMap<String, String> itens = new HashMap<String, String>();
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);
}
}
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<String, String> nfse = new HashMap<String, String>();
HashMap<String, String> prestador = new HashMap<String, String>();
HashMap<String, String> tomador = new HashMap<String, String>();
HashMap<String, String> tomadorEndereco = new HashMap<String, String>();
HashMap<String, String> servico = new HashMap<String, String>();
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);
}
}
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<String, String> nfce = new HashMap<String, String>();
HashMap<String, String> itens = new HashMap<String, String>();
HashMap<String, String> formasPagamento = new HashMap<String, String>();
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);
}
}
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. Clique no botão abaixo e veja você mesmo nossa documentação

+ 100M
Notas emitidas
+ 9.000
+ 600
26
Depoimentos de alguns de nossos clientes

Florian Hagenbuch
A facilidade de integração via API e a rapidez do suporte técnico da equipe Focus NFe nos permitiu concentrar em nosso negócio.


Jessica E. Mong
Overall, development and integration went smoothly because of the top notch Acras team. It was a pleasure working with the team and celebrating wins. I highly recommend them.


Bruno Borges
O ganho foi claro, após um mês de benchmark e testes a redução no tempo de emissão das notas foi de mais de 60%, só não foi maior por que esbarrou em limitações da própria prefeitura. Isso sem contar a economia de tempo de nossa equipe no desenvolvimento relacionado à emissão de NFe.


Petr Urbancik
We very much appreciate not only minimalization of the administrative costs and time but also help with some accounting and legal aspects of the proper NFSe integration. We are happy we have solution from Focus to hanadle NFSe for all our offices around Brazil.

