node-sped-nfe 1.0.2 → 1.0.3

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.
@@ -0,0 +1,98 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- ***************************************************-->
3
+ <!-- *** Schema específico para assinaturas XML ***-->
4
+ <!-- *** a partir de certificados do padrão (X509) ***-->
5
+ <!-- *** ICP-Brasil - Projeto Nota Fiscal Eletrônica ***-->
6
+ <!-- ***************************************************-->
7
+ <!-- Schema for XML Signatures-->
8
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
9
+ <element name="Signature" type="ds:SignatureType"/>
10
+ <complexType name="SignatureType">
11
+ <sequence>
12
+ <element name="SignedInfo" type="ds:SignedInfoType"/>
13
+ <element name="SignatureValue" type="ds:SignatureValueType"/>
14
+ <element name="KeyInfo" type="ds:KeyInfoType"/>
15
+ </sequence>
16
+ <attribute name="Id" type="ID" use="optional"/>
17
+ </complexType>
18
+ <complexType name="SignatureValueType">
19
+ <simpleContent>
20
+ <extension base="base64Binary">
21
+ <attribute name="Id" type="ID" use="optional"/>
22
+ </extension>
23
+ </simpleContent>
24
+ </complexType>
25
+ <complexType name="SignedInfoType">
26
+ <sequence>
27
+ <element name="CanonicalizationMethod">
28
+ <complexType>
29
+ <attribute name="Algorithm" type="anyURI" use="required" fixed="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
30
+ </complexType>
31
+ </element>
32
+ <element name="SignatureMethod">
33
+ <complexType>
34
+ <attribute name="Algorithm" type="anyURI" use="required" fixed="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
35
+ </complexType>
36
+ </element>
37
+ <element name="Reference" type="ds:ReferenceType"/>
38
+ </sequence>
39
+ <attribute name="Id" type="ID" use="optional"/>
40
+ </complexType>
41
+ <complexType name="ReferenceType">
42
+ <sequence>
43
+ <element name="Transforms" type="ds:TransformsType">
44
+ <!-- Garante a unicidade do atributo -->
45
+ <unique name="unique_Transf_Alg">
46
+ <selector xpath="./*"/>
47
+ <field xpath="@Algorithm"/>
48
+ </unique>
49
+ </element>
50
+ <element name="DigestMethod">
51
+ <complexType>
52
+ <attribute name="Algorithm" type="anyURI" use="required" fixed="http://www.w3.org/2000/09/xmldsig#sha1"/>
53
+ </complexType>
54
+ </element>
55
+ <element name="DigestValue" type="ds:DigestValueType"/>
56
+ </sequence>
57
+ <attribute name="Id" type="ID" use="optional"/>
58
+ <attribute name="URI" use="required">
59
+ <simpleType>
60
+ <restriction base="anyURI">
61
+ <minLength value="2"/>
62
+ </restriction>
63
+ </simpleType>
64
+ </attribute>
65
+ <attribute name="Type" type="anyURI" use="optional"/>
66
+ </complexType>
67
+ <complexType name="TransformsType">
68
+ <sequence>
69
+ <element name="Transform" type="ds:TransformType" minOccurs="2" maxOccurs="2"/>
70
+ </sequence>
71
+ </complexType>
72
+ <complexType name="TransformType">
73
+ <sequence minOccurs="0" maxOccurs="unbounded">
74
+ <element name="XPath" type="string"/>
75
+ </sequence>
76
+ <attribute name="Algorithm" type="ds:TTransformURI" use="required"/>
77
+ </complexType>
78
+ <complexType name="KeyInfoType">
79
+ <sequence>
80
+ <element name="X509Data" type="ds:X509DataType"/>
81
+ </sequence>
82
+ <attribute name="Id" type="ID" use="optional"/>
83
+ </complexType>
84
+ <complexType name="X509DataType">
85
+ <sequence>
86
+ <element name="X509Certificate" type="base64Binary"/>
87
+ </sequence>
88
+ </complexType>
89
+ <simpleType name="DigestValueType">
90
+ <restriction base="base64Binary"/>
91
+ </simpleType>
92
+ <simpleType name="TTransformURI">
93
+ <restriction base="anyURI">
94
+ <enumeration value="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
95
+ <enumeration value="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
96
+ </restriction>
97
+ </simpleType>
98
+ </schema>
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Tools } from "./utils/tools"
2
- import { Make } from "./utils/make"
1
+ import { Tools } from "./utils/tools.js"
2
+ import { Make } from "./utils/make.js"
3
3
 
