nfe-lib-node 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -93
- package/dist/Assinador.d.ts +2 -6
- package/dist/Assinador.d.ts.map +1 -1
- package/dist/Assinador.js +6 -39
- package/dist/Assinador.js.map +1 -1
- package/dist/Certificado.d.ts +27 -1
- package/dist/Certificado.d.ts.map +1 -1
- package/dist/Certificado.js +55 -4
- package/dist/Certificado.js.map +1 -1
- package/dist/NFe.d.ts +7 -4
- package/dist/NFe.d.ts.map +1 -1
- package/dist/NFe.js +7 -19
- package/dist/NFe.js.map +1 -1
- package/dist/chaveAcesso.d.ts +40 -0
- package/dist/chaveAcesso.d.ts.map +1 -0
- package/dist/chaveAcesso.js +83 -0
- package/dist/chaveAcesso.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/webservices.d.ts +14 -0
- package/dist/webservices.d.ts.map +1 -0
- package/dist/webservices.js +365 -0
- package/dist/webservices.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,93 +1,113 @@
|
|
|
1
|
-
# nfe-lib-node 🚀
|
|
2
|
-
|
|
3
|
-
Uma biblioteca Node.js em TypeScript para emissão de Nota Fiscal Eletrônica (NF-e) focada em simplicidade, segurança e sem dependência de serviços terceiros (SaaS).
|
|
4
|
-
|
|
5
|
-
Pague apenas os seus impostos, não pela emissão! 😉
|
|
6
|
-
|
|
7
|
-
## 📦 Instalação
|
|
8
|
-
|
|
9
|
-
Instale diretamente via NPM:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install nfe-lib-node
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Ou, para clonar e rodar localmente:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
git clone https://github.com/rafconrado/nfe-lib-node.git
|
|
19
|
-
cd nfe-lib-node
|
|
20
|
-
npm install
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## 🚀 Como usar
|
|
24
|
-
|
|
25
|
-
A arquitetura foi pensada para ser o mais simples possível. Você só precisa do seu Certificado Digital A1 (`.pfx`).
|
|
26
|
-
|
|
27
|
-
### 1. Consultar Status do Serviço (SEFAZ)
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
import { NFe, Certificado } from 'nfe-lib-node';
|
|
31
|
-
import fs from 'fs';
|
|
32
|
-
|
|
33
|
-
async function testarSefaz() {
|
|
34
|
-
const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
console.log(
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
1
|
+
# nfe-lib-node 🚀
|
|
2
|
+
|
|
3
|
+
Uma biblioteca Node.js em TypeScript para emissão de Nota Fiscal Eletrônica (NF-e) focada em simplicidade, segurança e sem dependência de serviços terceiros (SaaS).
|
|
4
|
+
|
|
5
|
+
Pague apenas os seus impostos, não pela emissão! 😉
|
|
6
|
+
|
|
7
|
+
## 📦 Instalação
|
|
8
|
+
|
|
9
|
+
Instale diretamente via NPM:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install nfe-lib-node
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Ou, para clonar e rodar localmente:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
git clone https://github.com/rafconrado/nfe-lib-node.git
|
|
19
|
+
cd nfe-lib-node
|
|
20
|
+
npm install
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 🚀 Como usar
|
|
24
|
+
|
|
25
|
+
A arquitetura foi pensada para ser o mais simples possível. Você só precisa do seu Certificado Digital A1 (`.pfx`).
|
|
26
|
+
|
|
27
|
+
### 1. Validar Certificado e Consultar Status do Serviço (SEFAZ)
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { NFe, Certificado } from 'nfe-lib-node';
|
|
31
|
+
import fs from 'fs';
|
|
32
|
+
|
|
33
|
+
async function testarSefaz() {
|
|
34
|
+
const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
|
|
35
|
+
|
|
36
|
+
// Opcional: Inspecionar dados e validade do Certificado A1 (ICP-Brasil)
|
|
37
|
+
const dadosCert = certificado.getDados();
|
|
38
|
+
console.log(`Titular: ${dadosCert.nomeComum} (${dadosCert.cnpjOuCpf})`);
|
|
39
|
+
console.log(`Válido: ${dadosCert.estaValido} (${dadosCert.diasParaVencer} dias restantes)`);
|
|
40
|
+
|
|
41
|
+
const nfe = new NFe({ uf: 'DF', ambiente: 'homologacao', certificado });
|
|
42
|
+
|
|
43
|
+
const status = await nfe.consultarStatus();
|
|
44
|
+
console.log(status.xml);
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. Emitir uma NF-e (Autorização) e Gerar DANFE em PDF
|
|
49
|
+
|
|
50
|
+
A biblioteca cuida da infraestrutura completa (Tipagem do Layout 4.00, Assinatura XMLDSig, comunicação SOAP e geração de DANFE em PDF sem dependências pesadas):
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { NFe, Certificado, Danfe, type DadosNFe } from 'nfe-lib-node';
|
|
54
|
+
import fs from 'fs';
|
|
55
|
+
|
|
56
|
+
async function emitirNota() {
|
|
57
|
+
const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
|
|
58
|
+
const nfe = new NFe({ uf: 'DF', ambiente: 'homologacao', certificado });
|
|
59
|
+
|
|
60
|
+
const nota: DadosNFe = {
|
|
61
|
+
infNFe: {
|
|
62
|
+
'@Id': 'NFe5326...',
|
|
63
|
+
'@versao': '4.00',
|
|
64
|
+
ide: { /* ... */ },
|
|
65
|
+
emit: { /* ... */ },
|
|
66
|
+
dest: { /* ... */ },
|
|
67
|
+
det: [ /* ... */ ],
|
|
68
|
+
total: { /* ... */ },
|
|
69
|
+
transp: { /* ... */ },
|
|
70
|
+
pag: { /* ... */ }
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const resposta = await nfe.emitir(nota);
|
|
75
|
+
console.log(`Status: ${resposta.status} - ${resposta.motivo}`);
|
|
76
|
+
|
|
77
|
+
// Gera o PDF do DANFE diretamente a partir do XML assinado + retorno da SEFAZ
|
|
78
|
+
if (resposta.xmlAssinado) {
|
|
79
|
+
const pdfBuffer = Danfe.fromXml(resposta.xmlAssinado, resposta.xml);
|
|
80
|
+
fs.writeFileSync('./danfe.pdf', pdfBuffer);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## ✨ Funcionalidades Atuais
|
|
86
|
+
|
|
87
|
+
* 🔐 **Certificado Digital A1 (`.pfx`)**: Extração com cache em memória, inspeção de validade/titular (`getDados()`, `estaValido()`) e configuração de mTLS.
|
|
88
|
+
* 🔑 **Chave de Acesso (Módulo 11)**: Geração e validação da chave de 44 dígitos e cálculo automático do `cDV` (`gerarChaveAcesso`, `validarChaveAcesso`, `calcularDigitoVerificador`).
|
|
89
|
+
* ✍️ **Assinatura Digital XMLDSig**: Assinatura no padrão exigido pela SEFAZ (`rsa-sha1` / `enveloped-signature` / `c14n`).
|
|
90
|
+
* 🗺️ **Mapeamento Completo de WebServices por UF**: Resolução automática das URLs oficiais da NF-e 4.00 para todas as 27 UFs (Autorizadores próprios: AM, BA, GO, MG, MS, MT, PE, PR, RS, SP + SVAN, SVRS e contingência SVC-AN / SVC-RS).
|
|
91
|
+
* 📡 **Comunicação SEFAZ (SOAP 1.2)**: Consulta de status do serviço (`consultarStatus`) e autorização síncrona de NF-e (`emitir`) com geração automática do `<nfeProc>`.
|
|
92
|
+
* 📄 **Gerador de DANFE em PDF**: Geração nativa de PDF com código de barras `Code128C` via `Danfe.fromXml()`.
|
|
93
|
+
* 📘 **Tipagem TypeScript Completa**: Interfaces completas da NF-e / NFC-e 4.00 (incluindo os novos grupos de IBS/CBS da Reforma Tributária).
|
|
94
|
+
|
|
95
|
+
## 🛡️ Segurança
|
|
96
|
+
|
|
97
|
+
* **Nunca** faça commit do seu arquivo `.pfx` ou da sua senha para o GitHub.
|
|
98
|
+
* O arquivo `.gitignore` já vem configurado para ignorar extensões de certificados por padrão.
|
|
99
|
+
|
|
100
|
+
## 🤝 Contribuições
|
|
101
|
+
|
|
102
|
+
As próximas etapas envolvem suporte a eventos (Cancelamento, Carta de Correção), Consulta de Protocolo por chave e Inutilização. Toda contribuição da comunidade Node.js brasileira é bem-vinda!
|
|
103
|
+
|
|
104
|
+
## 👨💻 Autor
|
|
105
|
+
|
|
106
|
+
Criado e idealizado por **Rafael Conrado**.
|
|
107
|
+
Se você curtiu o projeto, me dê um "Alô" nas redes:
|
|
108
|
+
* [GitHub - @rafconrado](https://github.com/rafconrado)
|
|
109
|
+
* [LinkedIn](https://www.linkedin.com/in/rafconradoo/)
|
|
110
|
+
|
|
111
|
+
## 📝 Licença
|
|
112
|
+
|
|
113
|
+
MIT License
|
package/dist/Assinador.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
+
import { Certificado } from './Certificado.js';
|
|
1
2
|
export declare class Assinador {
|
|
2
3
|
private privateKeyPem;
|
|
3
4
|
private publicCertPem;
|
|
4
|
-
constructor(
|
|
5
|
-
/**
|
|
6
|
-
* Extrai a chave privada e o certificado público do PFX
|
|
7
|
-
*/
|
|
8
|
-
private extractPemFromPfx;
|
|
9
|
-
private getLeafCert;
|
|
5
|
+
constructor(certificadoOuPfx: Certificado | Buffer, password?: string | undefined);
|
|
10
6
|
/**
|
|
11
7
|
* Assina o XML da Nota Fiscal Eletrônica no padrão SEFAZ (XMLDSig)
|
|
12
8
|
*/
|
package/dist/Assinador.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Assinador.d.ts","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Assinador.d.ts","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAE9B,YAAY,gBAAgB,EAAE,WAAW,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAQhF;IAED;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqC3C;CACF"}
|
package/dist/Assinador.js
CHANGED
|
@@ -1,50 +1,17 @@
|
|
|
1
1
|
import { SignedXml } from 'xml-crypto';
|
|
2
|
-
import forge from 'node-forge';
|
|
3
2
|
import { DOMParser } from '@xmldom/xmldom';
|
|
3
|
+
import { Certificado } from './Certificado.js';
|
|
4
4
|
export class Assinador {
|
|
5
5
|
privateKeyPem;
|
|
6
6
|
publicCertPem;
|
|
7
|
-
constructor(
|
|
8
|
-
const
|
|
7
|
+
constructor(certificadoOuPfx, password) {
|
|
8
|
+
const cert = certificadoOuPfx instanceof Certificado
|
|
9
|
+
? certificadoOuPfx
|
|
10
|
+
: new Certificado(certificadoOuPfx, password);
|
|
11
|
+
const { privateKey, certificate } = cert.getPem();
|
|
9
12
|
this.privateKeyPem = privateKey;
|
|
10
13
|
this.publicCertPem = certificate;
|
|
11
14
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Extrai a chave privada e o certificado público do PFX
|
|
14
|
-
*/
|
|
15
|
-
extractPemFromPfx(pfxBuffer, password) {
|
|
16
|
-
const p12Asn1 = forge.asn1.fromDer(pfxBuffer.toString('binary'));
|
|
17
|
-
const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, password || '');
|
|
18
|
-
let privateKeyPem = '';
|
|
19
|
-
let certPem = '';
|
|
20
|
-
const certBagOid = forge.pki.oids.certBag;
|
|
21
|
-
const certBags = p12.getBags({ bagType: certBagOid })[certBagOid] ?? [];
|
|
22
|
-
const cert = this.getLeafCert(certBags);
|
|
23
|
-
if (cert) {
|
|
24
|
-
certPem = forge.pki.certificateToPem(cert);
|
|
25
|
-
}
|
|
26
|
-
const keyBagOid = forge.pki.oids.pkcs8ShroudedKeyBag;
|
|
27
|
-
const keyBags = p12.getBags({ bagType: keyBagOid });
|
|
28
|
-
const key = keyBags[keyBagOid]?.[0]?.key;
|
|
29
|
-
if (key) {
|
|
30
|
-
privateKeyPem = forge.pki.privateKeyToPem(key);
|
|
31
|
-
}
|
|
32
|
-
if (!privateKeyPem || !certPem) {
|
|
33
|
-
throw new Error('Não foi possível extrair a chave privada ou o certificado do PFX.');
|
|
34
|
-
}
|
|
35
|
-
return { privateKey: privateKeyPem, certificate: certPem };
|
|
36
|
-
}
|
|
37
|
-
getLeafCert(certBags) {
|
|
38
|
-
for (const bag of certBags) {
|
|
39
|
-
if (!bag.cert)
|
|
40
|
-
continue;
|
|
41
|
-
const isCa = bag.cert.extensions?.some((ext) => ext.name === 'basicConstraints' && ext.cA === true);
|
|
42
|
-
if (!isCa) {
|
|
43
|
-
return bag.cert;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return certBags[0]?.cert;
|
|
47
|
-
}
|
|
48
15
|
/**
|
|
49
16
|
* Assina o XML da Nota Fiscal Eletrônica no padrão SEFAZ (XMLDSig)
|
|
50
17
|
*/
|
package/dist/Assinador.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Assinador.js","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"Assinador.js","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,SAAS;IACZ,aAAa,CAAS;IACtB,aAAa,CAAS;IAE9B,YAAY,gBAAsC,EAAE,QAA6B;QAC/E,MAAM,IAAI,GACR,gBAAgB,YAAY,WAAW;YACrC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,MAAc;QACjC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,sDAAsD;QACtD,GAAG,CAAC,YAAY,CAAC;YACf,KAAK,EAAE,YAAY,EAAE,IAAI;YACzB,UAAU,EAAE;gBACV,uDAAuD;gBACvD,iDAAiD;aAClD;YACD,eAAe,EAAE,wCAAwC;YACzD,GAAG,EAAE,IAAI,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,GAAG,CAAC,kBAAkB,GAAG,4CAA4C,CAAC;QACtE,GAAG,CAAC,yBAAyB,GAAG,iDAAiD,CAAC;QAElF,8CAA8C;QAC9C,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjD,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC3B,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,EAAE;SACtE,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
package/dist/Certificado.d.ts
CHANGED
|
@@ -1,13 +1,39 @@
|
|
|
1
1
|
import https from 'https';
|
|
2
|
+
export interface DadosCertificado {
|
|
3
|
+
nomeComum: string;
|
|
4
|
+
cnpjOuCpf?: string | undefined;
|
|
5
|
+
emissor: string;
|
|
6
|
+
validoDe: Date;
|
|
7
|
+
validoAte: Date;
|
|
8
|
+
estaValido: boolean;
|
|
9
|
+
diasParaVencer: number;
|
|
10
|
+
}
|
|
2
11
|
export declare class Certificado {
|
|
3
12
|
pfxBuffer: Buffer;
|
|
4
13
|
password?: string | undefined;
|
|
14
|
+
private cacheExtraido?;
|
|
5
15
|
constructor(pfxBuffer: Buffer, password?: string | undefined);
|
|
16
|
+
/**
|
|
17
|
+
* Retorna a chave privada e o certificado público em formato PEM.
|
|
18
|
+
*/
|
|
19
|
+
getPem(): {
|
|
20
|
+
privateKey: string;
|
|
21
|
+
certificate: string;
|
|
22
|
+
};
|
|
6
23
|
/**
|
|
7
24
|
* Retorna um https.Agent configurado com o certificado para autenticação mútua TLS (exigida pela SEFAZ).
|
|
8
25
|
*/
|
|
9
26
|
getHttpsAgent(): https.Agent;
|
|
10
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Retorna metadados e informações de validade do certificado A1 (ICP-Brasil).
|
|
29
|
+
*/
|
|
30
|
+
getDados(): DadosCertificado;
|
|
31
|
+
/**
|
|
32
|
+
* Indica se o certificado está dentro do prazo de validade na data atual.
|
|
33
|
+
*/
|
|
34
|
+
estaValido(): boolean;
|
|
35
|
+
private extractFromPfx;
|
|
11
36
|
private getLeafCert;
|
|
37
|
+
private getAttrValue;
|
|
12
38
|
}
|
|
13
39
|
//# sourceMappingURL=Certificado.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Certificado.d.ts","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,qBAAa,WAAW;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Certificado.d.ts","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAQD,qBAAa,WAAW;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,aAAa,CAAC,CAA0B;IAEhD,YAAY,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAG3D;IAED;;OAEG;IACI,MAAM,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAG3D;IAED;;OAEG;IACI,aAAa,IAAI,KAAK,CAAC,KAAK,CAOlC;IAED;;OAEG;IACI,QAAQ,IAAI,gBAAgB,CAyBlC;IAED;;OAEG;IACI,UAAU,IAAI,OAAO,CAE3B;IAED,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,YAAY;CAOrB"}
|
package/dist/Certificado.js
CHANGED
|
@@ -3,22 +3,64 @@ import forge from 'node-forge';
|
|
|
3
3
|
export class Certificado {
|
|
4
4
|
pfxBuffer;
|
|
5
5
|
password;
|
|
6
|
+
cacheExtraido;
|
|
6
7
|
constructor(pfxBuffer, password) {
|
|
7
8
|
this.pfxBuffer = pfxBuffer;
|
|
8
9
|
this.password = password;
|
|
9
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Retorna a chave privada e o certificado público em formato PEM.
|
|
13
|
+
*/
|
|
14
|
+
getPem() {
|
|
15
|
+
const { privateKey, certificate } = this.extractFromPfx();
|
|
16
|
+
return { privateKey, certificate };
|
|
17
|
+
}
|
|
10
18
|
/**
|
|
11
19
|
* Retorna um https.Agent configurado com o certificado para autenticação mútua TLS (exigida pela SEFAZ).
|
|
12
20
|
*/
|
|
13
21
|
getHttpsAgent() {
|
|
14
|
-
const { privateKey, certificate } = this.
|
|
22
|
+
const { privateKey, certificate } = this.getPem();
|
|
15
23
|
return new https.Agent({
|
|
16
24
|
cert: certificate,
|
|
17
25
|
key: privateKey,
|
|
18
26
|
rejectUnauthorized: false, // Em ambientes de homologação da Sefaz, a cadeia pode ser inválida
|
|
19
27
|
});
|
|
20
28
|
}
|
|
21
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Retorna metadados e informações de validade do certificado A1 (ICP-Brasil).
|
|
31
|
+
*/
|
|
32
|
+
getDados() {
|
|
33
|
+
const { leafCert } = this.extractFromPfx();
|
|
34
|
+
const nomeComum = this.getAttrValue(leafCert.subject.attributes, 'CN');
|
|
35
|
+
const emissor = this.getAttrValue(leafCert.issuer.attributes, 'CN') ||
|
|
36
|
+
this.getAttrValue(leafCert.issuer.attributes, 'O');
|
|
37
|
+
const matchDoc = nomeComum.match(/:(\d{11}|\d{14})\b/) ?? nomeComum.match(/\b(\d{14})\b/);
|
|
38
|
+
const cnpjOuCpf = matchDoc?.[1];
|
|
39
|
+
const validoDe = leafCert.validity.notBefore;
|
|
40
|
+
const validoAte = leafCert.validity.notAfter;
|
|
41
|
+
const agora = new Date();
|
|
42
|
+
const estaValido = agora >= validoDe && agora <= validoAte;
|
|
43
|
+
const diasParaVencer = Math.floor((validoAte.getTime() - agora.getTime()) / (1000 * 60 * 60 * 24));
|
|
44
|
+
return {
|
|
45
|
+
nomeComum,
|
|
46
|
+
cnpjOuCpf,
|
|
47
|
+
emissor,
|
|
48
|
+
validoDe,
|
|
49
|
+
validoAte,
|
|
50
|
+
estaValido,
|
|
51
|
+
diasParaVencer,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Indica se o certificado está dentro do prazo de validade na data atual.
|
|
56
|
+
*/
|
|
57
|
+
estaValido() {
|
|
58
|
+
return this.getDados().estaValido;
|
|
59
|
+
}
|
|
60
|
+
extractFromPfx() {
|
|
61
|
+
if (this.cacheExtraido) {
|
|
62
|
+
return this.cacheExtraido;
|
|
63
|
+
}
|
|
22
64
|
const p12Asn1 = forge.asn1.fromDer(this.pfxBuffer.toString('binary'));
|
|
23
65
|
const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, this.password ?? '');
|
|
24
66
|
const certBagOid = forge.pki.oids.certBag;
|
|
@@ -29,10 +71,15 @@ export class Certificado {
|
|
|
29
71
|
const keyBags = p12.getBags({ bagType: keyBagOid })[keyBagOid] ?? [];
|
|
30
72
|
const key = keyBags[0]?.key;
|
|
31
73
|
const privateKeyPem = key ? forge.pki.privateKeyToPem(key) : '';
|
|
32
|
-
if (!privateKeyPem || !certPem) {
|
|
74
|
+
if (!privateKeyPem || !certPem || !cert) {
|
|
33
75
|
throw new Error('Não foi possível extrair a chave privada ou o certificado do PFX.');
|
|
34
76
|
}
|
|
35
|
-
|
|
77
|
+
this.cacheExtraido = {
|
|
78
|
+
privateKey: privateKeyPem,
|
|
79
|
+
certificate: certPem,
|
|
80
|
+
leafCert: cert,
|
|
81
|
+
};
|
|
82
|
+
return this.cacheExtraido;
|
|
36
83
|
}
|
|
37
84
|
getLeafCert(certBags) {
|
|
38
85
|
for (const bag of certBags) {
|
|
@@ -45,5 +92,9 @@ export class Certificado {
|
|
|
45
92
|
}
|
|
46
93
|
return certBags[0]?.cert;
|
|
47
94
|
}
|
|
95
|
+
getAttrValue(attributes, shortName) {
|
|
96
|
+
const field = attributes.find((attr) => attr.shortName === shortName);
|
|
97
|
+
return typeof field?.value === 'string' ? field.value : '';
|
|
98
|
+
}
|
|
48
99
|
}
|
|
49
100
|
//# sourceMappingURL=Certificado.js.map
|
package/dist/Certificado.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Certificado.js","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Certificado.js","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"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"}
|
package/dist/NFe.d.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { Certificado } from './Certificado.js';
|
|
2
2
|
import type { DadosNFe, RetornoSefaz } from './types.js';
|
|
3
|
-
|
|
3
|
+
import { type AmbienteSefaz, type AutorizadorSefaz, type ServicoSefaz, type SiglaUF } from './webservices.js';
|
|
4
|
+
export type { AmbienteSefaz } from './webservices.js';
|
|
4
5
|
export interface ConfiguracaoNFe {
|
|
5
|
-
uf: string;
|
|
6
|
+
uf: SiglaUF | (string & {});
|
|
6
7
|
ambiente: AmbienteSefaz;
|
|
7
8
|
certificado: Certificado;
|
|
9
|
+
contingencia?: boolean | undefined;
|
|
8
10
|
}
|
|
9
11
|
export declare class NFe {
|
|
10
12
|
private config;
|
|
11
13
|
private assinador;
|
|
12
14
|
constructor(config: ConfiguracaoNFe);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
getAutorizador(): AutorizadorSefaz;
|
|
16
|
+
getUrl(servico: ServicoSefaz): string;
|
|
17
|
+
getCodigoUF(): string;
|
|
15
18
|
consultarStatus(): Promise<RetornoSefaz>;
|
|
16
19
|
/**
|
|
17
20
|
* Recebe os dados da NFe em formato JS/JSON, converte para XML, assina e envia.
|
package/dist/NFe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NFe.d.ts","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"NFe.d.ts","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAY;IAE7B,YAAY,MAAM,EAAE,eAAe,EAGlC;IAEM,cAAc,IAAI,gBAAgB,CAExC;IAEM,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAO3C;IAEM,WAAW,IAAI,MAAM,CAE3B;IAEY,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAOpD;IAED;;OAEG;IACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B7D;YAEa,UAAU;CAmCzB"}
|
package/dist/NFe.js
CHANGED
|
@@ -2,34 +2,22 @@ import axios from 'axios';
|
|
|
2
2
|
import { Assinador } from './Assinador.js';
|
|
3
3
|
import { create } from 'xmlbuilder2';
|
|
4
4
|
import { DOMParser } from '@xmldom/xmldom';
|
|
5
|
+
import { obterAutorizadorPorUF, obterCodigoUF, obterUrlSefaz, } from './webservices.js';
|
|
5
6
|
export class NFe {
|
|
6
7
|
config;
|
|
7
8
|
assinador;
|
|
8
9
|
constructor(config) {
|
|
9
10
|
this.config = config;
|
|
10
|
-
this.assinador = new Assinador(config.certificado
|
|
11
|
+
this.assinador = new Assinador(config.certificado);
|
|
12
|
+
}
|
|
13
|
+
getAutorizador() {
|
|
14
|
+
return obterAutorizadorPorUF(this.config.uf, this.config.contingencia ?? false);
|
|
11
15
|
}
|
|
12
16
|
getUrl(servico) {
|
|
13
|
-
|
|
14
|
-
const baseUrl = this.config.ambiente === 'homologacao'
|
|
15
|
-
? 'https://nfe-homologacao.svrs.rs.gov.br/ws'
|
|
16
|
-
: 'https://nfe.svrs.rs.gov.br/ws';
|
|
17
|
-
if (servico === 'status') {
|
|
18
|
-
return `${baseUrl}/NfeStatusServico/NfeStatusServico4.asmx`;
|
|
19
|
-
}
|
|
20
|
-
if (servico === 'autorizacao') {
|
|
21
|
-
return `${baseUrl}/NfeAutorizacao/NFeAutorizacao4.asmx`;
|
|
22
|
-
}
|
|
23
|
-
throw new Error('Serviço desconhecido');
|
|
17
|
+
return obterUrlSefaz(this.config.uf, this.config.ambiente, servico, this.config.contingencia ?? false);
|
|
24
18
|
}
|
|
25
19
|
getCodigoUF() {
|
|
26
|
-
|
|
27
|
-
AC: '12', AL: '27', AM: '13', AP: '16', BA: '29', CE: '23', DF: '53', ES: '32',
|
|
28
|
-
GO: '52', MA: '21', MG: '31', MS: '50', MT: '51', PA: '15', PB: '25', PE: '26',
|
|
29
|
-
PI: '22', PR: '41', RJ: '33', RN: '24', RO: '11', RR: '14', RS: '43', SC: '42',
|
|
30
|
-
SE: '28', SP: '35', TO: '17',
|
|
31
|
-
};
|
|
32
|
-
return ufs[this.config.uf.toUpperCase()] || '53';
|
|
20
|
+
return obterCodigoUF(this.config.uf);
|
|
33
21
|
}
|
|
34
22
|
async consultarStatus() {
|
|
35
23
|
const url = this.getUrl('status');
|
package/dist/NFe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NFe.js","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"NFe.js","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type SiglaUF } from './webservices.js';
|
|
2
|
+
export interface ParametrosChaveAcesso {
|
|
3
|
+
/** Sigla da UF (ex: 'SP', 'DF') ou código IBGE de 2 dígitos (ex: '35', '53') */
|
|
4
|
+
uf: SiglaUF | (string & {});
|
|
5
|
+
/** Data de emissão (Date, string ISO 'YYYY-MM-DD...' ou 'AAMM') */
|
|
6
|
+
dataEmissao: Date | string;
|
|
7
|
+
/** CNPJ (14 dígitos) ou CPF (11 dígitos) do emitente */
|
|
8
|
+
cnpjOuCpf: string;
|
|
9
|
+
/** Modelo do documento fiscal ('55' para NF-e, '65' para NFC-e). Padrão: '55' */
|
|
10
|
+
modelo?: '55' | '65' | number | string | undefined;
|
|
11
|
+
/** Série do documento fiscal (1 a 3 dígitos) */
|
|
12
|
+
serie: number | string;
|
|
13
|
+
/** Número da NF-e (1 a 9 dígitos) */
|
|
14
|
+
numero: number | string;
|
|
15
|
+
/** Tipo de emissão (1 = Normal, 6 = SVC-AN, 7 = SVC-RS, 9 = Offline, etc.) */
|
|
16
|
+
tpEmis: number | string;
|
|
17
|
+
/** Código numérico aleatório de 8 dígitos que compõe a chave (cNF) */
|
|
18
|
+
cNF: number | string;
|
|
19
|
+
}
|
|
20
|
+
export interface ResultadoChaveAcesso {
|
|
21
|
+
/** Chave de acesso completa com 44 dígitos numéricos */
|
|
22
|
+
chave: string;
|
|
23
|
+
/** Dígito verificador calculado em Módulo 11 (1 dígito) */
|
|
24
|
+
cDV: string;
|
|
25
|
+
/** Identificador para a tag `<infNFe Id="NFe...">` */
|
|
26
|
+
id: `NFe${string}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Calcula o dígito verificador (cDV) em Módulo 11 a partir dos 43 primeiros dígitos da chave.
|
|
30
|
+
*/
|
|
31
|
+
export declare function calcularDigitoVerificador(chave43: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Gera a chave de acesso de 44 dígitos da NF-e/NFC-e e seu dígito verificador (cDV).
|
|
34
|
+
*/
|
|
35
|
+
export declare function gerarChaveAcesso(params: ParametrosChaveAcesso): ResultadoChaveAcesso;
|
|
36
|
+
/**
|
|
37
|
+
* Valida se uma chave de acesso (com ou sem o prefixo 'NFe') possui 44 dígitos e cDV válido.
|
|
38
|
+
*/
|
|
39
|
+
export declare function validarChaveAcesso(chaveOuId: string): boolean;
|
|
40
|
+
//# sourceMappingURL=chaveAcesso.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chaveAcesso.d.ts","sourceRoot":"","sources":["../src/chaveAcesso.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC5B,mEAAmE;IACnE,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,gDAAgD;IAChD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,qCAAqC;IACrC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,EAAE,EAAE,MAAM,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,oBAAoB,CA8BpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO7D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { obterCodigoUF } from './webservices.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calcula o dígito verificador (cDV) em Módulo 11 a partir dos 43 primeiros dígitos da chave.
|
|
4
|
+
*/
|
|
5
|
+
export function calcularDigitoVerificador(chave43) {
|
|
6
|
+
const limpa = chave43.replace(/\D/g, '');
|
|
7
|
+
if (limpa.length !== 43) {
|
|
8
|
+
throw new Error(`A base da chave de acesso deve conter exatamente 43 dígitos (recebido: ${limpa.length}).`);
|
|
9
|
+
}
|
|
10
|
+
let peso = 2;
|
|
11
|
+
let soma = 0;
|
|
12
|
+
for (let i = 42; i >= 0; i--) {
|
|
13
|
+
const digito = Number(limpa[i]);
|
|
14
|
+
soma += digito * peso;
|
|
15
|
+
peso = peso === 9 ? 2 : peso + 1;
|
|
16
|
+
}
|
|
17
|
+
const resto = soma % 11;
|
|
18
|
+
const dv = resto === 0 || resto === 1 ? 0 : 11 - resto;
|
|
19
|
+
return String(dv);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gera a chave de acesso de 44 dígitos da NF-e/NFC-e e seu dígito verificador (cDV).
|
|
23
|
+
*/
|
|
24
|
+
export function gerarChaveAcesso(params) {
|
|
25
|
+
const ufTrim = params.uf.trim();
|
|
26
|
+
const cUF = /^\d{2}$/.test(ufTrim) ? ufTrim : obterCodigoUF(ufTrim);
|
|
27
|
+
const aamm = extrairAnoMes(params.dataEmissao);
|
|
28
|
+
const docLimpo = params.cnpjOuCpf.replace(/\D/g, '');
|
|
29
|
+
if (docLimpo.length !== 11 && docLimpo.length !== 14) {
|
|
30
|
+
throw new Error('O CNPJ/CPF do emitente deve conter 11 (CPF) ou 14 (CNPJ) dígitos.');
|
|
31
|
+
}
|
|
32
|
+
const cnpj = docLimpo.padStart(14, '0');
|
|
33
|
+
const mod = String(params.modelo ?? '55').padStart(2, '0');
|
|
34
|
+
const serie = String(params.serie).replace(/\D/g, '').padStart(3, '0');
|
|
35
|
+
const nNF = String(params.numero).replace(/\D/g, '').padStart(9, '0');
|
|
36
|
+
const tpEmis = String(params.tpEmis).replace(/\D/g, '');
|
|
37
|
+
const cNF = String(params.cNF).replace(/\D/g, '').padStart(8, '0');
|
|
38
|
+
if (tpEmis.length !== 1) {
|
|
39
|
+
throw new Error('O tipo de emissão (tpEmis) deve conter exatamente 1 dígito.');
|
|
40
|
+
}
|
|
41
|
+
const base43 = `${cUF}${aamm}${cnpj}${mod}${serie}${nNF}${tpEmis}${cNF}`;
|
|
42
|
+
const cDV = calcularDigitoVerificador(base43);
|
|
43
|
+
const chave = `${base43}${cDV}`;
|
|
44
|
+
return {
|
|
45
|
+
chave,
|
|
46
|
+
cDV,
|
|
47
|
+
id: `NFe${chave}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Valida se uma chave de acesso (com ou sem o prefixo 'NFe') possui 44 dígitos e cDV válido.
|
|
52
|
+
*/
|
|
53
|
+
export function validarChaveAcesso(chaveOuId) {
|
|
54
|
+
const limpa = chaveOuId.trim().replace(/^NFe/i, '');
|
|
55
|
+
if (!/^\d{44}$/.test(limpa)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
const dvEsperado = calcularDigitoVerificador(limpa.slice(0, 43));
|
|
59
|
+
return limpa[43] === dvEsperado;
|
|
60
|
+
}
|
|
61
|
+
function extrairAnoMes(data) {
|
|
62
|
+
if (data instanceof Date) {
|
|
63
|
+
const ano = String(data.getFullYear()).slice(-2);
|
|
64
|
+
const mes = String(data.getMonth() + 1).padStart(2, '0');
|
|
65
|
+
return `${ano}${mes}`;
|
|
66
|
+
}
|
|
67
|
+
const str = data.trim();
|
|
68
|
+
if (/^\d{4}$/.test(str)) {
|
|
69
|
+
return str;
|
|
70
|
+
}
|
|
71
|
+
const matchIso = str.match(/^(\d{4})-(\d{2})/);
|
|
72
|
+
if (matchIso?.[1] && matchIso[2]) {
|
|
73
|
+
return `${matchIso[1].slice(-2)}${matchIso[2]}`;
|
|
74
|
+
}
|
|
75
|
+
const parsed = new Date(str);
|
|
76
|
+
if (!Number.isNaN(parsed.getTime())) {
|
|
77
|
+
const ano = String(parsed.getFullYear()).slice(-2);
|
|
78
|
+
const mes = String(parsed.getMonth() + 1).padStart(2, '0');
|
|
79
|
+
return `${ano}${mes}`;
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`Formato de dataEmissao inválido: "${data}". Use Date, string ISO ou 'AAMM'.`);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=chaveAcesso.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chaveAcesso.js","sourceRoot":"","sources":["../src/chaveAcesso.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AA8B/D;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0EAA0E,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;IACvD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;IACzE,MAAM,GAAG,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;IAEhC,OAAO;QACL,KAAK;QACL,GAAG;QACH,EAAE,EAAE,MAAM,KAAK,EAAE;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACxC,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,oCAAoC,CAAC,CAAC;AACjG,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
export { NFe } from './NFe.js';
|
|
2
2
|
export type { ConfiguracaoNFe, AmbienteSefaz } from './NFe.js';
|
|
3
3
|
export { Certificado } from './Certificado.js';
|
|
4
|
+
export type { DadosCertificado } from './Certificado.js';
|
|
4
5
|
export { Assinador } from './Assinador.js';
|
|
5
6
|
export { Danfe } from './Danfe.js';
|
|
7
|
+
export { AUTORIZADOR_CONTINGENCIA_POR_UF, AUTORIZADOR_POR_UF, CODIGOS_UF, URLS_SEFAZ, normalizarUF, obterAutorizadorPorUF, obterCodigoUF, obterUrlSefaz, } from './webservices.js';
|
|
8
|
+
export type { AutorizadorSefaz, MapaServicosSefaz, ServicoSefaz, SiglaUF, } from './webservices.js';
|
|
9
|
+
export { calcularDigitoVerificador, gerarChaveAcesso, validarChaveAcesso, } from './chaveAcesso.js';
|
|
10
|
+
export type { ParametrosChaveAcesso, ResultadoChaveAcesso, } from './chaveAcesso.js';
|
|
6
11
|
export type * from './types.js';
|
|
7
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,mBAAmB,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,mBAAmB,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,4 +2,6 @@ export { NFe } from './NFe.js';
|
|
|
2
2
|
export { Certificado } from './Certificado.js';
|
|
3
3
|
export { Assinador } from './Assinador.js';
|
|
4
4
|
export { Danfe } from './Danfe.js';
|
|
5
|
+
export { AUTORIZADOR_CONTINGENCIA_POR_UF, AUTORIZADOR_POR_UF, CODIGOS_UF, URLS_SEFAZ, normalizarUF, obterAutorizadorPorUF, obterCodigoUF, obterUrlSefaz, } from './webservices.js';
|
|
6
|
+
export { calcularDigitoVerificador, gerarChaveAcesso, validarChaveAcesso, } from './chaveAcesso.js';
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type AmbienteSefaz = 'producao' | 'homologacao';
|
|
2
|
+
export type SiglaUF = 'AC' | 'AL' | 'AM' | 'AP' | 'BA' | 'CE' | 'DF' | 'ES' | 'GO' | 'MA' | 'MG' | 'MS' | 'MT' | 'PA' | 'PB' | 'PE' | 'PI' | 'PR' | 'RJ' | 'RN' | 'RO' | 'RR' | 'RS' | 'SC' | 'SE' | 'SP' | 'TO';
|
|
3
|
+
export type AutorizadorSefaz = 'AM' | 'BA' | 'GO' | 'MG' | 'MS' | 'MT' | 'PE' | 'PR' | 'RS' | 'SP' | 'SVAN' | 'SVRS' | 'SVC-AN' | 'SVC-RS';
|
|
4
|
+
export type ServicoSefaz = 'status' | 'autorizacao' | 'retAutorizacao' | 'consultaProtocolo' | 'inutilizacao' | 'recepcaoEvento';
|
|
5
|
+
export type MapaServicosSefaz = Record<ServicoSefaz, string>;
|
|
6
|
+
export declare const CODIGOS_UF: Record<SiglaUF, string>;
|
|
7
|
+
export declare const AUTORIZADOR_POR_UF: Record<SiglaUF, AutorizadorSefaz>;
|
|
8
|
+
export declare const AUTORIZADOR_CONTINGENCIA_POR_UF: Record<SiglaUF, 'SVC-AN' | 'SVC-RS'>;
|
|
9
|
+
export declare const URLS_SEFAZ: Record<AutorizadorSefaz, Record<AmbienteSefaz, MapaServicosSefaz>>;
|
|
10
|
+
export declare function normalizarUF(uf: string): SiglaUF;
|
|
11
|
+
export declare function obterCodigoUF(uf: string): string;
|
|
12
|
+
export declare function obterAutorizadorPorUF(uf: string, contingencia?: boolean): AutorizadorSefaz;
|
|
13
|
+
export declare function obterUrlSefaz(uf: string, ambiente: AmbienteSefaz, servico: ServicoSefaz, contingencia?: boolean): string;
|
|
14
|
+
//# sourceMappingURL=webservices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webservices.d.ts","sourceRoot":"","sources":["../src/webservices.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;AAEvD,MAAM,MAAM,OAAO,GACf,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,aAAa,GACb,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CA4B9C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CA4BhE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CA4BhF,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CA6PzF,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMhD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,gBAAgB,CAGxF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,YAAY,UAAQ,GACnB,MAAM,CAOR"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
export const CODIGOS_UF = {
|
|
2
|
+
AC: '12',
|
|
3
|
+
AL: '27',
|
|
4
|
+
AM: '13',
|
|
5
|
+
AP: '16',
|
|
6
|
+
BA: '29',
|
|
7
|
+
CE: '23',
|
|
8
|
+
DF: '53',
|
|
9
|
+
ES: '32',
|
|
10
|
+
GO: '52',
|
|
11
|
+
MA: '21',
|
|
12
|
+
MG: '31',
|
|
13
|
+
MS: '50',
|
|
14
|
+
MT: '51',
|
|
15
|
+
PA: '15',
|
|
16
|
+
PB: '25',
|
|
17
|
+
PE: '26',
|
|
18
|
+
PI: '22',
|
|
19
|
+
PR: '41',
|
|
20
|
+
RJ: '33',
|
|
21
|
+
RN: '24',
|
|
22
|
+
RO: '11',
|
|
23
|
+
RR: '14',
|
|
24
|
+
RS: '43',
|
|
25
|
+
SC: '42',
|
|
26
|
+
SE: '28',
|
|
27
|
+
SP: '35',
|
|
28
|
+
TO: '17',
|
|
29
|
+
};
|
|
30
|
+
export const AUTORIZADOR_POR_UF = {
|
|
31
|
+
AC: 'SVRS',
|
|
32
|
+
AL: 'SVRS',
|
|
33
|
+
AM: 'AM',
|
|
34
|
+
AP: 'SVRS',
|
|
35
|
+
BA: 'BA',
|
|
36
|
+
CE: 'SVRS',
|
|
37
|
+
DF: 'SVRS',
|
|
38
|
+
ES: 'SVRS',
|
|
39
|
+
GO: 'GO',
|
|
40
|
+
MA: 'SVAN',
|
|
41
|
+
MG: 'MG',
|
|
42
|
+
MS: 'MS',
|
|
43
|
+
MT: 'MT',
|
|
44
|
+
PA: 'SVRS',
|
|
45
|
+
PB: 'SVRS',
|
|
46
|
+
PE: 'PE',
|
|
47
|
+
PI: 'SVRS',
|
|
48
|
+
PR: 'PR',
|
|
49
|
+
RJ: 'SVRS',
|
|
50
|
+
RN: 'SVRS',
|
|
51
|
+
RO: 'SVRS',
|
|
52
|
+
RR: 'SVRS',
|
|
53
|
+
RS: 'RS',
|
|
54
|
+
SC: 'SVRS',
|
|
55
|
+
SE: 'SVRS',
|
|
56
|
+
SP: 'SP',
|
|
57
|
+
TO: 'SVRS',
|
|
58
|
+
};
|
|
59
|
+
export const AUTORIZADOR_CONTINGENCIA_POR_UF = {
|
|
60
|
+
AC: 'SVC-AN',
|
|
61
|
+
AL: 'SVC-AN',
|
|
62
|
+
AM: 'SVC-RS',
|
|
63
|
+
AP: 'SVC-AN',
|
|
64
|
+
BA: 'SVC-RS',
|
|
65
|
+
CE: 'SVC-AN',
|
|
66
|
+
DF: 'SVC-AN',
|
|
67
|
+
ES: 'SVC-AN',
|
|
68
|
+
GO: 'SVC-RS',
|
|
69
|
+
MA: 'SVC-RS',
|
|
70
|
+
MG: 'SVC-AN',
|
|
71
|
+
MS: 'SVC-RS',
|
|
72
|
+
MT: 'SVC-RS',
|
|
73
|
+
PA: 'SVC-AN',
|
|
74
|
+
PB: 'SVC-AN',
|
|
75
|
+
PE: 'SVC-RS',
|
|
76
|
+
PI: 'SVC-AN',
|
|
77
|
+
PR: 'SVC-RS',
|
|
78
|
+
RJ: 'SVC-AN',
|
|
79
|
+
RN: 'SVC-AN',
|
|
80
|
+
RO: 'SVC-AN',
|
|
81
|
+
RR: 'SVC-AN',
|
|
82
|
+
RS: 'SVC-AN',
|
|
83
|
+
SC: 'SVC-AN',
|
|
84
|
+
SE: 'SVC-AN',
|
|
85
|
+
SP: 'SVC-AN',
|
|
86
|
+
TO: 'SVC-AN',
|
|
87
|
+
};
|
|
88
|
+
export const URLS_SEFAZ = {
|
|
89
|
+
AM: {
|
|
90
|
+
producao: {
|
|
91
|
+
status: 'https://nfe.sefaz.am.gov.br/services2/services/NfeStatusServico4',
|
|
92
|
+
autorizacao: 'https://nfe.sefaz.am.gov.br/services2/services/NfeAutorizacao4',
|
|
93
|
+
retAutorizacao: 'https://nfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao4',
|
|
94
|
+
consultaProtocolo: 'https://nfe.sefaz.am.gov.br/services2/services/NfeConsulta4',
|
|
95
|
+
inutilizacao: 'https://nfe.sefaz.am.gov.br/services2/services/NfeInutilizacao4',
|
|
96
|
+
recepcaoEvento: 'https://nfe.sefaz.am.gov.br/services2/services/RecepcaoEvento4',
|
|
97
|
+
},
|
|
98
|
+
homologacao: {
|
|
99
|
+
status: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeStatusServico4',
|
|
100
|
+
autorizacao: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeAutorizacao4',
|
|
101
|
+
retAutorizacao: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao4',
|
|
102
|
+
consultaProtocolo: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta4',
|
|
103
|
+
inutilizacao: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeInutilizacao4',
|
|
104
|
+
recepcaoEvento: 'https://homnfe.sefaz.am.gov.br/services2/services/RecepcaoEvento4',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
BA: {
|
|
108
|
+
producao: {
|
|
109
|
+
status: 'https://nfe.sefaz.ba.gov.br/webservices/NFeStatusServico4/NFeStatusServico4.asmx',
|
|
110
|
+
autorizacao: 'https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx',
|
|
111
|
+
retAutorizacao: 'https://nfe.sefaz.ba.gov.br/webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
|
|
112
|
+
consultaProtocolo: 'https://nfe.sefaz.ba.gov.br/webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
|
|
113
|
+
inutilizacao: 'https://nfe.sefaz.ba.gov.br/webservices/NFeInutilizacao4/NFeInutilizacao4.asmx',
|
|
114
|
+
recepcaoEvento: 'https://nfe.sefaz.ba.gov.br/webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
|
|
115
|
+
},
|
|
116
|
+
homologacao: {
|
|
117
|
+
status: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeStatusServico4/NFeStatusServico4.asmx',
|
|
118
|
+
autorizacao: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx',
|
|
119
|
+
retAutorizacao: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
|
|
120
|
+
consultaProtocolo: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
|
|
121
|
+
inutilizacao: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeInutilizacao4/NFeInutilizacao4.asmx',
|
|
122
|
+
recepcaoEvento: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
GO: {
|
|
126
|
+
producao: {
|
|
127
|
+
status: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeStatusServico4',
|
|
128
|
+
autorizacao: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeAutorizacao4',
|
|
129
|
+
retAutorizacao: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4',
|
|
130
|
+
consultaProtocolo: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4',
|
|
131
|
+
inutilizacao: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeInutilizacao4',
|
|
132
|
+
recepcaoEvento: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4',
|
|
133
|
+
},
|
|
134
|
+
homologacao: {
|
|
135
|
+
status: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeStatusServico4',
|
|
136
|
+
autorizacao: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4',
|
|
137
|
+
retAutorizacao: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4',
|
|
138
|
+
consultaProtocolo: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4',
|
|
139
|
+
inutilizacao: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeInutilizacao4',
|
|
140
|
+
recepcaoEvento: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
MG: {
|
|
144
|
+
producao: {
|
|
145
|
+
status: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4',
|
|
146
|
+
autorizacao: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeAutorizacao4',
|
|
147
|
+
retAutorizacao: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeRetAutorizacao4',
|
|
148
|
+
consultaProtocolo: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeConsultaProtocolo4',
|
|
149
|
+
inutilizacao: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeInutilizacao4',
|
|
150
|
+
recepcaoEvento: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeRecepcaoEvento4',
|
|
151
|
+
},
|
|
152
|
+
homologacao: {
|
|
153
|
+
status: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4',
|
|
154
|
+
autorizacao: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeAutorizacao4',
|
|
155
|
+
retAutorizacao: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeRetAutorizacao4',
|
|
156
|
+
consultaProtocolo: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeConsultaProtocolo4',
|
|
157
|
+
inutilizacao: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeInutilizacao4',
|
|
158
|
+
recepcaoEvento: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeRecepcaoEvento4',
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
MS: {
|
|
162
|
+
producao: {
|
|
163
|
+
status: 'https://nfe.sefaz.ms.gov.br/ws/NFeStatusServico4',
|
|
164
|
+
autorizacao: 'https://nfe.sefaz.ms.gov.br/ws/NFeAutorizacao4',
|
|
165
|
+
retAutorizacao: 'https://nfe.sefaz.ms.gov.br/ws/NFeRetAutorizacao4',
|
|
166
|
+
consultaProtocolo: 'https://nfe.sefaz.ms.gov.br/ws/NFeConsultaProtocolo4',
|
|
167
|
+
inutilizacao: 'https://nfe.sefaz.ms.gov.br/ws/NFeInutilizacao4',
|
|
168
|
+
recepcaoEvento: 'https://nfe.sefaz.ms.gov.br/ws/NFeRecepcaoEvento4',
|
|
169
|
+
},
|
|
170
|
+
homologacao: {
|
|
171
|
+
status: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeStatusServico4',
|
|
172
|
+
autorizacao: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeAutorizacao4',
|
|
173
|
+
retAutorizacao: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeRetAutorizacao4',
|
|
174
|
+
consultaProtocolo: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeConsultaProtocolo4',
|
|
175
|
+
inutilizacao: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeInutilizacao4',
|
|
176
|
+
recepcaoEvento: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeRecepcaoEvento4',
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
MT: {
|
|
180
|
+
producao: {
|
|
181
|
+
status: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4',
|
|
182
|
+
autorizacao: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4',
|
|
183
|
+
retAutorizacao: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4',
|
|
184
|
+
consultaProtocolo: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4',
|
|
185
|
+
inutilizacao: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4',
|
|
186
|
+
recepcaoEvento: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4',
|
|
187
|
+
},
|
|
188
|
+
homologacao: {
|
|
189
|
+
status: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4',
|
|
190
|
+
autorizacao: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4',
|
|
191
|
+
retAutorizacao: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4',
|
|
192
|
+
consultaProtocolo: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4',
|
|
193
|
+
inutilizacao: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4',
|
|
194
|
+
recepcaoEvento: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4',
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
PE: {
|
|
198
|
+
producao: {
|
|
199
|
+
status: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeStatusServico4',
|
|
200
|
+
autorizacao: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4',
|
|
201
|
+
retAutorizacao: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeRetAutorizacao4',
|
|
202
|
+
consultaProtocolo: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4',
|
|
203
|
+
inutilizacao: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeInutilizacao4',
|
|
204
|
+
recepcaoEvento: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4',
|
|
205
|
+
},
|
|
206
|
+
homologacao: {
|
|
207
|
+
status: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeStatusServico4',
|
|
208
|
+
autorizacao: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4',
|
|
209
|
+
retAutorizacao: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRetAutorizacao4',
|
|
210
|
+
consultaProtocolo: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4',
|
|
211
|
+
inutilizacao: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeInutilizacao4',
|
|
212
|
+
recepcaoEvento: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4',
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
PR: {
|
|
216
|
+
producao: {
|
|
217
|
+
status: 'https://nfe.sefa.pr.gov.br/nfe/NFeStatusServico4',
|
|
218
|
+
autorizacao: 'https://nfe.sefa.pr.gov.br/nfe/NFeAutorizacao4',
|
|
219
|
+
retAutorizacao: 'https://nfe.sefa.pr.gov.br/nfe/NFeRetAutorizacao4',
|
|
220
|
+
consultaProtocolo: 'https://nfe.sefa.pr.gov.br/nfe/NFeConsultaProtocolo4',
|
|
221
|
+
inutilizacao: 'https://nfe.sefa.pr.gov.br/nfe/NFeInutilizacao4',
|
|
222
|
+
recepcaoEvento: 'https://nfe.sefa.pr.gov.br/nfe/NFeRecepcaoEvento4',
|
|
223
|
+
},
|
|
224
|
+
homologacao: {
|
|
225
|
+
status: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeStatusServico4',
|
|
226
|
+
autorizacao: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeAutorizacao4',
|
|
227
|
+
retAutorizacao: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeRetAutorizacao4',
|
|
228
|
+
consultaProtocolo: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeConsultaProtocolo4',
|
|
229
|
+
inutilizacao: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeInutilizacao4',
|
|
230
|
+
recepcaoEvento: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeRecepcaoEvento4',
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
RS: {
|
|
234
|
+
producao: {
|
|
235
|
+
status: 'https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
|
|
236
|
+
autorizacao: 'https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
|
|
237
|
+
retAutorizacao: 'https://nfe.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
|
|
238
|
+
consultaProtocolo: 'https://nfe.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
|
|
239
|
+
inutilizacao: 'https://nfe.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
|
|
240
|
+
recepcaoEvento: 'https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
|
|
241
|
+
},
|
|
242
|
+
homologacao: {
|
|
243
|
+
status: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
|
|
244
|
+
autorizacao: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
|
|
245
|
+
retAutorizacao: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
|
|
246
|
+
consultaProtocolo: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
|
|
247
|
+
inutilizacao: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
|
|
248
|
+
recepcaoEvento: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
SP: {
|
|
252
|
+
producao: {
|
|
253
|
+
status: 'https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx',
|
|
254
|
+
autorizacao: 'https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx',
|
|
255
|
+
retAutorizacao: 'https://nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx',
|
|
256
|
+
consultaProtocolo: 'https://nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx',
|
|
257
|
+
inutilizacao: 'https://nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx',
|
|
258
|
+
recepcaoEvento: 'https://nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx',
|
|
259
|
+
},
|
|
260
|
+
homologacao: {
|
|
261
|
+
status: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx',
|
|
262
|
+
autorizacao: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx',
|
|
263
|
+
retAutorizacao: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx',
|
|
264
|
+
consultaProtocolo: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx',
|
|
265
|
+
inutilizacao: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx',
|
|
266
|
+
recepcaoEvento: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx',
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
SVAN: {
|
|
270
|
+
producao: {
|
|
271
|
+
status: 'https://www.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
|
|
272
|
+
autorizacao: 'https://www.sefazvirtual.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
|
|
273
|
+
retAutorizacao: 'https://www.sefazvirtual.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
|
|
274
|
+
consultaProtocolo: 'https://www.sefazvirtual.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
|
|
275
|
+
inutilizacao: 'https://www.sefazvirtual.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
|
|
276
|
+
recepcaoEvento: 'https://www.sefazvirtual.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
|
|
277
|
+
},
|
|
278
|
+
homologacao: {
|
|
279
|
+
status: 'https://hom.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
|
|
280
|
+
autorizacao: 'https://hom.sefazvirtual.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
|
|
281
|
+
retAutorizacao: 'https://hom.sefazvirtual.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
|
|
282
|
+
consultaProtocolo: 'https://hom.sefazvirtual.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
|
|
283
|
+
inutilizacao: 'https://hom.sefazvirtual.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
|
|
284
|
+
recepcaoEvento: 'https://hom.sefazvirtual.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
SVRS: {
|
|
288
|
+
producao: {
|
|
289
|
+
status: 'https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
|
|
290
|
+
autorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
|
|
291
|
+
retAutorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
|
|
292
|
+
consultaProtocolo: 'https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
|
|
293
|
+
inutilizacao: 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
|
|
294
|
+
recepcaoEvento: 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
|
|
295
|
+
},
|
|
296
|
+
homologacao: {
|
|
297
|
+
status: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
|
|
298
|
+
autorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
|
|
299
|
+
retAutorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
|
|
300
|
+
consultaProtocolo: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
|
|
301
|
+
inutilizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
|
|
302
|
+
recepcaoEvento: 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
'SVC-AN': {
|
|
306
|
+
producao: {
|
|
307
|
+
status: 'https://www.svc.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
|
|
308
|
+
autorizacao: 'https://www.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
|
|
309
|
+
retAutorizacao: 'https://www.svc.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
|
|
310
|
+
consultaProtocolo: 'https://www.svc.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
|
|
311
|
+
inutilizacao: 'https://www.svc.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
|
|
312
|
+
recepcaoEvento: 'https://www.svc.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
|
|
313
|
+
},
|
|
314
|
+
homologacao: {
|
|
315
|
+
status: 'https://hom.svc.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
|
|
316
|
+
autorizacao: 'https://hom.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
|
|
317
|
+
retAutorizacao: 'https://hom.svc.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
|
|
318
|
+
consultaProtocolo: 'https://hom.svc.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
|
|
319
|
+
inutilizacao: 'https://hom.svc.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
|
|
320
|
+
recepcaoEvento: 'https://hom.svc.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
'SVC-RS': {
|
|
324
|
+
producao: {
|
|
325
|
+
status: 'https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
|
|
326
|
+
autorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
|
|
327
|
+
retAutorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
|
|
328
|
+
consultaProtocolo: 'https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
|
|
329
|
+
inutilizacao: 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
|
|
330
|
+
recepcaoEvento: 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
|
|
331
|
+
},
|
|
332
|
+
homologacao: {
|
|
333
|
+
status: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
|
|
334
|
+
autorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
|
|
335
|
+
retAutorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
|
|
336
|
+
consultaProtocolo: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
|
|
337
|
+
inutilizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
|
|
338
|
+
recepcaoEvento: 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
};
|
|
342
|
+
export function normalizarUF(uf) {
|
|
343
|
+
const sigla = uf.trim().toUpperCase();
|
|
344
|
+
if (!(sigla in CODIGOS_UF)) {
|
|
345
|
+
throw new Error(`UF inválida: "${uf}". Informe uma sigla válida (ex: SP, DF, MG, RS).`);
|
|
346
|
+
}
|
|
347
|
+
return sigla;
|
|
348
|
+
}
|
|
349
|
+
export function obterCodigoUF(uf) {
|
|
350
|
+
const sigla = normalizarUF(uf);
|
|
351
|
+
return CODIGOS_UF[sigla];
|
|
352
|
+
}
|
|
353
|
+
export function obterAutorizadorPorUF(uf, contingencia = false) {
|
|
354
|
+
const sigla = normalizarUF(uf);
|
|
355
|
+
return contingencia ? AUTORIZADOR_CONTINGENCIA_POR_UF[sigla] : AUTORIZADOR_POR_UF[sigla];
|
|
356
|
+
}
|
|
357
|
+
export function obterUrlSefaz(uf, ambiente, servico, contingencia = false) {
|
|
358
|
+
const autorizador = obterAutorizadorPorUF(uf, contingencia);
|
|
359
|
+
const url = URLS_SEFAZ[autorizador]?.[ambiente]?.[servico];
|
|
360
|
+
if (!url) {
|
|
361
|
+
throw new Error(`Serviço "${servico}" não encontrado para o autorizador ${autorizador} (${ambiente}).`);
|
|
362
|
+
}
|
|
363
|
+
return url;
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=webservices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webservices.js","sourceRoot":"","sources":["../src/webservices.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nfe-lib-node",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Biblioteca Node.js para emissão, assinatura e comunicação com webservices de NF-e (SEFAZ)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -48,4 +48,4 @@
|
|
|
48
48
|
"ts-node": "^10.9.2",
|
|
49
49
|
"typescript": "^7.0.2"
|
|
50
50
|
}
|
|
51
|
-
}
|
|
51
|
+
}
|