Uma biblioteca Python completa para a geração de BR Codes (QR Code e Copia e Cola) do Pix, seguindo as especificações do Banco Central do Brasil.
Project description
PixCore
Uma biblioteca Python robusta e intuitiva para a geração de QR Codes e payloads "Copia e Cola" do Pix, seguindo as especificações do Banco Central do Brasil.
O PixCore foi projetado para ser simples de usar, mas poderoso o suficiente para cobrir todos os campos e customizações necessárias, desde transações simples até casos de uso mais complexos com dados adicionais e logos personalizados.
Principais Funcionalidades
- Geração de Payload (BR Code): Crie a string "Copia e Cola" no formato TLV (Type-Length-Value) pronta para ser usada.
- Criação de QR Code: Gere imagens de QR Code (PNG) a partir dos dados do Pix.
- Validação de Dados: A classe
PixDatavalida automaticamente os campos para garantir a conformidade com o padrão do BACEN (ex: tamanho dos campos, formatos, etc.). - Customização Flexível:
- Defina valor fixo ou permita que o pagador insira o valor.
- Adicione um logo customizado no centro do QR Code.
- Personalize as cores do QR Code.
- Inclua campos opcionais como CEP, dados em outro idioma e método de iniciação (QR estático/dinâmico).
- Totalmente Testada: Cobertura de testes para garantir a confiabilidade na geração dos códigos.
- Interface de Linha de Comando (CLI): Utilize todas as funcionalidades diretamente do seu terminal, sem escrever código Python.
- Decodificação de Payload: Analise e valide uma string "Copia e Cola" existente para inspecionar seus dados.
- Geração em Lote via CSV: Crie múltiplos QR Codes a partir de um arquivo CSV, ideal para cobranças em massa.
- Gerenciamento de Configurações: Salve seus dados padrão (nome, cidade, chave) para agilizar o uso da CLI.
Instalação
Você pode instalar o PixCore diretamente do PyPI:
pip install pixcore
Uso como Biblioteca Python
Usar o PixCore é um processo de apenas dois passos:
- Crie uma instância de PixData com as informações do recebedor.
- Use um objeto Pix para gerar o payload ou o QR Code.
A biblioteca utiliza um sistema de exceções customizadas (ex: ChavePixInvalidaError, GeracaoPayloadError) para permitir um tratamento de erros preciso e robusto em sua aplicação.
Exemplo 1: Gerando um QR Code com Valor e Logo
from pixcore import PixData
from pixcore import Pix
# 1. Defina os dados da cobrança Pix
dados_pix = PixData(
recebedor_nome="Empresa Exemplo LTDA",
recebedor_cidade="SAO PAULO",
pix_key="a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d", # Chave aleatória (EVP)
valor=99.90,
transacao_id="PedidoXPTO123"
)
# 2. Crie a instância principal do Pix
gerador_pix = Pix(dados_pix)
# 3. Gere e salve a imagem do QR Code
gerador_pix.save_qrcode(
"meu_pix_qr.png",
caminho_logo="caminho/para/seu/logo.png",
cor_qr="#004AAD" # Cor customizada
)
# (Opcional) Obtenha a string "Copia e Cola"
payload = gerador_pix.payload()
print("\nPayload (Copia e Cola):")
print(payload)
Exemplo 2: QR Code sem valor definido (pagador decide o valor)
Para gerar um QR Code onde o pagador pode digitar o valor, simplesmente omita o parâmetro valor ao criar o PixData.
from pixcore import PixData
from pixcore import Pix
dados_doacao = PixData(
recebedor_nome="ONG BEM MAIOR",
recebedor_cidade="RIO DE JANEIRO",
pix_key="ajude@ongbemmaior.org", # Chave tipo e-mail
transacao_id="DOACAO" # O ID da transação é obrigatório
)
pix_doacao = Pix(dados_doacao)
pix_doacao.save_qrcode("qr_code_doacao.png")
Uso via Linha de Comando (CLI)
O PixCore também é uma poderosa ferramenta de linha de comando que permite gerar QR Codes e payloads sem precisar escrever nenhum código.
Comandos Principais
1. Gerar um QR Code e salvar em arquivo
Use o comando qrcode com a opção -o (output) para salvar a imagem.
pixcore qrcode -k "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d" \
-n "Empresa Exemplo LTDA" \
-c "SAO PAULO" \
-a 99.90 \
--txid "PedidoXPTO123" \
-o "meu_pix_qr.png"
- Dica: Se você omitir a opção
-o, o QR Code será exibido no visualizador de imagens padrão do seu sistema.
2. Gerar apenas o payload "Copia e Cola"
Use o comando payload para obter a string que pode ser usada em aplicativos de banco.
pixcore payload -k "seu-email@exemplo.com" -n "Seu Nome" -c "SUA CIDADE" -a 19.99
3. Decodificar um código Pix existente
Com o comando decode, você pode validar um payload e ver seus dados de forma organizada.
pixcore decode "00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d520400005303986540599.905802BR5918Empresa Exemplo LTDA6009SAO PAULO62150511Pedido1236304ABCD"
4. Gerar QR Codes em Lote a partir de um CSV
O comando lote processa um arquivo CSV e gera um QR Code para cada linha. O CSV deve conter as colunas valor e txid.
# Exemplo de conteúdo do arquivo 'cobrancas.csv':
# valor,txid
# 10.50,cliente001
# 25.00,cliente002
pixcore lote "cobrancas.csv" "qrcodes_gerados/" --name "Minha Empresa" --key "meu-cnpj" --city "CIDADE"
5. Configurar valores padrão
Para evitar digitar seu nome, cidade ou chave Pix toda vez, use o comando config set.
pixcore config set name "Empresa Exemplo LTDA"
pixcore config set city "SAO PAULO"
pixcore config set key "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
- Para ver as configurações salvas, use
pixcore config show.
📚 Documentação
Para um guia completo sobre todos os campos, validações e funcionalidades, acesse a nossa documentação oficial.
🤝 Contribuições
Contribuições são muito bem-vindas! Se você tem ideias para melhorias, novas funcionalidades ou encontrou algum bug, sinta-se à vontade para:
1. Abrir uma Issue para discutir o que você gostaria de mudar.
2. Fazer um Fork do projeto e enviar um Pull Request com suas alterações.
📄 Licença
Este projeto é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pixcore-1.0.0.tar.gz.
File metadata
- Download URL: pixcore-1.0.0.tar.gz
- Upload date:
- Size: 24.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f8ed0061103ec887f824d7771b77b46a5462f905e5da57d2092a3a15c7827a1
|
|
| MD5 |
b44457c5879da1b148ec81526d3a68b2
|
|
| BLAKE2b-256 |
5390232168878b0156d11dc48910de37a9cd763eb05199a290c3c52d4d723c2b
|
Provenance
The following attestation bundles were made for pixcore-1.0.0.tar.gz:
Publisher:
pypi.yml on gustjose/pixcore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pixcore-1.0.0.tar.gz -
Subject digest:
1f8ed0061103ec887f824d7771b77b46a5462f905e5da57d2092a3a15c7827a1 - Sigstore transparency entry: 427990871
- Sigstore integration time:
-
Permalink:
gustjose/pixcore@4d42020b467685c50f504d5d20915de7a536689e -
Branch / Tag:
refs/tags/1.0.0 - Owner: https://github.com/gustjose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@4d42020b467685c50f504d5d20915de7a536689e -
Trigger Event:
release
-
Statement type:
File details
Details for the file pixcore-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pixcore-1.0.0-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fa90fd848c6b198668de7ffab580ca0d5f0091cd4092192fc0b4e6d4ec5fcc5
|
|
| MD5 |
7b89696dcaf36552167de33e8695ec84
|
|
| BLAKE2b-256 |
b074a7cbf7e2a0101e999b58822534d4bf2a42812ad6a82b60ec24fcf62131b2
|
Provenance
The following attestation bundles were made for pixcore-1.0.0-py3-none-any.whl:
Publisher:
pypi.yml on gustjose/pixcore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pixcore-1.0.0-py3-none-any.whl -
Subject digest:
0fa90fd848c6b198668de7ffab580ca0d5f0091cd4092192fc0b4e6d4ec5fcc5 - Sigstore transparency entry: 427990883
- Sigstore integration time:
-
Permalink:
gustjose/pixcore@4d42020b467685c50f504d5d20915de7a536689e -
Branch / Tag:
refs/tags/1.0.0 - Owner: https://github.com/gustjose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@4d42020b467685c50f504d5d20915de7a536689e -
Trigger Event:
release
-
Statement type: