npm.io
1.2.0 • Published 1 month ago

pix-qr-code-detail

Licence
MIT
Version
1.2.0
Deps
0
Size
38 kB
Vulns
0
Weekly
0
Stars
3

pix-qr-code-detail

Node.js

Pacote Node.js minimalista para inspecionar BR Codes Pix de cobrancas dinamicas:

  1. Faz o parsing TLV do QR Code/BR Code;
  2. Localiza a Merchant Account Information Pix, tags 26 a 51;
  3. Extrai a URL do payload dinamico na subtag 25;
  4. Baixa o payload via HTTP/HTTPS;
  5. Decodifica o JWT e devolve { header, payload, signature }.

O pacote publica ESM e CommonJS, nao executa exemplos ao ser importado e nao possui dependencias de runtime.

Instalacao

npm i pix-qr-code-detail

Uso

import { parseTLV, extractPixUrl, getDecodedPixJwt } from 'pix-qr-code-detail';

const brcode = '00020101021226830014BR.GOV.BCB.PIX2561qrcodespix.sejaefi.com.br/v2/ff719c748dc244a294adee9174ace3795204000053039865802BR5905EFISA6008SAOPAULO62070503***6304BAC4';

console.dir(parseTLV(brcode), { depth: null });
console.log('URL:', extractPixUrl(brcode));

const { payload } = await getDecodedPixJwt(brcode);
console.log('Payload JWT:', payload);

CommonJS tambem e suportado:

const { getDecodedPixJwt } = require('pix-qr-code-detail');

API

parseTLV(brcode)
Converte a string do BR Code em um array de objetos TLV. Cada item traz tag, length, value, tagName e, quando aplicavel, children.

extractPixUrl(brcode)
Retorna a URL do payload dinamico na subtag 25 dentro da Merchant Account Information. Em QR Codes estaticos, onde normalmente existe chave Pix na subtag 01 em vez de URL de payload, retorna undefined.

getDecodedPixJwt(brcode, options?)
Usa extractPixUrl, acrescenta DPP=YYYY-MM-DD na URL do payload com a data local do dia, baixa o payload com fetch e decodifica o JWT. Aceita:

{
  timeoutMs?: number;
  fetch?: typeof fetch;
  headers?: Record<string, string>;
}

decodeJwt(token)
Decodifica um JWT ja obtido e devolve { header, payload, signature }.

O pacote decodifica o JWT para leitura/detalhamento. Ele nao verifica criptograficamente a assinatura.

Desenvolvimento

npm run build
npm pack --dry-run

O build gera:

  • dist/esm/index.js
  • dist/esm/index.d.ts
  • dist/cjs/index.js

Licenca

MIT

Keywords