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 tipos

Os 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-1c8b6d0e5a3f

Uso 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}