Biblioteca Node.js não oficial para interação com o SiTef através de sua DLL, utilizando C++ Addons.
Todas as regras informadas na documentação do SiTef se mantém. O pacote é apenas um intermediário para a DLL, facilitando seu uso em projetos Node.js.
O pacote está em fase de desenvolvimento e por enquanto só foi testado utilizando Linux x64. Em outros sistemas, como o Windows, ele pode não funcionar devido o mapeamento em C++.
Após adicionar o pacote, no root do seu projeto, adicione o arquivo CliSiTef.ini
para configurar o SiTef. Ele deve ser adicionado no root para que a biblioteca possa encontrá-lo.
Este passo é muito importante, pois, mesmo que você consiga instanciar o objeto do SiTef, quando você tentar executar qualquer função será retornado zero (sucesso). O motivo disso é desconhecido, é uma particularidade da biblioteca.
Por fim, crie uma pasta bin
na sua aplicação (ou algum outro nome de sua preferência) e adicione as DLLs do SiTef. Elas serão referenciadas posteriormente.
O pacote possui apenas uma única classe a qual irá representar o SiTef. Através dela que serão realizadas todas as operações. Para utilizar o pacote, basta importá-lo e instanciar um novo SiTef passando como parâmetro o caminho para a DLL:
const path = require("path");
const CliSiTef = require("node-sitef");
// Caminho absoluto para a DLL do SiTef
const dllPath = path.resolve(__dirname, "..", "bin", "libclisitef.so");
const sitef = new CliSiTef(dllPath);
Para configurar o PinPad basta chamar o método configurar
, mapeamento da função ConfiguraIntSiTefInterativo
. O método recebe um objeto possuindo os parâmetros de configuração, como no seguinte exemplo:
// Parâmetro obrigatórios
const parametros = {
ip: "0.0.0.0",
loja: "00000000",
terminal: "00000000",
reservado: ""
};
const retorno = await sitef.configurar(parametros);
Seu retorno é uma Promise
, que quando concluída irá retornar o código de retorno da função. Os códigos de retorno deste e dos demais métodos são os mesmos da documentação do SiTef.
A função VerificaPresencaPinPad
está mapeada como verificarPresenca
. Ela também retorna uma Promise
, e quando concluída irá retornar o código de retorno da verificação.
const retorno = await sitef.verificarPresenca();
A função EscreveMensagemPermanentePinPad
está mapeada como escreverMensagem
. Ela recebe apenas um parâmetro que é a mensagem que deve ser uma String
e retorna uma Promise
, que quando concluída irá retornar o código de retorno da escrita da mensagem.
const retorno = await sitef.escreverMensagem("Lorem ipsum");
A função IniciaFuncaoSiTefInterativo
está mapeada como iniciarFuncao
. Ela possui o mesmo funcionamento da função padrão, porém recebe os parâmetros em um objeto e retorna uma Promise
, que quando concluída irá retornar o código de retorno.
const parametros = {
funcao: 0,
valor: "100,00",
cupomFiscal: "",
dataFiscal: "",
horaFiscal: "",
operador: "",
parametros: ""
};
const retorno = await sitef.iniciarFuncao(parametros);
As regras de negócio da documentação do SiTef se mantém, portanto os dados devem ser informados no mesmo formato requisitado.
A função ContinuaFuncaoSiTefInterativo
está mapeada como continuarFuncao
. O funcionamento do método é o mesmo da função mapeada. Entretanto, existem duas diferenças importantes.
A primeira é que o método recebe os parâmetros como um objeto da mesma forma como os demais métodos. A segunda é que o retorno da Promise
desta vez não é um literal e sim um objeto.
O motivo de retornar um objeto é porque a função possui parâmetros que são alterados por referência (citados na documentação). Por esse motivo, é retornado um objeto contendo esses valores alterados e o código de retorno da função.
const parametros = {
comando = 0,
tipoCampo = 0,
tamMinimo = 0,
tamMaximo = 0,
buffer = "",
tamBuffer = 0,
continua = 0
};
// Campos retornados no objeto, referentes os parâmetros alterados por referência
const {
retorno,
comando,
tipoCampo,
tamMinimo,
tamMaximo,
buffer
} = await sitef.continuarFuncao(parametros);
A função FinalizaFuncaoSiTefInterativo
está mapeada como finalizarFuncao
. Da mesma maneira que o método iniciarFuncao
, suas únicas diferenças são os parâmetros informados como objeto e o seu retorno encapsulado em uma Promise
.
const parametros = {
confirma: "",
cupomFiscal: "",
dataFiscal: "",
horaFiscal: "",
parametros: ""
};
const retorno = await sitef.finalizarFuncao(parametros);
A função LeSimNaoPinPad
está mapeada como leSimNaoPinPad
. Sua única diferença é que ela é assíncrona e retorna uma Promise
contendo o resultado da operação.
const resposta = await sitef.leSimNaoPinPad("Lorem ipsum?");
Daniel Cunha |
Felipe Furst |
GNU General Public License v3.0.