4
4
  export { Tools, Make }
@@ -6,7 +6,11 @@ import tmp from "tmp"
6
6
  import crypto from "crypto";
7
7
  import { urlServicos } from "./eventos.js"
8
8
  import fs from "fs"
9
+ import path from 'path';
10
+ import { fileURLToPath } from 'url';
9
11
 
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
10
14
 
11
15
  class Tools {
12
16
  #cert: {
@@ -20,7 +24,15 @@ class Tools {
20
24
  XMLBuilder: {} as XMLBuilder,
21
25
  XMLParser: {} as XMLParser
22
26
  };
23
- #pem: Record<string, any> = {};
27
+ #pem: {
28
+ key: string;
29
+ cert: string;
30
+ ca: string[]; // <- define que pode ser uma lista de strings
31
+ } = {
32
+ key: "", // A chave privada extraída do PKCS#12, em formato PEM
33
+ cert: "", // O certificado extraído, em formato PEM
34
+ ca: [] // Uma lista de certificados da cadeia (se houver), ou null
35
+ };
24
36
  #config: {
25
37
  mod: string;
26
38
  xmllint: string;
@@ -43,7 +55,11 @@ class Tools {
43
55
  });
44
56
  }
45
57
 
46
- sefazEnviaLote(xml: string, data = { idLote: 1, indSinc: 0, compactar: false }) {
58
+ async teste() {
59
+ return await this.#certTools()
60
+ }
61
+
62
+ sefazEnviaLote(xml: string, data: any = { idLote: 1, indSinc: 0, compactar: false }): Promise<string> {
47
63
  return new Promise(async (resvol, reject) => {
48
64
  if (typeof data.idLote == "undefined") data.idLote = 1;
49
65
  if (typeof data.indSinc == "undefined") data.indSinc = 0;
@@ -107,13 +123,14 @@ class Tools {
107
123
  })
108
124
  }
109
125
 
110
- async xmlSign(xmlJSON: string, data: any) {
126
+ async xmlSign(xmlJSON: string, data: any = { tag: "infNFe" }): Promise<string> {
111
127
  return new Promise(async (resvol, reject) => {
112
128
  if (data.tag === undefined) data.tag = "infNFe";
113
129
 
114
130
  //Obter a tag que ira ser assinada
115
131
  let xml = await this.xml2json(xmlJSON) as any;
116
- let pem = await this.getCertificado() as { key: string; cert: string };
132
+ let tempPem = await this.#certTools() as any;
133
+
117
134
  const sign = crypto.createSign('RSA-SHA1'); // Correção: Alterado para RSA-SHA1
118
135
  let signedInfo = {
119
136
  "SignedInfo": {
@@ -149,10 +166,10 @@ class Tools {
149
166
  xml.NFe.Signature = {
150
167
  ...signedInfo,
151
168
  ...{
152
- "SignatureValue": sign.sign(pem.key, 'base64'),
169
+ "SignatureValue": sign.sign(tempPem.key, 'base64'),
153
170
  "KeyInfo": {
154
171
  "X509Data": {
155
- "X509Certificate": pem.cert.replace(/-----BEGIN CERTIFICATE-----/g, '').replace(/-----END CERTIFICATE-----/g, '').replace(/\r\n/g, '')
172
+ "X509Certificate": tempPem.cert.replace(/-----BEGIN CERTIFICATE-----/g, '').replace(/-----END CERTIFICATE-----/g, '').replace(/\r\n/g, '')
156
173
  }
157
174
  },
158
175
  "@xmlns": "http://www.w3.org/2000/09/xmldsig#"
@@ -259,9 +276,10 @@ class Tools {
259
276
  const xmlFile = tmp.fileSync({ mode: 0o644, prefix: 'xml-', postfix: '.xml' });
260
277
  fs.writeFileSync(xmlFile.name, xml, { encoding: 'utf8' });
261
278
 
279
+ const schemaPath = path.resolve(__dirname, '../../schemas/nfe_v4.00.xsd');
262
280
  const verif: SpawnSyncReturns<string> = spawnSync(
263
281
  this.#config.xmllint,
264
- ['--noout', '--schema', './utils/schemas/nfe_v4.00.xsd', xmlFile.name],
282
+ ['--noout', '--schema', schemaPath, xmlFile.name],
265
283
  { encoding: 'utf8' }
266
284
  );
267
285
 
@@ -280,12 +298,13 @@ class Tools {
280
298
 
281
299
 
282
300
  //Extrair dados do certificado pem
283
- #certTools() {
301
+ #certTools(): Promise<object> {
284
302
  return new Promise(async (resvol, reject) => {
285
- if (this.#pem != null) resvol(this.#pem);
303
+ if (this.#pem.key != "") resvol(this.#pem);
286
304
  pem.readPkcs12(this.#cert.pfx, { p12Password: this.#cert.senha }, (err, myPem) => {
305
+ if (err) return reject(err); // <-- importante!
287
306
  this.#pem = myPem;
288
- resvol(myPem);
307
+ resvol(this.#pem);
289
308
  });
290
309
  })
291
310
  }
@@ -0,0 +1,16 @@
1
+ import SefazService from "../utils/sefaz.js";
2
+ const baseURL = DISTRIBUICAO[opts.tpAmb]
3
+ const options = {
4
+ method: 'POST',
5
+ data: data,
6
+ }
7
+ const client = new SefazService({
8
+ baseURL: baseURL,
9
+ ca: CA,
10
+ cert: opts.cert,
11
+ key: opts.key,
12
+ requestOptions: opts.requestOptions,
13
+ httpsOptions: opts.httpsOptions,
14
+ })
15
+
16
+ const retorno = await client.request(options)
package/testes/nfe.js ADDED
@@ -0,0 +1,166 @@
1
+ import { Make, Tools } from "../dist/index.js"
2
+ import fs from "fs";
3
+ //let xml = fs.readFileSync("./nfe.xml", { encoding: "utf-8" });
4
+ //fs.writeFileSync("./nfe.json", JSON.stringify(convert(xml, { format: 'object' })), { encoding: "utf-8" });
5
+
6
+ let myTools = new Tools({ //Configuração de habiente e sistema
7
+ mod: '55',
8
+ tpAmb: 2,
9
+ cUF: '51',
10
+ xmllint: `../libxml2-2.9.3-win32-x86_64/bin/xmllint.exe`
11
+ }, { //Certificado digital
12
+ pfx: '../certificado.pfx',
13
+ senha: fs.readFileSync('../senha.txt', { encoding: "utf8" }),
14
+ });
15
+
16
+ let NFe = new Make();
17
+ NFe.tagInfNFe({ Id: null, versao: '4.00' });
18
+ NFe.tagIde({
19
+ cUF: "51",
20
+ cNF: "00002023",
21
+ natOp: "VENDA",
22
+ mod: "55",
23
+ serie: "0",
24
+ nNF: "248",
25
+ dhEmi: NFe.formatData(),
26
+ tpNF: "1",
27
+ idDest: "1",
28
+ cMunFG: "5106257",
29
+ tpImp: "1",
30
+ tpEmis: "1",
31
+ cDV: "1",
32
+ tpAmb: "2",
33
+ finNFe: "1",
34
+ indFinal: "0",
35
+ indPres: "1",
36
+ indIntermed: "0",
37
+ procEmi: "0",
38
+ verProc: "4.13"
39
+ });
40
+ NFe.tagEmit({
41
+ CNPJ: "47506306000188",
42
+ xNome: "47.506.306 KALMON VALADAO TAVARES",
43
+ xFant: "GUARA DEV",
44
+ IE: "139551956",
45
+ CRT: "1"
46
+ });
47
+ NFe.tagEnderEmit({
48
+ xLgr: "AV PARA",
49
+ nro: "138",
50
+ xBairro: "UNIAO",
51
+ cMun: "5106257",
52
+ xMun: "Nova Xavantina",
53
+ UF: "MT",
54
+ CEP: "78690000",
55
+ cPais: "1058",
56
+ xPais: "BRASIL",
57
+ fone: "66981352912"
58
+ });
59
+ NFe.tagDest({
60
+ CPF: "04079907125",
61
+ xNome: "ADELMO CARLOS CIQUEIRA SILVA",
62
+ indIEDest: "2",
63
+ });
64
+ NFe.tagEnderDest({
65
+ xLgr: "RUA DAS SAMAMBAIAS",
66
+ nro: "144",
67
+ xBairro: "PARQUE ELDORADO",
68
+ cMun: "5107040",
69
+ xMun: "PRIMAVERA DO LESTE",
70
+ UF: "MT",
71
+ CEP: "78850000",
72
+ cPais: "1058",
73
+ xPais: "BRASIL"
74
+ });
75
+ NFe.tagProd([
76
+ {
77
+ cProd: "126",
78
+ cEAN: "SEM GTIN",
79
+ xProd: "CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS",
80
+ NCM: "85044010",
81
+ CFOP: "5102",
82
+ uCom: "UNID",
83
+ qCom: "3.0000",
84
+ vUnCom: "132.0000000000",
85
+ vProd: "396.00",
86
+ cEANTrib: "SEM GTIN",
87
+ uTrib: "UNID",
88
+ qTrib: "3.0000",
89
+ vUnTrib: "132.0000000000",
90
+ indTot: "1"
91
+ },
92
+ {
93
+ cProd: "129",
94
+ cEAN: "SEM GTIN",
95
+ xProd: "CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO",
96
+ NCM: "85044010",
97
+ CFOP: "5102",
98
+ uCom: "UNID",
99
+ qCom: "2.0000",
100
+ vUnCom: "218.0000000000",
101
+ vProd: "436.00",
102
+ cEANTrib: "SEM GTIN",
103
+ uTrib: "UNID",
104
+ qTrib: "2.0000",
105
+ vUnTrib: "218.0000000000",
106
+ indTot: "1",
107
+ },
108
+ {
109
+ "cProd": 127,
110
+ "cEAN": "SEM GTIN",
111
+ "xProd": "CABO DE MICROFONE XLR FEMEA PARA P10 MONO 20 METROS CIRILO CABOS",
112
+ "NCM": 85044010,
113
+ "CFOP": 5102,
114
+ "uCom": "UNID",
115
+ "qCom": 2,
116
+ "vUnCom": 185,
117
+ "vProd": 370,
118
+ "cEANTrib": "SEM GTIN",
119
+ "uTrib": "UNID",
120
+ "qTrib": 2,
121
+ "vUnTrib": 185,
122
+ "vDesc": 38,
123
+ "indTot": 1
124
+ },
125
+ {
126
+ "cProd": 128,
127
+ "cEAN": "SEM GTIN",
128
+ "xProd": "CABO DE AUDIO P10 X P10 MONO BLINDADO 5 METROS",
129
+ "NCM": 85044010,
130
+ "CFOP": 5102,
131
+ "uCom": "UNID",
132
+ "qCom": 2,
133
+ "vUnCom": 18,
134
+ "vProd": 36,
135
+ "cEANTrib": "SEM GTIN",
136
+ "uTrib": "UNID",
137
+ "qTrib": 2,
138
+ "vUnTrib": 18,
139
+ "indTot": 1
140
+ }
141
+ ]);
142
+ [0, 1, 2, 3].map((value, index) => {
143
+ NFe.tagProdICMSSN(index, { orig: "0", CSOSN: "400" })
144
+ NFe.tagProdPIS(index, { CST: "49", qBCProd: "0.0000", vAliqProd: "0.0000", vPIS: "0.00" })
145
+ NFe.tagProdCOFINS(index, { CST: "49", qBCProd: "0.0000", vAliqProd: "0.0000", vCOFINS: "0.00" })
146
+ });
147
+ NFe.tagICMSTot();
148
+ NFe.tagTransp({ modFrete: 9 });
149
+ NFe.tagDetPag([{ indPag: 0, tPag: 17, vPag: "1200.00" }]);
150
+ NFe.tagTroco("0.00");
151
+ NFe.tagInfRespTec({ CNPJ: "47506306000188", xContato: "Guara Dev", email: "admin@guaradev.com", fone: "5566999638922" })
152
+ fs.writeFileSync("nfe.xml", NFe.xml(), { encoding: "utf-8" });
153
+ myTools.xmlSign(NFe.xml()).then(async xmlSign => {
154
+ fs.writeFileSync("nfe_sign.xml", xmlSign, { encoding: "utf-8" });
155
+ myTools.sefazEnviaLote(xmlSign, { indSinc: 1 }).then(res => {
156
+ console.log(res)
157
+ })
158
+ }).catch(err => {
159
+ console.log(err)
160
+ })
161
+
162
+ /*
163
+ myTools.sefazStatus().then(res => {
164
+ console.log(res)
165
+ });
166
+ */
@@ -0,0 +1,194 @@
1
+ {
2
+ "NFe": {
3
+ "@xmlns": "http://www.portalfiscal.inf.br/nfe",
4
+ "infNFe": {
5
+ "@Id": "NFe51241047506306000188550000000002471000020235",
6
+ "@versao": "4.00",
7
+ "ide": {
8
+ "cUF": "51",
9
+ "cNF": "00002023",
10
+ "natOp": "VENDA",
11
+ "mod": "55",
12
+ "serie": "0",
13
+ "nNF": "247",
14
+ "dhEmi": "2024-10-10T18:01:59-04:00",
15
+ "tpNF": "1",
16
+ "idDest": "1",
17
+ "cMunFG": "5106257",
18
+ "tpImp": "1",
19
+ "tpEmis": "1",
20
+ "cDV": "5",
21
+ "tpAmb": "1",
22
+ "finNFe": "1",
23
+ "indFinal": "0",
24
+ "indPres": "1",
25
+ "indIntermed": "0",
26
+ "procEmi": "0",
27
+ "verProc": "4.13"
28
+ },
29
+ "emit": {
30
+ "CNPJ": "47506306000188",
31
+ "xNome": "47.506.306 KALMON VALADAO TAVARES",
32
+ "xFant": "GUARA DEV",
33
+ "enderEmit": {
34
+ "xLgr": "AV PARA",
35
+ "nro": "138",
36
+ "xBairro": "UNIÃO",
37
+ "cMun": "5106257",
38
+ "xMun": "Nova Xavantina",
39
+ "UF": "MT",
40
+ "CEP": "78690000",
41
+ "cPais": "1058",
42
+ "xPais": "BRASIL",
43
+ "fone": "66981352912"
44
+ },
45
+ "IE": "139551956",
46
+ "CRT": "1"
47
+ },
48
+ "dest": {
49
+ "CPF": "04079907125",
50
+ "xNome": "ADELMO CARLOS CIQUEIRA SILVA",
51
+ "enderDest": {
52
+ "xLgr": "RUA DAS SAMAMBAIAS",
53
+ "nro": "144",
54
+ "xBairro": "PARQUE ELDORADO",
55
+ "cMun": "5107040",
56
+ "xMun": "PRIMAVERA DO LESTE",
57
+ "UF": "MT",
58
+ "CEP": "78850000",
59
+ "cPais": "1058",
60
+ "xPais": "BRASIL"
61
+ },
62
+ "indIEDest": "2"
63
+ },
64
+ "det": [
65
+ {
66
+ "@nItem": "1",
67
+ "prod": {
68
+ "cProd": "126",
69
+ "cEAN": "SEM GTIN",
70
+ "xProd": "CABOS MICROFONE DMX XR CANON BALANCEADO 20 METROS",
71
+ "NCM": "85044010",
72
+ "CFOP": "5102",
73
+ "uCom": "UNID",
74
+ "qCom": "3.0000",
75
+ "vUnCom": "132.0000000000",
76
+ "vProd": "396.00",
77
+ "cEANTrib": "SEM GTIN",
78
+ "uTrib": "UNID",
79
+ "qTrib": "3.0000",
80
+ "vUnTrib": "132.0000000000",
81
+ "indTot": "1"
82
+ },
83
+ "imposto": {
84
+ "ICMS": {
85
+ "ICMSSN102": {
86
+ "orig": "0",
87
+ "CSOSN": "400"
88
+ }
89
+ },
90
+ "PIS": {
91
+ "PISOutr": {
92
+ "CST": "49",
93
+ "qBCProd": "0.0000",
94
+ "vAliqProd": "0.0000",
95
+ "vPIS": "0.00"
96
+ }
97
+ },
98
+ "COFINS": {
99
+ "COFINSOutr": {
100
+ "CST": "49",
101
+ "qBCProd": "0.0000",
102
+ "vAliqProd": "0.0000",
103
+ "vCOFINS": "0.00"
104
+ }
105
+ }
106
+ }
107
+ },
108
+ {
109
+ "@nItem": "2",
110
+ "prod": {
111
+ "cProd": "129",
112
+ "cEAN": "SEM GTIN",
113
+ "xProd": "CABO P2 PARA P10 CELULAR MESA DE SOM CAIXA DE SOM 25 METRO",
114
+ "NCM": "85044010",
115
+ "CFOP": "5102",
116
+ "uCom": "UNID",
117
+ "qCom": "2.0000",
118
+ "vUnCom": "218.0000000000",
119
+ "vProd": "436.00",
120
+ "cEANTrib": "SEM GTIN",
121
+ "uTrib": "UNID",
122
+ "qTrib": "2.0000",
123
+ "vUnTrib": "218.0000000000",
124
+ "indTot": "1"
125
+ },
126
+ "imposto": {
127
+ "ICMS": {
128
+ "ICMSSN102": {
129
+ "orig": "0",
130
+ "CSOSN": "400"
131
+ }
132
+ },
133
+ "PIS": {
134
+ "PISOutr": {
135
+ "CST": "49",
136
+ "qBCProd": "0.0000",
137
+ "vAliqProd": "0.0000",
138
+ "vPIS": "0.00"
139
+ }
140
+ },
141
+ "COFINS": {
142
+ "COFINSOutr": {
143
+ "CST": "49",
144
+ "qBCProd": "0.0000",
145
+ "vAliqProd": "0.0000",
146
+ "vCOFINS": "0.00"
147
+ }
148
+ }
149
+ }
150
+ }
151
+ ],
152
+ "total": {
153
+ "ICMSTot": {
154
+ "vBC": "0.00",
155
+ "vICMS": "0.00",
156
+ "vICMSDeson": "0.00",
157
+ "vFCP": "0.00",
158
+ "vBCST": "0.00",
159
+ "vST": "0.00",
160
+ "vFCPST": "0.00",
161
+ "vFCPSTRet": "0.00",
162
+ "vProd": "1238.00",
163
+ "vFrete": "0.00",
164
+ "vSeg": "0.00",
165
+ "vDesc": "38.00",
166
+ "vII": "0.00",
167
+ "vIPI": "0.00",
168
+ "vIPIDevol": "0.00",
169
+ "vPIS": "0.00",
170
+ "vCOFINS": "0.00",
171
+ "vOutro": "0.00",
172
+ "vNF": "1200.00"
173
+ }
174
+ },
175
+ "transp": {
176
+ "modFrete": "9"
177
+ },
178
+ "pag": {
179
+ "detPag": {
180
+ "indPag": "0",
181
+ "tPag": "17",
182
+ "vPag": "1200.00"
183
+ },
184
+ "vTroco": "0.00"
185
+ },
186
+ "infRespTec": {
187
+ "CNPJ": "47506306000188",
188
+ "xContato": "Guara Dev",
189
+ "email": "admin@guaradev.com",
190
+ "fone": "5566999638922"
191
+ }
192
+ }
193
+ }
194
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ {
3
+ "sigla": "MT",
4
+ "mod_55": {
5
+ "homologacao": {
6
+ "NfeStatusServico": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4",
7
+ "NfeAutorizacao": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4",
8
+ "NfeConsultaProtocolo": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4",
9
+ "NfeInutilizacao": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4",
10
+ "NfeRetAutorizacao": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4",
11
+ "RecepcaoEvento": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4",
12
+ "NfeConsultaCadastro": "https://homologacao.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro4"
13
+ },
14
+ "producao": {
15
+ "NfeStatusServico": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4",
16
+ "NfeAutorizacao": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4",
17
+ "NfeConsultaProtocolo": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4",
18
+ "NfeInutilizacao": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4",
19
+ "NfeRetAutorizacao": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4",
20
+ "RecepcaoEvento": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4",
21
+ "NfeConsultaCadastro": "https://nfe.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro4"
22
+ }
23
+ },
24
+ "mod_65": {
25
+ "homologacao": {
26
+ "NfeAutorizacao": "https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeAutorizacao4",
27
+ "NfeRetAutorizacao": "https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeRetAutorizacao4",
28
+ "NfeInutilizacao": "https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeInutilizacao4",
29
+ "NfeConsultaProtocolo": "https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeConsulta4",
30
+ "NfeStatusServico": "https://homologacao.sefaz.mt.gov.br/nfcews/services/NfeStatusServico4",
31
+ "RecepcaoEvento": "https://homologacao.sefaz.mt.gov.br/nfcews/services/RecepcaoEvento4",
32
+ "NfeConsultaQR": "http://homologacao.sefaz.mt.gov.br/nfce/consultanfce"
33
+ },
34
+ "producao": {
35
+ "NfeAutorizacao": "https://nfce.sefaz.mt.gov.br/nfcews/services/NfeAutorizacao4",
36
+ "NfeRetAutorizacao": "https://nfce.sefaz.mt.gov.br/nfcews/services/NfeRetAutorizacao4",
37
+ "NfeInutilizacao": "https://nfce.sefaz.mt.gov.br/nfcews/services/NfeInutilizacao4",
38
+ "NfeConsultaProtocolo": "https://nfce.sefaz.mt.gov.br/nfcews/services/NfeConsulta4",
39
+ "NfeStatusServico": "https://nfce.sefaz.mt.gov.br/nfcews/services/NfeStatusServico4",
40
+ "RecepcaoEvento": "https://nfce.sefaz.mt.gov.br/nfcews/services/RecepcaoEvento4",
41
+ "NfeConsultaQR": "http://www.sefaz.mt.gov.br/nfce/consultanfce"
42
+ }
43
+ }
44
+ }
45
+ }