├── NFeJava.java
├── README.md
└── WebmaniaBR
├── ExemploJSON
├── cancelarNotaFiscal.json
├── cartaCorrecao.json
├── consultarNotaFiscal.json
├── emitirNotaFiscal.json
├── emitirNotaFiscalAjuste.json
├── emitirNotaFiscalComplementar.json
├── emitirNotaFiscalComplementar_Impostos.json
├── emitirNotaFiscalComplementar_PrecoQuantidade.json
├── emitirNotaFiscalDevolucao.json
├── emitirNotaFiscal_Armamentos.json
├── emitirNotaFiscal_Combustivel.json
├── emitirNotaFiscal_Medicamentos.json
├── emitirNotaFiscal_Rastreabilidade.json
├── emitirNotaFiscal_VeiculosNovos.json
└── inutilizarNumeracao.json
├── NFe.java
└── config
└── Credenciais.java
/NFeJava.java:
--------------------------------------------------------------------------------
1 | // Classe NFe
2 | import WebmaniaBR.NFe;
3 |
4 | public class NFeJava {
5 |
6 | public static void main(String[] args) throws Exception {
7 |
8 | // Emissão de Nota fiscal
9 | NFe nfe = new NFe();
10 | System.out.println(nfe.emitirNotaFiscal());
11 |
12 | // Consultar Status SEFAZ
13 | //NFe nfe = new NFe();
14 | //System.out.println(nfe.statusSefaz());
15 |
16 | // Consultar Validade Certificado A1
17 | //NFe nfe = new NFe();
18 | //System.out.println(nfe.validadeCertificadoA1());
19 |
20 | // Consultar Nota Fiscal
21 | //NFe nfe = new NFe();
22 | //System.out.println(nfe.consultarNotaFiscal());
23 |
24 | }
25 |
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # NFe-Java
6 |
7 | Através do emissor de Nota Fiscal da Webmania®, você conta com a emissão e arquivamento das suas notas fiscais, cálculo automático de impostos, geração do Danfe para impressão e envio automático de e-mails para os clientes. Realize a integração com o seu sistema utilizando a nossa REST API.
8 |
9 | - Emissor de Nota Fiscal Webmania®: [Saiba mais](https://webmaniabr.com/nota-fiscal-eletronica/)
10 | - Documentação REST API: [Visualizar](https://webmaniabr.com/docs/rest-api-nfe/)
11 |
12 | ## Requisitos
13 |
14 | - Contrate um dos planos de Nota Fiscal Eletrônica da Webmania®: [Assine agora mesmo](https://webmaniabr.com/nota-fiscal-eletronica/#plans-section).
15 | - Instalar as bibliotecas [org.JSON](https://github.com/stleary/JSON-java) e [org.json.simple.parser.JSONParser](https://jar-download.com/maven-repository-class-search.php?search_box=%20org.json.simple.parser.JSONParser).
16 | - Realize a integração com o seu sistema.
17 |
18 | ## Estrutura
19 |
20 | - **NFeJava.java**: Classe principal para execução do programa.
21 | - **WebmaniaBR/NFe.java**: Classe com todos os métodos, como Emissão de Nota Fiscal, Consultar Status SEFAZ, Validar Certificado A1, entre outros.
22 | - **WebmaniaBR/config/Credenciais.java**: Classe para configuração de credenciais de acesso e também para o tratamento de conexão com a API.
23 | - **WebmaniaBR/ExemploJSON/**: Diretório com exemplos de JSON para ser enviado a API.
24 |
25 | ## Exemplos
26 |
27 | Desenvolvimento baseado na classe [HttpURLConnection](https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html).
28 |
29 | Os exemplos abaixo são os métodos da classe NFe.
30 |
31 | - **cancelarNotaFiscal**: Cancelar Nota Fiscal enviada ao SEFAZ.
32 | - **cartaCorrecao**: Corrigir uma Nota Fiscal junto ao SEFAZ.
33 | - **consultarNotaFiscal**: Consulta a Nota Fiscal enviada para o SEFAZ.
34 | - **emitirNotaFiscal_Armamentos**: Emissão da Nota Fiscal com detalhamento específico de Armamentos.
35 | - **emitirNotaFiscal_Combustivel**: Emissão da Nota Fiscal com detalhamento específico de Combustivel.
36 | - **emitirNotaFiscal_Medicamentos**: Emissão da Nota Fiscal com detalhamento específico de Medicamentos.
37 | - **emitirNotaFiscal_Rastreabilidade**: Emissão da Nota Fiscal com detalhamento específico de Rastreabilidade.
38 | - **emitirNotaFiscal_VeiculosNovos**: Emissão da Nota Fiscal com detalhamento específico de Veiculos Novos.
39 | - **emitirNotaFiscal**: Emissão da Nota Fiscal junto ao SEFAZ.
40 | - **emitirNotaFiscalAjuste**: Emite uma nota fiscal de ajuste.
41 | - **emitirNotaFiscalComplementar_Imposto**: Emite uma Nota Fiscal complementar.
42 | - **emitirNotaFiscalComplementar_PrecoQuantidade**: Emite uma Nota Fiscal complementar.
43 | - **emitirNotaFiscalDevolucao**: Emissão de Nota Fiscal de devolução junto ao SEFAZ.
44 | - **inutilizarNumeracao**: Inutilizar sequência de numeração junto ao SEFAZ.
45 | - **statusSefaz**: Verifica se o Sefaz está Online ou Offline.
46 | - **validadeCertificadoA1**: Verifica se o Certificado A1 é válido e quantos dias faltam para expirar.
47 |
48 | ## Suporte
49 |
50 | Qualquer dúvida entre em contato na nossa [Central de Ajuda](https://ajuda.webmaniabr.com) ou acesse o [Painel de Controle](https://webmaniabr.com/painel/) para conversar em tempo real no Chat ou Abrir um chamado.
51 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/cancelarNotaFiscal.json:
--------------------------------------------------------------------------------
1 | {
2 | "chave": "00000000000000000000000000000000000000000000",
3 | "motivo": "Cancelamento por motivos administrativos."
4 | }
5 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/cartaCorrecao.json:
--------------------------------------------------------------------------------
1 | {
2 | "chave": "00000000000000000000000000000000000000000000",
3 | "correcao": "O CFOP correto é 5.102 referente a revenda tributada no mesmo estado."
4 | }
5 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/consultarNotaFiscal.json:
--------------------------------------------------------------------------------
1 | {
2 | "chave": "00000000000000000000000000000000000000000000"
3 | }
4 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscal.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": 1137,
3 | "url_notificacao": "http://meudominio.com/retorno.php",
4 | "operacao": 1,
5 | "natureza_operacao": "Venda de produção do estabelecimento",
6 | "modelo": 1,
7 | "finalidade": 1,
8 | "ambiente": 2,
9 | "cliente": {
10 | "cpf": "000.000.000-00",
11 | "nome_completo": "Nome do Cliente",
12 | "endereco": "Av. Brg. Faria Lima",
13 | "complemento": "Escritório",
14 | "numero": 1000,
15 | "bairro": "Itaim Bibi",
16 | "cidade": "São Paulo",
17 | "uf": "SP",
18 | "cep": "00000-000",
19 | "telefone": "(00) 0000-0000",
20 | "email": "nome@email.com"
21 | },
22 | "produtos": [
23 | {
24 | "nome": "Nome do produto",
25 | "codigo": "nome-do-produto",
26 | "ncm": "6109.10.00",
27 | "cest": "28.038.00",
28 | "quantidade": 3,
29 | "unidade": "UN",
30 | "peso": "0.800",
31 | "origem": 0,
32 | "subtotal": "44.90",
33 | "total": "134.70",
34 | "classe_imposto": "REF1000"
35 | },
36 | {
37 | "nome": "Nome do produto",
38 | "codigo": "nome-do-produto",
39 | "ncm": "6109.10.00",
40 | "cest": "28.038.00",
41 | "quantidade": "1",
42 | "unidade": "UN",
43 | "peso": "0.200",
44 | "origem": 0,
45 | "subtotal": "29.90",
46 | "total": "29.90",
47 | "impostos": {
48 | "icms": {
49 | "codigo_cfop": "6.102",
50 | "situacao_tributaria": "102"
51 | },
52 | "ipi": {
53 | "situacao_tributaria": "99",
54 | "codigo_enquadramento": "999",
55 | "aliquota": "0.00"
56 | },
57 | "pis": {
58 | "situacao_tributaria": "99",
59 | "aliquota": "0.00"
60 | },
61 | "cofins": {
62 | "situacao_tributaria": "99",
63 | "aliquota": "0.00"
64 | }
65 | }
66 | }
67 | ],
68 | "pedido": {
69 | "pagamento": 0,
70 | "presenca": 2,
71 | "modalidade_frete": 0,
72 | "frete": "12.56",
73 | "desconto": "10.00",
74 | "total": "174.60",
75 | "pagamento": 0,
76 | "forma_pagamento": 15
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscalAjuste.json:
--------------------------------------------------------------------------------
1 | {
2 | "operacao": 1,
3 | "natureza_operacao": "CREDITO ICMS ESTOQUE",
4 | "codigo_cfop": 2.949,
5 | "valor_icms": 1000,
6 | "ambiente": 2,
7 | "cliente": {
8 | "cpf": "000.000.000-00",
9 | "nome_completo": "Nome completo",
10 | "endereco": "Av. Brg. Faria Lima",
11 | "complemento": "Escritório",
12 | "numero": 1000,
13 | "bairro": "Itaim Bibi",
14 | "cidade": "São Paulo",
15 | "uf": "SP",
16 | "cep": "00000-000",
17 | "telefone": "(00) 0000-0000",
18 | "email": "nome@email.com"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscalComplementar.json:
--------------------------------------------------------------------------------
1 | {
2 | "nfe_referenciada": "00000000000000000000000000000000000000000000",
3 | "operacao": 1,
4 | "natureza_operacao": "Natureza da operação",
5 | "ambiente": 2,
6 | "cliente": {
7 | "cpf": "000.000.000-00",
8 | "nome_completo": "Nome completo",
9 | "endereco": "Av. Brg. Faria Lima",
10 | "complemento": "Escritorio",
11 | "numero": 1000,
12 | "bairro": "Itaim Bibi",
13 | "cidade": "São Paulo",
14 | "uf": "SP",
15 | "cep": "00000-000",
16 | "telefone": "(00) 0000-0000",
17 | "email": "nome@email.com"
18 | },
19 | "impostos": {
20 | "icms": {
21 | "codigo_cfop": "6.102",
22 | "situacao_tributaria": "900",
23 | "bc_icms": "100.00",
24 | "valor_icms": "18.00"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscalComplementar_Impostos.json:
--------------------------------------------------------------------------------
1 | {
2 | "nfe_referenciada": "00000000000000000000000000000000000000000000",
3 | "operacao": 1,
4 | "natureza_operacao": "Natureza da operação",
5 | "ambiente": 2,
6 | "cliente": {
7 | "cpf": "000.000.000-00",
8 | "nome_completo": "Nome completo",
9 | "endereco": "Av. Brg. Faria Lima",
10 | "complemento": "Escritorio",
11 | "numero": 1000,
12 | "bairro": "Itaim Bibi",
13 | "cidade": "São Paulo",
14 | "uf": "SP",
15 | "cep": "00000-000",
16 | "telefone": "(00) 0000-0000",
17 | "email": "nome@email.com"
18 | },
19 | "impostos": {
20 | "icms": {
21 | "codigo_cfop": "6.102",
22 | "situacao_tributaria": "900",
23 | "bc_icms": "100.00",
24 | "valor_icms": "18.00"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscalComplementar_PrecoQuantidade.json:
--------------------------------------------------------------------------------
1 | {
2 | "nfe_referenciada": "00000000000000000000000000000000000000000000",
3 | "operacao": 1,
4 | "natureza_operacao": "Natureza da operação",
5 | "ambiente": 2,
6 | "cliente": {
7 | "cpf": "000.000.000-00",
8 | "nome_completo": "Nome completo",
9 | "endereco": "Av. Brg. Faria Lima",
10 | "complemento": "Escritorio",
11 | "numero": 1000,
12 | "bairro": "Itaim Bibi",
13 | "cidade": "São Paulo",
14 | "uf": "SP",
15 | "cep": "00000-000",
16 | "telefone": "(00) 0000-0000",
17 | "email": "nome@email.com"
18 | },
19 | "produtos": [{
20 | "nome": "Nome do produto",
21 | "codigo": "nome-do-produto",
22 | "ncm": "6109.10.00",
23 | "cest": "28.038.00",
24 | "quantidade": 1,
25 | "unidade": "UN",
26 | "origem": 0,
27 | "subtotal": "29.90",
28 | "total": "29.90",
29 | "impostos": {
30 | "icms": {
31 | "codigo_cfop": "6.102",
32 | "situacao_tributaria": "102"
33 | }
34 | }
35 | }]
36 | }
37 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscalDevolucao.json:
--------------------------------------------------------------------------------
1 | {
2 | "chave": "00000000000000000000000000000000000000000000",
3 | "natureza_operacao": "Devolução de venda de produção do estabelecimento",
4 | "codigo_cfop": "1.202",
5 | "produtos": [ 2, 3 ],
6 | "quantidade": [ 5, 1 ],
7 | "ambiente": "2",
8 | "volume": "1"
9 | }
10 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Armamentos.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": 1137,
3 | "url_notificacao": "http://meudominio.com/retorno.php",
4 | "operacao": 1,
5 | "natureza_operacao": "Venda de produção do estabelecimento",
6 | "modelo": 1,
7 | "finalidade": 1,
8 | "ambiente": 2,
9 | "cliente": {
10 | "cpf": "000.000.000-00",
11 | "nome_completo": "Nome do Cliente",
12 | "endereco": "Av. Brg. Faria Lima",
13 | "complemento": "Escritório",
14 | "numero": 1000,
15 | "bairro": "Itaim Bibi",
16 | "cidade": "São Paulo",
17 | "uf": "SP",
18 | "cep": "00000-000",
19 | "telefone": "(00) 0000-0000",
20 | "email": "nome@email.com"
21 | },
22 | "produtos": [
23 | {
24 | "nome": "Nome do produto",
25 | "codigo": "nome-do-produto",
26 | "ncm": "6109.10.00",
27 | "cest": "28.038.00",
28 | "quantidade": 3,
29 | "unidade": "UN",
30 | "peso": "0.800",
31 | "origem": 0,
32 | "subtotal": "44.90",
33 | "total": "134.70",
34 | "classe_imposto": "REF2892",
35 | "armamentos": {
36 | "tipo": 0,
37 | "serie_arma": "000000",
38 | "serie_cano": "000000",
39 | "descricao": "..."
40 | }
41 | }
42 | ],
43 | "pedido": {
44 | "pagamento": 0,
45 | "presenca": 2,
46 | "modalidade_frete": 0,
47 | "frete": "12.56",
48 | "desconto": "10.00",
49 | "total": "174.60"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Combustivel.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": 1137,
3 | "url_notificacao": "http://meudominio.com/retorno.php",
4 | "operacao": 1,
5 | "natureza_operacao": "Venda de produção do estabelecimento",
6 | "modelo": 1,
7 | "finalidade": 1,
8 | "ambiente": 2,
9 | "cliente": {
10 | "cpf": "000.000.000-00",
11 | "nome_completo": "Nome do Cliente",
12 | "endereco": "Av. Brg. Faria Lima",
13 | "complemento": "Escritório",
14 | "numero": 1000,
15 | "bairro": "Itaim Bibi",
16 | "cidade": "São Paulo",
17 | "uf": "SP",
18 | "cep": "00000-000",
19 | "telefone": "(00) 0000-0000",
20 | "email": "nome@email.com"
21 | },
22 | "produtos": [
23 | {
24 | "nome": "Nome do produto",
25 | "codigo": "nome-do-produto",
26 | "ncm": "6109.10.00",
27 | "cest": "28.038.00",
28 | "quantidade": 3,
29 | "unidade": "UN",
30 | "peso": "0.800",
31 | "origem": 0,
32 | "subtotal": "44.90",
33 | "total": "134.70",
34 | "classe_imposto": "REF2892",
35 | "combustiveis": {
36 | "codigo_anp": "000001",
37 | "descricao_anp": "Descrição do produto conforme ANP",
38 | "uf_consumo": "SP"
39 | }
40 | }
41 | ],
42 | "pedido": {
43 | "pagamento": 0,
44 | "presenca": 2,
45 | "modalidade_frete": 0,
46 | "frete": "12.56",
47 | "desconto": "10.00",
48 | "total": "174.60"
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Medicamentos.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": 1137,
3 | "url_notificacao": "http://meudominio.com/retorno.php",
4 | "operacao": 1,
5 | "natureza_operacao": "Venda de produção do estabelecimento",
6 | "modelo": 1,
7 | "finalidade": 1,
8 | "ambiente": 2,
9 | "cliente": {
10 | "cpf": "000.000.000-00",
11 | "nome_completo": "Nome do Cliente",
12 | "endereco": "Av. Brg. Faria Lima",
13 | "complemento": "Escritório",
14 | "numero": 1000,
15 | "bairro": "Itaim Bibi",
16 | "cidade": "São Paulo",
17 | "uf": "SP",
18 | "cep": "00000-000",
19 | "telefone": "(00) 0000-0000",
20 | "email": "nome@email.com"
21 | },
22 | "produtos": [
23 | {
24 | "nome": "Nome do produto",
25 | "codigo": "nome-do-produto",
26 | "ncm": "6109.10.00",
27 | "cest": "28.038.00",
28 | "quantidade": 3,
29 | "unidade": "UN",
30 | "peso": "0.800",
31 | "origem": 0,
32 | "subtotal": "44.90",
33 | "total": "134.70",
34 | "classe_imposto": "REF2892",
35 | "medicamento": {
36 | "codigo_anvisa": "1234567891234",
37 | "pmc": "10.00"
38 | },
39 | "rastro": {
40 | "lote": "000001",
41 | "quantidade": "100",
42 | "data_fabricacao": "2018-01-01",
43 | "data_validade": "2020-01-01"
44 | }
45 | }
46 | ],
47 | "pedido": {
48 | "pagamento": 0,
49 | "presenca": 2,
50 | "modalidade_frete": 0,
51 | "frete": "12.56",
52 | "desconto": "10.00",
53 | "total": "174.60"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Rastreabilidade.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": 1137,
3 | "url_notificacao": "http://meudominio.com/retorno.php",
4 | "operacao": 1,
5 | "natureza_operacao": "Venda de produção do estabelecimento",
6 | "modelo": 1,
7 | "finalidade": 1,
8 | "ambiente": 2,
9 | "cliente": {
10 | "cpf": "000.000.000-00",
11 | "nome_completo": "Nome do Cliente",
12 | "endereco": "Av. Brg. Faria Lima",
13 | "complemento": "Escritório",
14 | "numero": 1000,
15 | "bairro": "Itaim Bibi",
16 | "cidade": "São Paulo",
17 | "uf": "SP",
18 | "cep": "00000-000",
19 | "telefone": "(00) 0000-0000",
20 | "email": "nome@email.com"
21 | },
22 | "produtos": [
23 | {
24 | "nome": "Nome do produto",
25 | "codigo": "nome-do-produto",
26 | "ncm": "6109.10.00",
27 | "cest": "28.038.00",
28 | "quantidade": 3,
29 | "unidade": "UN",
30 | "peso": "0.800",
31 | "origem": 0,
32 | "subtotal": "44.90",
33 | "total": "134.70",
34 | "classe_imposto": "REF2892",
35 | "rastro": {
36 | "lote": "000001",
37 | "quantidade": "100",
38 | "data_fabricacao": "2018-01-01",
39 | "data_validade": "2020-01-01"
40 | }
41 | }
42 | ],
43 | "pedido": {
44 | "pagamento": 0,
45 | "presenca": 2,
46 | "modalidade_frete": 0,
47 | "frete": "12.56",
48 | "desconto": "10.00",
49 | "total": "174.60"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/emitirNotaFiscal_VeiculosNovos.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": 1137,
3 | "url_notificacao": "http://meudominio.com/retorno.php",
4 | "operacao": 1,
5 | "natureza_operacao": "Venda de produção do estabelecimento",
6 | "modelo": 1,
7 | "finalidade": 1,
8 | "ambiente": 2,
9 | "cliente": {
10 | "cpf": "000.000.000-00",
11 | "nome_completo": "Nome do Cliente",
12 | "endereco": "Av. Brg. Faria Lima",
13 | "complemento": "Escritório",
14 | "numero": 1000,
15 | "bairro": "Itaim Bibi",
16 | "cidade": "São Paulo",
17 | "uf": "SP",
18 | "cep": "00000-000",
19 | "telefone": "(00) 0000-0000",
20 | "email": "nome@email.com"
21 | },
22 | "produtos": [
23 | {
24 | "nome": "Nome do produto",
25 | "codigo": "nome-do-produto",
26 | "ncm": "6109.10.00",
27 | "cest": "28.038.00",
28 | "quantidade": 3,
29 | "unidade": "UN",
30 | "peso": "0.800",
31 | "origem": 0,
32 | "subtotal": "44.90",
33 | "total": "134.70",
34 | "classe_imposto": "REF2892",
35 | "veiculos_novos": {
36 | "tipo_operacao": "1",
37 | "chassi": "00000000000000000",
38 | "cor": "A1",
39 | "cor_descricao": "Descrição da Cor",
40 | "cv": "100",
41 | "cilindrada": "1000",
42 | "peso_liquido": "2.5000",
43 | "peso_bruto": "2.5000",
44 | "serie": "00001",
45 | "tipo_combustivel": "16",
46 | "numero_motor": "00001",
47 | "cmt": "2.000",
48 | "dist": "150",
49 | "ano_modelo": "2019",
50 | "ano_fabricacao": "2018",
51 | "tipo_pintura": "Tipo de Pintura",
52 | "tipo_veiculo": "06",
53 | "especie_veiculo": "1",
54 | "vin": "N",
55 | "condicao_veiculo": "1",
56 | "marca_modelo": "00001",
57 | "cor_denatran": "04",
58 | "lotacao": "5",
59 | "restricao": "0"
60 | }
61 | }
62 | ],
63 | "pedido": {
64 | "pagamento": 0,
65 | "presenca": 2,
66 | "modalidade_frete": 0,
67 | "frete": "12.56",
68 | "desconto": "10.00",
69 | "total": "174.60"
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/WebmaniaBR/ExemploJSON/inutilizarNumeracao.json:
--------------------------------------------------------------------------------
1 | {
2 | "sequencia": "101-109",
3 | "motivo": "Inutilização por problemas técnicos.",
4 | "ambiente": "2",
5 | "serie": "99",
6 | "modelo": "1"
7 | }
--------------------------------------------------------------------------------
/WebmaniaBR/NFe.java:
--------------------------------------------------------------------------------
1 | package WebmaniaBR;
2 |
3 | // Classe para configuração de credenciais de acesso
4 | import WebmaniaBR.config.Credenciais;
5 |
6 | // Demais importações
7 | import java.io.BufferedReader;
8 | import java.io.DataOutputStream;
9 | import java.io.FileReader;
10 | import java.io.IOException;
11 | import java.io.InputStreamReader;
12 | import java.net.HttpURLConnection;
13 | import java.net.URL;
14 | import org.json.JSONObject;
15 | import org.json.simple.parser.JSONParser;
16 | import org.json.simple.parser.ParseException;
17 |
18 | public class NFe extends Credenciais{
19 |
20 | // Tramamento da resposta retornado pela API
21 | public Object trataRespostaApi(InputStreamReader input) throws IOException{
22 |
23 | try {
24 |
25 | // Recebe a resposta da API, trata e converte para ObjetoJson
26 | BufferedReader in = new BufferedReader(input);
27 | String inputLine;
28 | StringBuilder response = new StringBuilder();
29 |
30 | while ((inputLine = in.readLine()) != null) {
31 | response.append(inputLine);
32 | }
33 |
34 | // Finaliza buffer
35 | input.close();
36 |
37 | // Objeto JSON para facilitar o tratamento dos dados.
38 | JSONObject json_input = new JSONObject(response.toString());
39 |
40 | return json_input;
41 |
42 | }catch(IOException e) {
43 | System.out.println("Erro: "+e);
44 | }
45 |
46 | return null;
47 |
48 | }
49 |
50 | /**
51 | * Cancelar Nota Fiscal
52 | *
53 | * Atenção: Somente poderá ser cancelada uma NF-e cujo uso tenha sido previamente
54 | * autorizado pelo Fisco e desde que não tenha ainda ocorrido o fato gerador, ou seja,
55 | * ainda não tenha ocorrido a saída da mercadoria do estabelecimento. Atualmente o prazo
56 | * máximo para cancelamento de uma NF-e é de 24 horas (1 dia), contado a partir da autorização
57 | * de uso. Caso já tenha passado o prazo de 24 horas ou já tenha ocorrido a circulação da
58 | * mercadoria, emita uma NF-e de devolução para anular a NF-e anterior.
59 | */
60 | public String cancelarNotaFiscal() throws IOException, ParseException {
61 |
62 | /*
63 | * FileReader lê o arquivo cancelarNotaFiscal.json, caso os dados venha de um
64 | * formulário ou banco de dados passar o objeto com os dados diretamente
65 | * no .parse(object) e ignorar essa linha de código.
66 | */
67 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/cancelarNotaFiscal.json");
68 |
69 | // Objeto com os dados para ser enviados a API.
70 | Object json_output = new JSONParser().parse(file_json);
71 |
72 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
73 | JSONObject json_input = null;
74 |
75 | // Define a URL da API
76 | URL url = new URL("https://webmaniabr.com/api/1/nfe/cancelar/");
77 |
78 | // Prepara a conexão
79 | HttpURLConnection con = this.preparaConexao(url, "PUT");
80 |
81 | // Permite a conexão atual a enviar e receber dados
82 | con.setDoOutput(true);
83 | con.setDoInput(true);
84 |
85 | try{
86 |
87 | // Envia os dados para API e fecha a conexão de saida
88 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
89 | output.write(json_output.toString().getBytes());
90 | output.flush();
91 | output.close();
92 |
93 | // Trata a resposta da API e retorna para um JSONObject
94 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
95 |
96 | //Finaliza a conexão
97 | con.disconnect();
98 |
99 | try{
100 |
101 | // Exibi um atributo especifico do retorno da API
102 | System.out.println(json_input.getString("status"));
103 |
104 | return json_input.toString();
105 |
106 | } catch(Exception e){
107 | System.out.println("Erro: "+ json_input.getString("error"));
108 | }
109 |
110 | }catch(IOException e){
111 | System.out.println("Erro: "+e);
112 | System.out.println("Erro: "+ con.getResponseMessage());
113 | }
114 | return null;
115 | }
116 |
117 | /**
118 | * Informações da Carta de Correção
119 | *
120 | * A Carta de Correção Eletrônica (CC-e) é um evento legal e tem por objetivo
121 | * corrigir algumas informações da NF-e que já foi emitida.
122 | */
123 | public String cartaCorrecao() throws IOException, ParseException {
124 | /*
125 | * FileReader lê o arquivo cartaCorrecao.json, caso os dados venha de um
126 | * formulário ou banco de dados, passar o objeto com os dados diretamente
127 | * no .parse(object) e ignorar essa linha de código.
128 | */
129 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/cartaCorrecao.json");
130 |
131 | // Objeto com os dados para ser enviados a API.
132 | Object json_output = new JSONParser().parse(file_json);
133 |
134 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
135 | JSONObject json_input = null;
136 |
137 | // Define a URL da API
138 | URL url = new URL("https://webmaniabr.com/api/1/nfe/cartacorrecao/");
139 |
140 | // Prepara a conexão
141 | HttpURLConnection con = this.preparaConexao(url, "POST");
142 |
143 | // Permite a conexão atual a enviar e receber dados
144 | con.setDoOutput(true);
145 | con.setDoInput(true);
146 |
147 | try{
148 |
149 | // Envia os dados para API e fecha a conexão de saida
150 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
151 | output.write(json_output.toString().getBytes());
152 | output.flush();
153 | output.close();
154 |
155 | // Trata a resposta da API e retorna para um JSONObject
156 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
157 |
158 | //Finaliza a conexão
159 | con.disconnect();
160 |
161 | try{
162 | // Exibi um atributo especifico do retorno da API
163 | System.out.println(json_input.getString("status"));
164 |
165 | return json_input.toString();
166 |
167 | } catch(Exception e){
168 | System.out.println("Erro: "+ json_input.getString("error"));
169 | }
170 |
171 | }catch(IOException e){
172 | System.out.println("Erro: "+e);
173 | System.out.println("Erro: "+ con.getResponseMessage());
174 | }
175 |
176 | return null;
177 | }
178 |
179 | /**
180 | * Consulta de Nota fiscal
181 | *
182 | * Atenção: Somente é permitido consultar a chave da nota fiscal emitida pelo
183 | * emissor da WebmaniaBR, não sendo possível consultar nota fiscal de terceiro
184 | * ou emitida em outro sistema.
185 | */
186 | public String consultarNotaFiscal() throws IOException, ParseException {
187 |
188 | // Atributos para consulta método GET
189 | String chave = "00000000000000000000000000000000000000000000";
190 | int ambiente = 2;
191 |
192 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
193 | JSONObject json_input = null;
194 |
195 | // Define a URL da API
196 | URL url = new URL("https://webmaniabr.com/api/1/nfe/consulta/?chave="+chave+"&ambiente="+ambiente);
197 |
198 | // Prepara a conexão
199 | HttpURLConnection con = this.preparaConexao(url, "GET");
200 |
201 | // Permite a conexão atual a enviar e receber dados
202 | con.setDoOutput(true);
203 | con.setDoInput(true);
204 |
205 | try{
206 |
207 | // Trata a resposta da API e retorna para um JSONObject
208 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
209 |
210 | //Finaliza a conexão
211 | con.disconnect();
212 |
213 | try{
214 |
215 | // Exibi um atributo especifico do retorno da API
216 | System.out.println(json_input.get("status"));
217 |
218 | return json_input.toString();
219 |
220 | } catch(Exception e){
221 | System.out.println("Erro: "+ json_input.getString("error"));
222 | }
223 |
224 | }catch(IOException e){
225 | System.out.println("Erro: "+e);
226 | System.out.println("Erro: "+ con.getResponseMessage());
227 | }
228 |
229 | return null;
230 | }
231 |
232 | // Emissão de Nota Fiscal Eletrônica com detalhamento específico de armamentos
233 | public String emitirNotaFiscal_Armamentos() throws IOException, ParseException {
234 | /*
235 | * FileReader lê o arquivo emitirNotaFiscal_Armamentos.json, caso os dados venha de um
236 | * formulário ou banco de dados passar o objeto com os dados diretamente
237 | * no .parse(object) e ignorar essa linha de código.
238 | */
239 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Armamentos.json");
240 |
241 | // Objeto com os dados para ser enviados a API.
242 | Object json_output = new JSONParser().parse(file_json);
243 |
244 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
245 | JSONObject json_input = null;
246 |
247 | // Define a URL da API
248 | URL url = new URL("https://webmaniabr.com/api/1/nfe/emissao/");
249 |
250 | // Prepara a conexão
251 | HttpURLConnection con = this.preparaConexao(url, "POST");
252 |
253 | // Permite a conexão atual a enviar e receber dados
254 | con.setDoOutput(true);
255 | con.setDoInput(true);
256 |
257 | try{
258 |
259 | // Envia os dados para API e fecha a conexão de saida
260 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
261 | output.write(json_output.toString().getBytes());
262 | output.flush();
263 | output.close();
264 |
265 | // Trata a resposta da API e retorna para um JSONObject
266 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
267 |
268 | // Finaliza conexão
269 | con.disconnect();
270 |
271 | try{
272 |
273 | // Exibi um atributo especifico do retorno da API
274 | System.out.println(json_input.get("chave"));
275 |
276 | return json_input.toString();
277 |
278 | } catch(Exception e){
279 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
280 | }
281 |
282 | }catch(IOException e){
283 | System.out.println("Erro: "+e.getMessage());
284 | System.out.println("Erro: "+con.getResponseMessage());
285 | }
286 |
287 | return null;
288 | }
289 |
290 | // Emissão de Nota Fiscal Eletrônica com detalhamento específico de combustível
291 | public String emitirNotaFiscal_Combustivel() throws IOException, ParseException {
292 | /*
293 | * FileReader lê o arquivo emitirNotaFiscal_Combustivel.json, caso os dados venha de um
294 | * formulário ou banco de dados passar o objeto com os dados diretamente
295 | * no .parse(object) e ignorar essa linha de código.
296 | */
297 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Combustivel.json");
298 |
299 | // Objeto com os dados para ser enviados a API.
300 | Object json_output = new JSONParser().parse(file_json);
301 |
302 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
303 | JSONObject json_input = null;
304 |
305 | // Define a URL da API
306 | URL url = new URL("https://webmaniabr.com/api/1/nfe/emissao/");
307 |
308 | // Prepara a conexão
309 | HttpURLConnection con = this.preparaConexao(url, "POST");
310 |
311 | // Permite a conexão atual a enviar e receber dados
312 | con.setDoOutput(true);
313 | con.setDoInput(true);
314 |
315 | try{
316 |
317 | // Envia os dados para API e fecha a conexão de saida
318 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
319 | output.write(json_output.toString().getBytes());
320 | output.flush();
321 | output.close();
322 |
323 | // Trata a resposta da API e retorna para um JSONObject
324 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
325 |
326 | // Finaliza conexão
327 | con.disconnect();
328 |
329 | try{
330 |
331 | // Exibi um atributo especifico do retorno da API
332 | System.out.println(json_input.get("chave"));
333 |
334 | return json_input.toString();
335 |
336 | } catch(Exception e){
337 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
338 | }
339 |
340 | }catch(IOException e){
341 | System.out.println("Erro: "+e.getMessage());
342 | System.out.println("Erro: "+con.getResponseMessage());
343 | }
344 |
345 | return null;
346 | }
347 |
348 | // Emissão de Nota Fiscal Eletrônica com detalhamento específico de medicamentos
349 | public String emitirNotaFiscal_Medicamentos() throws IOException, ParseException {
350 | /*
351 | * FileReader lê o arquivo emitirNotaFiscal_Medicamentos.json, caso os dados venha de um
352 | * formulário ou banco de dados passar o objeto com os dados diretamente
353 | * no .parse(object) e ignorar essa linha de código.
354 | */
355 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Medicamentos.json");
356 |
357 | // Objeto com os dados para ser enviados a API.
358 | Object json_output = new JSONParser().parse(file_json);
359 |
360 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
361 | JSONObject json_input = null;
362 |
363 | // Define a URL da API
364 | URL url = new URL("https://webmaniabr.com/api/1/nfe/emissao/");
365 |
366 | // Prepara a conexão
367 | HttpURLConnection con = this.preparaConexao(url, "POST");
368 |
369 | // Permite a conexão atual a enviar e receber dados
370 | con.setDoOutput(true);
371 | con.setDoInput(true);
372 |
373 | try{
374 |
375 | // Envia os dados para API e fecha a conexão de saida
376 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
377 | output.write(json_output.toString().getBytes());
378 | output.flush();
379 | output.close();
380 |
381 | // Trata a resposta da API e retorna para um JSONObject
382 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
383 |
384 | // Finaliza conexão
385 | con.disconnect();
386 |
387 | try{
388 |
389 | // Exibi um atributo especifico do retorno da API
390 | System.out.println(json_input.get("chave"));
391 |
392 | return json_input.toString();
393 |
394 | } catch(Exception e){
395 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
396 | }
397 |
398 | }catch(IOException e){
399 | System.out.println("Erro: "+e.getMessage());
400 | System.out.println("Erro: "+con.getResponseMessage());
401 | }
402 |
403 | return null;
404 | }
405 |
406 | // Emissão de Nota Fiscal Eletrônica com detalhamento específico de rastreabilidade
407 | public String emitirNotaFiscal_Rastreabilidade() throws IOException, ParseException {
408 | /*
409 | * FileReader lê o arquivo emitirNotaFiscal_Rastreabilidade.json, caso os dados venha de um
410 | * formulário ou banco de dados passar o objeto com os dados diretamente
411 | * no .parse(object) e ignorar essa linha de código.
412 | */
413 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscal_Rastreabilidade.json");
414 |
415 | // Objeto com os dados para ser enviados a API.
416 | Object json_output = new JSONParser().parse(file_json);
417 |
418 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
419 | JSONObject json_input = null;
420 |
421 | // Define a URL da API
422 | URL url = new URL("https://webmaniabr.com/api/1/nfe/emissao/");
423 |
424 | // Prepara a conexão
425 | HttpURLConnection con = this.preparaConexao(url, "POST");
426 |
427 | // Permite a conexão atual a enviar e receber dados
428 | con.setDoOutput(true);
429 | con.setDoInput(true);
430 |
431 | try{
432 |
433 | // Envia os dados para API e fecha a conexão de saida
434 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
435 | output.write(json_output.toString().getBytes());
436 | output.flush();
437 | output.close();
438 |
439 | // Trata a resposta da API e retorna para um JSONObject
440 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
441 |
442 | // Finaliza conexão
443 | con.disconnect();
444 |
445 | try{
446 |
447 | // Exibi um atributo especifico do retorno da API
448 | System.out.println(json_input.get("chave"));
449 |
450 | return json_input.toString();
451 |
452 | } catch(Exception e){
453 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
454 | }
455 |
456 | }catch(IOException e){
457 | System.out.println("Erro: "+e.getMessage());
458 | System.out.println("Erro: "+con.getResponseMessage());
459 | }
460 |
461 | return null;
462 | }
463 |
464 | // Emissão de Nota Fiscal Eletrônica com detalhamento específico de rastreabilidade
465 | public String emitirNotaFiscal_VeiculosNovos() throws IOException, ParseException {
466 | /*
467 | * FileReader lê o arquivo emitirNotaFiscal_VeiculosNovos.json, caso os dados venha de um
468 | * formulário ou banco de dados passar o objeto com os dados diretamente
469 | * no .parse(object) e ignorar essa linha de código.
470 | */
471 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscal_VeiculosNovos.json");
472 |
473 | // Objeto com os dados para ser enviados a API.
474 | Object json_output = new JSONParser().parse(file_json);
475 |
476 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
477 | JSONObject json_input = null;
478 |
479 | // Define a URL da API
480 | URL url = new URL("https://webmaniabr.com/api/1/nfe/emissao/");
481 |
482 | // Prepara a conexão
483 | HttpURLConnection con = this.preparaConexao(url, "POST");
484 |
485 | // Permite a conexão atual a enviar e receber dados
486 | con.setDoOutput(true);
487 | con.setDoInput(true);
488 |
489 | try{
490 |
491 | // Envia os dados para API e fecha a conexão de saida
492 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
493 | output.write(json_output.toString().getBytes());
494 | output.flush();
495 | output.close();
496 |
497 | // Trata a resposta da API e retorna para um JSONObject
498 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
499 |
500 | // Finaliza conexão
501 | con.disconnect();
502 |
503 | try{
504 |
505 | // Exibi um atributo especifico do retorno da API
506 | System.out.println(json_input.get("chave"));
507 |
508 | return json_input.toString();
509 |
510 | } catch(Exception e){
511 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
512 | }
513 |
514 | }catch(IOException e){
515 | System.out.println("Erro: "+e.getMessage());
516 | System.out.println("Erro: "+con.getResponseMessage());
517 | }
518 |
519 | return null;
520 | }
521 |
522 | // Emissão de Nota Fiscal Eletrônica
523 | public String emitirNotaFiscal() throws IOException, ParseException {
524 | /*
525 | * FileReader lê o arquivo emitirNotaFiscal.json, caso os dados venha de um
526 | * formulário ou banco de dados passar o objeto com os dados diretamente
527 | * no .parse(object) e ignorar essa linha de código.
528 | */
529 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscal.json");
530 |
531 | // Objeto com os dados para ser enviados a API.
532 | Object json_output = new JSONParser().parse(file_json);
533 |
534 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
535 | JSONObject json_input = null;
536 |
537 | // Define a URL da API
538 | URL url = new URL("https://webmaniabr.com/api/1/nfe/emissao/");
539 |
540 | // Prepara a conexão
541 | HttpURLConnection con = this.preparaConexao(url, "POST");
542 |
543 | // Permite a conexão atual a enviar e receber dados
544 | con.setDoOutput(true);
545 | con.setDoInput(true);
546 |
547 | try{
548 |
549 | // Envia os dados para API e fecha a conexão de saida
550 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
551 | output.write(json_output.toString().getBytes());
552 | output.flush();
553 | output.close();
554 |
555 | // Trata a resposta da API e retorna para um JSONObject
556 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
557 |
558 | // Finaliza conexão
559 | con.disconnect();
560 |
561 | try{
562 |
563 | // Exibi um atributo especifico do retorno da API
564 | System.out.println(json_input.get("chave"));
565 |
566 | return json_input.toString();
567 |
568 | } catch(Exception e){
569 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
570 | }
571 |
572 | }catch(IOException e){
573 | System.out.println("Erro: "+e.getMessage());
574 | System.out.println("Erro: "+con.getResponseMessage());
575 | }
576 |
577 | return null;
578 | }
579 |
580 | /**
581 | * Informações da Nota Fiscal Eletrônica
582 | *
583 | * A Nota Fiscal de Ajuste é destinada somente para fins específicos de escrituração
584 | * contábil para empresas de Lucro Normal ou Presumido, não representando saída ou entrada
585 | * de produtos. Utilizado para nota de crédito de ICMS como transferência, ressarcimento
586 | * ou restituição do ICMS.
587 | */
588 | public String emitirNotaFiscalAjuste() throws IOException, ParseException {
589 | /* FileReader lê o arquivo emitirNotaFiscalAjuste.json, caso os dados venha de um
590 | * formulário ou banco de dados passar o objeto com os dados diretamente
591 | * no .parse(object) e ignorar essa linha de código.
592 | */
593 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscalAjuste.json");
594 |
595 | // Objeto com os dados para ser enviados a API.
596 | Object json_output = new JSONParser().parse(file_json);
597 |
598 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
599 | JSONObject json_input = null;
600 |
601 | // Define a URL da API
602 | URL url = new URL("https://webmaniabr.com/api/1/nfe/ajuste/");
603 |
604 | // Prepara a conexão
605 | HttpURLConnection con = this.preparaConexao(url, "POST");
606 |
607 | // Permite a conexão atual a enviar e receber dados
608 | con.setDoOutput(true);
609 | con.setDoInput(true);
610 |
611 | try{
612 |
613 | // Envia os dados para API e fecha a conexão de saida
614 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
615 | output.write(json_output.toString().getBytes());
616 | output.flush();
617 | output.close();
618 |
619 | // Trata a resposta da API e retorna para um JSONObject
620 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
621 |
622 | //Finaliza a conexão
623 | con.disconnect();
624 |
625 | try{
626 |
627 | // Exibi um atributo especifico do retorno da API
628 | System.out.println(json_input.get("status"));
629 |
630 | return json_input.toString();
631 |
632 | } catch(Exception e){
633 | System.out.println("Erro: "+ json_input.getString("error"));
634 | }
635 |
636 | }catch(IOException e){
637 | System.out.println("Erro: "+e);
638 | System.out.println("Erro: "+ con.getResponseMessage());
639 | }
640 |
641 | return null;
642 | }
643 |
644 | /**
645 | * Informações da Nota Fiscal Complementar
646 | *
647 | * A Nota Fiscal Complementar é destinada para acrescentar dados e valores
648 | * não informados no documento fiscal original. Utilizado para acréscimo no preço
649 | * e quantidade da mercadoria ou somar valores faltantes dos impostos ICMS, ICMS-ST e IPI.
650 | *
651 | * OBS: Deve ser complementado o Preço/Quantidade OU Impostos.
652 | * OB2: Caso deseje complementar as duas opções devem ser emitidas NF-e separadas.
653 | */
654 | public String emitirNotaFiscalComplementar_Imposto() throws IOException, ParseException {
655 | /*
656 | * FileReader lê o arquivo emitirNotaFiscalComplementar_Imposto.json, caso os dados venha de um
657 | * formulário ou banco de dados passar o objeto com os dados diretamente
658 | * no .parse(object) e ignorar essa linha de código.
659 | */
660 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscalComplementar_Imposto.json");
661 |
662 | // Objeto com os dados para ser enviados a API.
663 | Object json_output = new JSONParser().parse(file_json);
664 |
665 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
666 | JSONObject json_input = null;
667 |
668 | // Define a URL da API
669 | URL url = new URL("https://webmaniabr.com/api/1/nfe/complementar/");
670 |
671 | // Prepara a conexão
672 | HttpURLConnection con = this.preparaConexao(url, "POST");
673 |
674 | // Permite a conexão atual a enviar e receber dados
675 | con.setDoOutput(true);
676 | con.setDoInput(true);
677 |
678 | try{
679 |
680 | // Envia os dados para API e fecha a conexão de saida
681 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
682 | output.write(json_output.toString().getBytes());
683 | output.flush();
684 | output.close();
685 |
686 | // Trata a resposta da API e retorna para um JSONObject
687 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
688 |
689 | //Finaliza a conexão
690 | con.disconnect();
691 |
692 | try{
693 |
694 | // Exibi um atributo especifico do retorno da API
695 | System.out.println(json_input.get("status"));
696 |
697 | return json_input.toString();
698 |
699 | } catch(Exception e){
700 | System.out.println("Erro: "+ json_input.getString("error"));
701 | }
702 |
703 | }catch(IOException e){
704 | System.out.println("Erro: "+e);
705 | System.out.println("Erro: "+ con.getResponseMessage());
706 | }
707 |
708 | return null;
709 | }
710 |
711 | /**
712 | * Informações da Nota Fiscal Complementar
713 | *
714 | * A Nota Fiscal Complementar é destinada para acrescentar dados e valores
715 | * não informados no documento fiscal original. Utilizado para acréscimo no preço
716 | * e quantidade da mercadoria ou somar valores faltantes dos impostos ICMS, ICMS-ST e IPI.
717 | *
718 | * OBS: Deve ser complementado o Preço/Quantidade OU Impostos.
719 | * OB2: Caso deseje complementar as duas opções devem ser emitidas NF-e separadas.
720 | */
721 | public String emitirNotaFiscalComplementar_PrecoQuantidade() throws IOException, ParseException {
722 | /*
723 | * FileReader lê o arquivo emitirNotaFiscalComplementar_PrecoQuantidade.json, caso os dados venha de um
724 | * formulário ou banco de dados passar o objeto com os dados diretamente
725 | * no .parse(object) e ignorar essa linha de código.
726 | */
727 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscalComplementar_PrecoQuantidade.json");
728 |
729 | // Objeto com os dados para ser enviados a API.
730 | Object json_output = new JSONParser().parse(file_json);
731 |
732 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
733 | JSONObject json_input = null;
734 |
735 | // Define a URL da API
736 | URL url = new URL("https://webmaniabr.com/api/1/nfe/complementar/");
737 |
738 | // Prepara a conexão
739 | HttpURLConnection con = this.preparaConexao(url, "POST");
740 |
741 | // Permite a conexão atual a enviar e receber dados
742 | con.setDoOutput(true);
743 | con.setDoInput(true);
744 |
745 | try{
746 |
747 | // Envia os dados para API e fecha a conexão de saida
748 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
749 | output.write(json_output.toString().getBytes());
750 | output.flush();
751 | output.close();
752 |
753 | // Trata a resposta da API e retorna para um JSONObject
754 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
755 |
756 | //Finaliza a conexão
757 | con.disconnect();
758 |
759 | try{
760 |
761 | // Exibi um atributo especifico do retorno da API
762 | System.out.println(json_input.get("status"));
763 |
764 | return json_input.toString();
765 |
766 | } catch(Exception e){
767 | System.out.println("Erro: "+ json_input.getString("error"));
768 | }
769 |
770 | }catch(IOException e){
771 | System.out.println("Erro: "+e);
772 | System.out.println("Erro: "+ con.getResponseMessage());
773 | }
774 |
775 | return null;
776 | }
777 |
778 | // Emissão de Nota Fiscal de Devolução
779 | public String emitirNotaFiscalDevolucao() throws IOException, ParseException {
780 | /*
781 | * FileReader lê o arquivo EmissaoNotaFiscalDevolucao.json, caso os dados venha de um
782 | * formulário ou banco de dados passar o objeto com os dados diretamente
783 | * no .parse(object) e ignorar essa linha de código.
784 | */
785 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/emitirNotaFiscalDevolucao.json");
786 |
787 | // Objeto com os dados para ser enviados a API.
788 | Object json_output = new JSONParser().parse(file_json);
789 |
790 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
791 | JSONObject json_input = null;
792 |
793 | // Define a URL da API
794 | URL url = new URL("https://webmaniabr.com/api/1/nfe/devolucao/");
795 |
796 | // Prepara a conexão
797 | HttpURLConnection con = this.preparaConexao(url, "POST");
798 |
799 | // Permite a conexão atual a enviar e receber dados
800 | con.setDoOutput(true);
801 | con.setDoInput(true);
802 |
803 | try{
804 |
805 | // Envia os dados para API e fecha a conexão de saida
806 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
807 | output.write(json_output.toString().getBytes());
808 | output.flush();
809 | output.close();
810 |
811 | // Trata a resposta da API e retorna para um JSONObject
812 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
813 |
814 | //Finaliza a conexão
815 | con.disconnect();
816 |
817 | try{
818 |
819 | // Exibi um atributo especifico do retorno da API
820 | System.out.println(json_input.get("log"));
821 |
822 | return json_input.toString();
823 |
824 | } catch(Exception e){
825 | System.out.println("Erro: "+ json_input.getString("error"));
826 | }
827 |
828 | }catch(IOException e){
829 | System.out.println("Erro: "+e);
830 | System.out.println("Erro: "+ con.getResponseMessage());
831 | }
832 |
833 | return null;
834 | }
835 |
836 | // Inutilizar numeração
837 | public String inutilizarNumeracao() throws IOException, ParseException {
838 | /*
839 | * FileReader lê o arquivo inutilizarNumeracao.json, caso os dados venha de um
840 | * formulário ou banco de dados passar o objeto com os dados diretamente
841 | * no .parse(object) e ignorar essa linha de código.
842 | */
843 | FileReader file_json = new FileReader("src/WebmaniaBR/ExemploJSON/inutilizarNumeracao.json");
844 |
845 | // Objeto com os dados para ser enviados a API.
846 | Object json_output = new JSONParser().parse(file_json);
847 |
848 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
849 | JSONObject json_input = null;
850 |
851 | // Define a URL da API
852 | URL url = new URL("https://webmaniabr.com/api/1/nfe/inutilizar/");
853 |
854 | // Prepara a conexão
855 | HttpURLConnection con = this.preparaConexao(url, "PUT");
856 |
857 | // Permite a conexão atual a enviar e receber dados
858 | con.setDoOutput(true);
859 | con.setDoInput(true);
860 |
861 | try{
862 |
863 | // Envia os dados para API e fecha a conexão de saida
864 | DataOutputStream output = new DataOutputStream(con.getOutputStream());
865 | output.write(json_output.toString().getBytes());
866 | output.flush();
867 | output.close();
868 |
869 | // Trata a resposta da API e retorna para um JSONObject
870 | json_input = (JSONObject) this.trataRespostaApi(new InputStreamReader(con.getInputStream()));
871 |
872 | //Finaliza a conexão
873 | con.disconnect();
874 |
875 | try{
876 | // Exibi um atributo especifico do retorno da API
877 | System.out.println(json_input.get("log"));
878 |
879 | return json_input.toString();
880 | } catch(Exception e){
881 | System.out.println("Erro: "+ json_input.getString("error"));
882 | }
883 |
884 | }catch(IOException e){
885 | System.out.println("Erro: "+e);
886 | System.out.println("Erro: "+ con.getResponseMessage());
887 | }
888 |
889 | return null;
890 | }
891 |
892 | /**
893 | * Status do Sefaz
894 | *
895 | * OBS: A utilização do endpoint deve ser realizada como demonstrativo do Status do
896 | * Sefaz em sua plataforma, sendo necessário trabalhar com cache de ao menos 10 minutos.
897 | * Não é necessário realizar a requisição antes da emissão de cada Nota Fiscal,
898 | * porque este procedimento é realizado de forma automática em todos os endpoints.
899 | */
900 | public String statusSefaz() throws IOException{
901 |
902 | // Define a URL da API
903 | URL url = new URL("https://webmaniabr.com/api/1/nfe/sefaz/");
904 |
905 | // Prepara a conexão
906 | HttpURLConnection con = this.preparaConexao(url, "GET");
907 |
908 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
909 | JSONObject json_input = null;
910 |
911 | try {
912 |
913 | // Trata a resposta da API e retorna para um JSONObject
914 | json_input = (JSONObject) trataRespostaApi(new InputStreamReader(con.getInputStream()));
915 |
916 | // Finaliza a conexão
917 | con.disconnect();
918 |
919 | try{
920 | // Exibi um atributo especifico do retorno da API
921 | //System.out.println(json_input.get("status"));
922 |
923 | return json_input.toString();
924 | } catch(Exception e){
925 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
926 | }
927 |
928 | } catch (IOException e) {
929 | System.out.println("Erro: "+e);
930 | System.out.println("Erro: "+ con.getResponseMessage());
931 | }
932 |
933 | return null;
934 | }
935 |
936 | // Validar dias restantes do Certificado A1
937 | public int validadeCertificadoA1() throws IOException {
938 | // Define a URL da API
939 | URL url = new URL("https://webmaniabr.com/api/1/nfe/certificado/");
940 |
941 | // Prepara a conexão
942 | HttpURLConnection con = this.preparaConexao(url, "GET");
943 |
944 | // Cria um objeto JSON para facilitar o tratamento dos dados de retorno da API
945 | JSONObject json_input = null;
946 |
947 | try {
948 |
949 | // Trata a resposta da API e retorna para um JSONObject
950 | json_input = (JSONObject) trataRespostaApi(new InputStreamReader(con.getInputStream()));
951 |
952 | // Finaliza a conexão
953 | con.disconnect();
954 |
955 | try{
956 |
957 | return Integer.parseInt(json_input.get("expiration").toString());
958 |
959 | } catch(Exception e){
960 | System.out.println("Erro retornado da API: "+ json_input.getString("error"));
961 | }
962 |
963 | } catch (IOException e) {
964 | System.out.println("Erro: "+e);
965 | System.out.println("Erro: "+ con.getResponseMessage());
966 | }
967 |
968 | return 0;
969 | }
970 |
971 | }
972 |
--------------------------------------------------------------------------------
/WebmaniaBR/config/Credenciais.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package WebmaniaBR.config;
7 |
8 | import java.io.IOException;
9 | import java.net.HttpURLConnection;
10 | import java.net.URL;
11 |
12 | /**
13 | *
14 | * @author equipe
15 | */
16 | public class Credenciais {
17 | private String X_CONSUMER_KEY;
18 | private String X_CONSUMER_SECRET;
19 | private String X_ACCESS_TOKEN;
20 | private String X_ACCESS_TOKEN_SECRET;
21 |
22 | public Credenciais() {
23 | this.X_CONSUMER_KEY = "SEU_CONSUMER_KEY";
24 | this.X_CONSUMER_SECRET = "SEU_CONSUMER_SECRET";
25 | this.X_ACCESS_TOKEN = "SEU_ACCESS_TOKEN";
26 | this.X_ACCESS_TOKEN_SECRET = "SEU_ACCESS_TOKEN_SECRET";
27 | }
28 |
29 | public String getX_CONSUMER_KEY() {
30 | return X_CONSUMER_KEY;
31 | }
32 |
33 | public void setX_CONSUMER_KEY(String X_CONSUMER_KEY) {
34 | this.X_CONSUMER_KEY = X_CONSUMER_KEY;
35 | }
36 |
37 | public String getX_CONSUMER_SECRET() {
38 | return X_CONSUMER_SECRET;
39 | }
40 |
41 | public void setX_CONSUMER_SECRET(String X_CONSUMER_SECRET) {
42 | this.X_CONSUMER_SECRET = X_CONSUMER_SECRET;
43 | }
44 |
45 | public String getX_ACCESS_TOKEN() {
46 | return X_ACCESS_TOKEN;
47 | }
48 |
49 | public void setX_ACCESS_TOKEN(String X_ACCESS_TOKEN) {
50 | this.X_ACCESS_TOKEN = X_ACCESS_TOKEN;
51 | }
52 |
53 | public String getX_ACCESS_TOKEN_SECRET() {
54 | return X_ACCESS_TOKEN_SECRET;
55 | }
56 |
57 | public void setX_ACCESS_TOKEN_SECRET(String X_ACCESS_TOKEN_SECRET) {
58 | this.X_ACCESS_TOKEN_SECRET = X_ACCESS_TOKEN_SECRET;
59 | }
60 |
61 | // Método responsável por preparar a conexão com a API
62 | public HttpURLConnection preparaConexao(URL url, String method) throws IOException {
63 |
64 | try{
65 |
66 | // Abre a conexão
67 | HttpURLConnection con = (HttpURLConnection) url.openConnection();
68 |
69 | //Declara método de envio
70 | con.setRequestMethod(method);
71 |
72 | //Adiciona os Headers
73 | con.setRequestProperty("Cache-Control", "no-cache");
74 | con.setRequestProperty("Content-Type", "application/json");
75 | con.setRequestProperty("X-Consumer-Key", this.getX_CONSUMER_KEY());
76 | con.setRequestProperty("X-Consumer-Secret", this.getX_CONSUMER_SECRET());
77 | con.setRequestProperty("X-Access-Token", this.getX_ACCESS_TOKEN());
78 | con.setRequestProperty("X-Access-Token-Secret", this.getX_ACCESS_TOKEN_SECRET());
79 |
80 | // Retorna a conexão pronta
81 | return con;
82 |
83 | } catch ( IOException e ) {
84 | System.out.println("Erro: "+e.getMessage());
85 | }
86 |
87 | return null;
88 | }
89 |
90 |
91 | }
92 |
--------------------------------------------------------------------------------