UNPKG

react-qrcode-pix

Version:

Objetivo deste pacote é a de facilitar o recebimento de pagamentos com PIX em aplicações React

1 lines 21.3 kB
{"version":3,"sources":["../src/index.ts","../src/Component.class.ts","../src/PIX.class.ts"],"sourcesContent":["import React from 'react';\r\nimport type { QrcodeProps } from 'react-qrcode-pretty';\r\nimport Component from './Component.class';\r\nimport type { PIXProps } from './PIX.class';\r\nimport PixPayload from './PIX.class';\r\n\r\nexport * from 'react-qrcode-pretty';\r\n\r\n/**\r\n * REACT-QRCODE-PIX\r\n * \r\n * @author Guilherme Neves <guilhermeasn@yahoo.com.br>\r\n */\r\n\r\n\r\n/**\r\n * Gera o payload para poder usar no qrcode ou no sistema copia e cola do PIX\r\n */\r\nexport function payload(props : PIXProps) {\r\n\r\n const pix = new PixPayload(props);\r\n return pix.payload();\r\n\r\n}\r\n\r\nexport type PixCanvasComponentProps = PIXProps &\r\n Omit<QrcodeProps<'canvas'>, 'value'> & {\r\n onLoad?: (payload: string) => void;\r\n children?: React.ReactNode;\r\n };\r\n\r\nexport type PixSVGComponentProps = PIXProps &\r\n Omit<QrcodeProps<'SVG'>, 'value'> & {\r\n onLoad?: (payload: string) => void;\r\n children?: React.ReactNode;\r\n };\r\n\r\n/**\r\n * Qrcode estatico do PIX\r\n */\r\nexport function PixCanvas({\r\n pixkey,\r\n merchant,\r\n city,\r\n cep,\r\n code,\r\n amount,\r\n ignoreErrors = false,\r\n onLoad = (_ : string) => {},\r\n ...settings\r\n}: PixCanvasComponentProps) : JSX.Element {\r\n\r\n if(typeof settings.size === 'undefined') {\r\n settings.size = 256;\r\n }\r\n\r\n try {\r\n\r\n return React.createElement(Component<'canvas'>, {\r\n payload: payload({ pixkey, merchant, city, cep, code, amount, ignoreErrors }),\r\n qrcodeType: 'canvas',\r\n settings,\r\n onLoad\r\n });\r\n\r\n } catch(error) {\r\n\r\n if(process.env.NODE_ENV !== 'test') console.error(error);\r\n\r\n return React.createElement('div', {\r\n style: {\r\n width: settings?.size,\r\n height: settings?.size,\r\n margin: '10px 0',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: '#e5d5d5',\r\n border: 'solid 1px',\r\n borderRadius: '10px',\r\n borderColor: '#440000',\r\n textAlign: 'center',\r\n color: '#770000',\r\n fontSize: '18px',\r\n opacity: '0.75'\r\n }\r\n }, 'PIX não pode ser carregado!');\r\n\r\n }\r\n\r\n} \r\n\r\n/**\r\n * Qrcode estatico do PIX em SVG\r\n */\r\nexport function PixSVG({\r\n pixkey,\r\n merchant,\r\n city,\r\n cep,\r\n code,\r\n amount,\r\n ignoreErrors = false,\r\n onLoad = (_ : string) => {},\r\n ...settings\r\n}: PixSVGComponentProps) : JSX.Element {\r\n\r\n if(typeof settings.size === 'undefined') {\r\n settings.size = 256;\r\n }\r\n\r\n try {\r\n\r\n return React.createElement(Component<'SVG'>, {\r\n payload: payload({ pixkey, merchant, city, cep, code, amount, ignoreErrors }),\r\n qrcodeType: 'SVG',\r\n settings,\r\n onLoad\r\n });\r\n\r\n } catch(error) {\r\n\r\n if(process.env.NODE_ENV !== 'test') console.error(error);\r\n\r\n return React.createElement('div', {\r\n style: {\r\n width: settings?.size,\r\n height: settings?.size,\r\n margin: '10px 0',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: '#e5d5d5',\r\n border: 'solid 1px',\r\n borderRadius: '10px',\r\n borderColor: '#440000',\r\n textAlign: 'center',\r\n color: '#770000',\r\n fontSize: '18px',\r\n opacity: '0.75'\r\n }\r\n }, 'PIX não pode ser carregado!');\r\n\r\n }\r\n\r\n} \r\n\r\nexport default PixCanvas;\r\n","import React from 'react';\r\nimport type { QrcodeFormat, QrcodeProps } from 'react-qrcode-pretty';\r\nimport { QrcodeCanvas, QrcodeSVG } from 'react-qrcode-pretty';\r\n\r\nexport type ComponentProps<F extends QrcodeFormat> = {\r\n settings : Omit<QrcodeProps<F>, 'value'>,\r\n payload : string,\r\n qrcodeType : QrcodeFormat\r\n onLoad : (payload : string) => void\r\n}\r\n\r\n/**\r\n * Component React com o QrCode para receber o payload do PIX\r\n * \r\n * @author Guilherme Neves <guilhermeasn@yahoo.com.br>\r\n */\r\nexport default class Component<F extends QrcodeFormat> extends React.Component<ComponentProps<F>> {\r\n\r\n render() {\r\n\r\n return React.createElement((\r\n (this.props.qrcodeType === 'canvas' ? QrcodeCanvas : QrcodeSVG) as any\r\n ), {\r\n ...this.props.settings,\r\n value: this.props.payload\r\n });\r\n\r\n }\r\n\r\n componentDidMount() {\r\n\r\n if(typeof this.props.onLoad === 'function') {\r\n this.props.onLoad(this.props.payload || '');\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n\r\n if(typeof this.props.onLoad === 'function') {\r\n this.props.onLoad(this.props.payload || '');\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n\r\n if(typeof this.props.onLoad === 'function') {\r\n this.props.onLoad('');\r\n }\r\n \r\n }\r\n\r\n}","export type PIXProps = {\r\n\r\n /**\r\n * Chave PIX\r\n * \r\n * *** Formatos validos ***\r\n * EMAIL: fulano_da_silva.recebedor@example.com\r\n * CPF: 12345678900\r\n * CNPJ: 00038166000105\r\n * TELEFONE: +5561912345678\r\n * ALEATORIA: 123e4567-e12b-12d1-a456-426655440000\r\n */\r\n pixkey : string;\r\n\r\n /**\r\n * Nome de quem recebe o PIX\r\n */\r\n merchant : string;\r\n\r\n /**\r\n * Cidade de quem recebe o PIX\r\n */\r\n city : string;\r\n\r\n /**\r\n * CEP de quem recebe o PIX\r\n * (optional)\r\n */\r\n cep ?: string | null;\r\n\r\n /**\r\n * Codigo para identificacao posterior do PIX\r\n */\r\n code ?: string;\r\n\r\n /**\r\n * Valor do PIX\r\n * (opcional)\r\n */\r\n amount ?: number | null;\r\n\r\n /**\r\n * Verifica ou nao erros nas informacoes fornecidas\r\n */\r\n ignoreErrors ?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Classe para gerar o payload para o qrcode estatico do PIX\r\n * \r\n * @see https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf\r\n * @see https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\r\n * \r\n * @author Guilherme Neves <guilhermeasn@yahoo.com.br>\r\n */\r\nexport default class PIX {\r\n\r\n /* ATRIBUTOS E METODOS ESTATICOS */\r\n\r\n /**\r\n * Constantes de configuracao padrao\r\n */\r\n public static readonly constants = {\r\n\r\n PAYLOAD_FORMAT: '01',\r\n MERCHANT_ACCOUNT_GUI: 'BR.GOV.BCB.PIX',\r\n MERCHANT_CATEGORY_CODE: '0000',\r\n TRANSACTION_CURRENCY: '986',\r\n COUNTRY_CODE: 'BR',\r\n CRC16_LENGTH: 4\r\n\r\n }\r\n\r\n /*\r\n * Adiciona zeros a esquerda quando necessario para manter derterminado comprimento\r\n */\r\n public static padder(subject : number | string, lenght : number = 2) : string {\r\n\r\n const target : string = subject.toString(); \r\n let complement : string = '';\r\n\r\n if(target.length > lenght) {\r\n throw new Error(`O comprimento de '${ subject }' é maior que ${ lenght }`)\r\n }\r\n\r\n for(let c = 0; c < lenght; c++) {\r\n complement += '0';\r\n }\r\n\r\n return (complement + target).slice(target.length);\r\n\r\n }\r\n\r\n /**\r\n * Padronizacao EVM Brasil QrCode\r\n */\r\n public static EVM(ID : number, content : string) : string {\r\n\r\n if(ID > 99) throw new Error('O ID do EVM pode ter no máximo duas casas decimais!');\r\n if(content.length > 99) throw new Error('O conteúdo do EVM pode ter no máximo noventa e nove caracters e espacos!'); \r\n \r\n return PIX.padder(ID) + PIX.padder(content.length) + content;\r\n\r\n }\r\n\r\n /**\r\n * Altera ou remove caracteres acentuados e especiais \r\n */\r\n public static removeAccent(subject : string, extra_filter : RegExp | string = /[^\\w\\s]/gim) : string {\r\n return !!String.prototype.normalize ? subject.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, '').replace(extra_filter, '') : subject.replace(extra_filter, '');\r\n }\r\n\r\n /**\r\n * Calcula o Checksum CRC16\r\n */\r\n public static CRC16(subject : string) : string {\r\n \r\n let result = 0xFFFF;\r\n\r\n if(subject.length > 0) {\r\n for(let offset = 0; offset < subject.length; offset++) {\r\n result ^= subject.charCodeAt(offset) << 8;\r\n for(let bitwise = 0; bitwise < 8; bitwise++) {\r\n if((result <<= 1) & 0x10000) result ^= 0x1021;\r\n result &= 0xFFFF;\r\n }\r\n }\r\n }\r\n\r\n return result.toString(16).toUpperCase();\r\n\r\n }\r\n\r\n /**\r\n * Verifica se o formato da chave pix parece valido\r\n */\r\n public static verifyPixKey(pixkey : string) : boolean {\r\n\r\n return (\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/i.test(pixkey) || // Chave do tipo email\r\n /^[0-9]{11}$/i.test(pixkey) || // Chave do tipo CPF\r\n /^[0-9]{14}$/i.test(pixkey) || // Chave do tipo CNPJ\r\n /^\\+[0-9]{12,13}$/i.test(pixkey) || // Chave do tipo telefone\r\n /^[\\w-]{32,36}$/i.test(pixkey) // Chave aleatoria\r\n );\r\n \r\n }\r\n\r\n /* ATRIBUTOS DA INSTANCIA */\r\n\r\n private _props : Required<PIXProps>;\r\n\r\n /* METODOS DA INSTANCIA */\r\n\r\n /**\r\n * Carrega os dados do PIX\r\n */\r\n public constructor({ pixkey, merchant, city, cep, code, amount, ignoreErrors = false } : PIXProps) {\r\n\r\n if(!ignoreErrors) {\r\n\r\n // Verifica os parametros obrigatorios\r\n if(!pixkey || !merchant || !city) throw new Error('As propriedades: pixkey (chave pix), merchant (nome do recebedor) e city (cidade do recebedor), são obigatórios!');\r\n\r\n // Verifica se a chave eh valida\r\n if(!PIX.verifyPixKey(pixkey)) throw new Error(`A chave PIX (pixkey) '${pixkey}' parece ser inválida! Exemplos de formatos válidos: EMAIL: fulano_da_silva.recebedor@example.com | CPF: 12345678900 | CNPJ: 00038166000105 | TELEFONE: +5561912345678 | ALEATORIA: 123e4567-e12b-12d1-a456-426655440000`);\r\n\r\n // Verifica se amount recebeu um valor valido\r\n if(typeof amount === 'number' && amount <= 0) throw new Error('A propriedade amount deve receber um valor numérico maior que zero ou nulo!');\r\n\r\n }\r\n\r\n this._props = {\r\n\r\n pixkey: pixkey.replace(/\\s/gim, '').substring(0, 77),\r\n merchant: PIX.removeAccent(merchant, /[^a-z\\s]/gim).substring(0, 80),\r\n city: PIX.removeAccent(city, /[^a-z\\s]/gim).substring(0, 80),\r\n cep: cep ? cep.replace(/[^0-9]/gim, '').substring(0, 8) : null,\r\n code: PIX.removeAccent(code || '', /[^a-z0-9]/gim).substring(0, 25).toUpperCase() || '***',\r\n amount: amount && amount > 0 ? amount : null,\r\n\r\n ignoreErrors\r\n\r\n };\r\n\r\n }\r\n\r\n /*\r\n * Recupera uma propriedade da instancia\r\n */\r\n public get(prop : keyof PIXProps) : PIXProps[typeof prop] {\r\n return this._props[prop];\r\n }\r\n\r\n /**\r\n * Payload Format Indicator - ID 0\r\n */\r\n public getPayloadFormat() : string {\r\n return PIX.EVM(0, PIX.constants.PAYLOAD_FORMAT);\r\n }\r\n \r\n /**\r\n * Merchant Account Information - ID 26\r\n * > GUI - SubID 0\r\n * > KEY - SubID 1\r\n */\r\n public getMerchantAccount() : string {\r\n\r\n const gui = PIX.EVM(0, PIX.constants.MERCHANT_ACCOUNT_GUI);\r\n const key = PIX.EVM(1, this._props.pixkey);\r\n\r\n return PIX.EVM(26, gui + key);\r\n\r\n }\r\n\r\n /**\r\n * Merchant Category Code - ID 52\r\n */\r\n public getMerchantCategory() : string {\r\n return PIX.EVM(52, PIX.constants.MERCHANT_CATEGORY_CODE);\r\n }\r\n\r\n /**\r\n * Transaction Currency - ID 53\r\n */\r\n public getTransactionCurrency() : string {\r\n return PIX.EVM(53, PIX.constants.TRANSACTION_CURRENCY);\r\n }\r\n\r\n /**\r\n * Transaction Amount (optional) - ID 54\r\n */\r\n public getTransactionAmount() : string {\r\n return this._props.amount ? PIX.EVM(54, this._props.amount.toFixed(2)) : '';\r\n }\r\n\r\n /**\r\n * Country Code - ID 58\r\n */\r\n public getCountryCode() : string {\r\n return PIX.EVM(58, PIX.constants.COUNTRY_CODE);\r\n }\r\n\r\n /**\r\n * Merchant Name - ID 59\r\n */\r\n public getMerchantName() : string {\r\n return PIX.EVM(59, this._props.merchant);\r\n }\r\n\r\n /**\r\n * Merchant City - ID 60\r\n */\r\n public getMerchantCity() : string {\r\n return PIX.EVM(60, this._props.city);\r\n }\r\n\r\n /**\r\n * Merchant CEP (optional) - ID 61\r\n */\r\n public getMerchantCep() : string {\r\n return this._props.cep && /^[0-9]{8}$/.test(this._props.cep)\r\n ? PIX.EVM(61, this._props.cep)\r\n : '';\r\n }\r\n\r\n /**\r\n * Additional Data Field Template - ID 62\r\n * > Reference Label - SubID 5\r\n */\r\n public getAdditionalData() : string {\r\n const label = PIX.EVM(5, this._props.code);\r\n return PIX.EVM(62, label);\r\n }\r\n\r\n /**\r\n * Init CRC16 - ID 63\r\n */\r\n public getInitCRC16() : string {\r\n return '63' + PIX.padder(PIX.constants.CRC16_LENGTH);\r\n }\r\n\r\n /**\r\n * Gera o payload que pode ser usado para fazer o qrcode\r\n */\r\n public payload() : string {\r\n\r\n const payload = [\r\n\r\n this.getPayloadFormat(),\r\n this.getMerchantAccount(),\r\n this.getMerchantCategory(),\r\n this.getTransactionCurrency(),\r\n this.getTransactionAmount(),\r\n this.getCountryCode(),\r\n this.getMerchantName(),\r\n this.getMerchantCity(),\r\n this.getMerchantCep(),\r\n this.getAdditionalData(),\r\n this.getInitCRC16()\r\n \r\n ].join('');\r\n\r\n return payload + PIX.padder(PIX.CRC16(payload), PIX.constants.CRC16_LENGTH);\r\n\r\n }\r\n\r\n /**\r\n * Exibe o payload\r\n */\r\n public toString() : string {\r\n return this.payload();\r\n }\r\n\r\n}"],"mappings":"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","names":["React","payload","React"]}