Python · PIX BACEN · 4 tipos
Gerador de Chave PIX em Python
SDK oficial fakeforge-br gera os 4 tipos de chave PIX BACEN: CPF, email, telefone (+55) e aleatória (UUID v4). Snippets pra pytest, Django, FastAPI. Grátis 50 chamadas/dia sem cadastro.
TL;DR
pip install fakeforge-br
from fakeforge import FakeForge
ff = FakeForge()
chaves = ff.pix_key(100) # 100 chaves PIX aleatórias entre os 4 tiposOs 4 tipos de chave PIX
from fakeforge import FakeForge
ff = FakeForge()
# Tipo aleatório (mix dos 4)
chaves = ff.pix_key(20)
# Preset fintech tem 3-4 chaves por cliente (CPF + email + phone + aleatória)
[cliente] = ff.preset("fintech", 1)
for chave in cliente["pix_keys"]:
print(f"{chave['type']}: {chave['value']}")
# Output típico:
# cpf: 12345678909
# email: marina.souza@gmail.com
# phone: +5511987654321
# aleatoria: 8f4e2c91-a3b7-4d5e-9f2a-1c8b6d0e5a3fUso em Django (model PIX)
# myapp/management/commands/seed_pix.py
from django.core.management.base import BaseCommand
from fakeforge import FakeForge
from myapp.models import User, PixKey
class Command(BaseCommand):
def handle(self, *args, **options):
ff = FakeForge()
clientes = ff.preset("fintech", 500) # 500 clientes com 3-4 chaves cada
pix_keys = []
for c in clientes:
user, _ = User.objects.get_or_create(cpf=c["customer"]["cpf"])
for chave in c["pix_keys"]:
pix_keys.append(PixKey(
user=user,
tipo=chave["type"],
valor=chave["value"],
))
PixKey.objects.bulk_create(pix_keys)
self.stdout.write(f"{len(pix_keys)} chaves PIX seeded")Uso em pytest
# tests/test_pix_transferencia.py
import pytest
from fakeforge import FakeForge
from myapp.pix import PixService
@pytest.fixture(scope="session")
def ff():
return FakeForge()
@pytest.fixture(scope="session")
def clientes_fintech(ff):
return ff.preset("fintech", 20)
class TestPixTransferencia:
def test_valida_todos_4_tipos_bacen(self, clientes_fintech):
service = PixService()
for cliente in clientes_fintech:
for chave in cliente["pix_keys"]:
assert service.validar_chave(chave["type"], chave["value"]), \
f"Validador rejeitou {chave['type']}: {chave['value']}"
def test_transferencia_p2p(self, clientes_fintech):
service = PixService()
origem = clientes_fintech[0]["pix_keys"][0]
destino = clientes_fintech[1]["pix_keys"][0]
result = service.transferir(
chave_origem=origem["value"],
chave_destino=destino["value"],
valor=100.00,
)
assert result.status == "concluido"Uso em FastAPI (endpoint de teste)
# app.py
from fastapi import FastAPI, Query
from fakeforge import FakeForge
app = FastAPI()
ff = FakeForge()
@app.get("/dev/fake-pix-keys")
async def fake_pix(quantity: int = Query(10, le=100)):
"""Endpoint só em DEBUG=True. Gera chaves PIX pra testes locais."""
chaves = ff.pix_key(quantity)
return {"count": len(chaves), "keys": chaves}