UNPKG

pix-react

Version:

QRCode para pagamento PIX / QRCode for Brazilian PIX payment

58 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pixPayload = void 0; var polycrc_1 = require("polycrc"); function pixPayload(_a) { var chave = _a.chave, cidade = _a.cidade, recebedor = _a.recebedor, valor = _a.valor, identificador = _a.identificador, meensagem = _a.mensagem, cep = _a.cep; if (!chave) throw new Error('Chave PIX é obrigatória'); if (!recebedor) throw new Error('Recebedor é obrigatório'); if (!cidade) throw new Error('Cidade é obrigatória'); if (!identificador) throw new Error('Identificador do PIX é obrigatório'); if (valor && valor < 0.01) throw new Error('Valor não pode ser negativo'); var versao = '01'; var BRL = '986'; var repeticao = '11'; var pais = 'BR'; var payloadKeyString = generateKey(chave, meensagem); var payload = [ genEMV('00', versao), genEMV('01', repeticao), genEMV('26', payloadKeyString), genEMV('52', '0000'), genEMV('53', BRL) ]; if (valor) { payload.push(genEMV('54', valor.toFixed(2))); } payload.push(genEMV('58', pais)); payload.push(genEMV('59', recebedor)); payload.push(genEMV('60', cidade.toLocaleUpperCase())); if (cep) { payload.push(genEMV('61', cep)); } payload.push(genEMV('62', genEMV('05', identificador))); payload.push('6304'); var stringPayload = payload.join(''); var buffer = Buffer.from(stringPayload, 'utf8'); var crc16CCiTT = (0, polycrc_1.crc)(16, 0x1021, 0xffff, 0x0000, false); var crcResult = crc16CCiTT(buffer).toString(16).toUpperCase(); return stringPayload + crcResult; } exports.pixPayload = pixPayload; function generateKey(key, message) { var payload = [genEMV('00', 'BR.GOV.BCB.PIX'), genEMV('01', key)]; if (message) { payload.push(genEMV('02', message)); } return payload.join(''); } function genEMV(id, parameter) { var len = parameter.length.toString().padStart(2, '0'); return "".concat(id).concat(len).concat(parameter); } //# sourceMappingURL=pixPayload.js.map