pix-react
Version:
QRCode para pagamento PIX / QRCode for Brazilian PIX payment
58 lines • 2.13 kB
JavaScript
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
;