Skip to main content

Biblioteca em Python para comunicação com APIs bancárias focada na integração com o PIX

Project description

PyPix-API

pypix-api

CI Pipeline codecov PyPI version Python versions License: MIT Code style: Ruff Type checking: MyPy

Biblioteca em Python para comunicação com APIs bancárias, focada na integração com o PIX.

Sumário

Visão Geral

O pypix-api facilita a integração de sistemas Python com APIs bancárias brasileiras, com ênfase no ecossistema do PIX. A biblioteca abstrai autenticação, comunicação segura (MTLS/OAuth2), e operações comuns de bancos como Banco do Brasil e Sicoob.

Instalação

pip install pypix-api

Ou, para desenvolvimento:

git clone https://github.com/laddertech/pypix-api.git
cd pypix-api
pip install -e ".[dev]"

Documentação

📚 Documentação Completa: Sphinx Docs (local) | GitHub Pages

Guias Específicos

Referência da API

Exemplos

Para gerar a documentação localmente:

make docs
make docs-serve  # Servidor local na porta 8000

Exemplo de Uso

Banco do Brasil

from pypix_api.banks.bb import BancoDoBrasil

from pypix_api.auth.oauth2 import OAuth2Client

# Primeiro crie o cliente OAuth2
oauth = OAuth2Client(
    client_id="SEU_CLIENT_ID",
    cert="caminho/do/certificado.pem",
    pvk="caminho/da/chave.key"
)

# Depois instancie o banco passando o OAuth2Client
bb = BancoDoBrasil(oauth=oauth)

# Exemplo: Cobrança com Vencimento
payload = {
    "calendario": {
        "dataDeVencimento": "2025-12-31",
        "validadeAposVencimento": 30
    },
    "loc": {
        "id": 789
    },
    "devedor": {
        "logradouro": "Alameda Souza, Numero 80, Bairro Braz",
        "cidade": "Recife",
        "uf": "PE",
        "cep": "70011750",
        "cpf": "12345678909",
        "nome": "Francisco da Silva"
    },
    "valor": {
        "original": "123.45",
        "multa": {
            "modalidade": "2",
            "valorPerc": "15.00"
        },
        "juros": {
            "modalidade": "2",
            "valorPerc": "2.00"
        },
        "desconto": {
            "modalidade": "1",
            "descontoDataFixa": [
                {
                    "data": "2025-11-30",
                    "valorPerc": "30.00"
                }
            ]
        }
    },
    "chave": "5f84a4c5-c5cb-4599-9f13-7eb4d419dacc",
    "solicitacaoPagador": "Cobrança dos serviços prestados."
}

# Criar cobrança com vencimento
cobv = bb.criar_cobv(txid="uuid-unico", body=payload)
print(cobv)

Sicoob

from pypix_api.banks.sicoob import Sicoob

# Instanciação do Sicoob
sicoob = Sicoob(oauth=oauth)  # Reutilizando o mesmo OAuth2Client

# Exemplo: Cobrança imediata
payload_cob = {
    "calendario": {
        "expiracao": 3600
    },
    "devedor": {
        "cpf": "12345678909",
        "nome": "Francisco da Silva"
    },
    "valor": {
        "original": "37.00"
    },
    "chave": "5f84a4c5-c5cb-4599-9f13-7eb4d419dacc",
    "solicitacaoPagador": "Pagamento de serviços."
}

cob = sicoob.criar_cob(txid="uuid-unico-2", body=payload_cob)
print(cob)

Estrutura do Projeto

pypix_api/
├── auth/           # Autenticação (MTLS, OAuth2)
├── banks/          # Integrações com bancos (BB, Sicoob, métodos PIX)
├── models/         # Modelos de dados do PIX
├── utils/          # Utilitários (HTTP client, helpers)
tests/              # Testes automatizados
openapi.yaml        # Especificação OpenAPI (se aplicável)
pyproject.toml      # Configuração do projeto Python
Makefile            # Comandos úteis para desenvolvimento
.env.exemplo        # Exemplo de variáveis de ambiente

Configuração

Parâmetros de Inicialização

  1. Primeiro crie uma instância de OAuth2Client:
from pypix_api.auth.oauth2 import OAuth2Client

oauth = OAuth2Client(
    client_id="SEU_CLIENT_ID",       # ID do cliente fornecido pelo banco
    cert="caminho/do/certificado.pem",  # Certificado digital (.pem)
    pvk="caminho/da/chave.key"       # Chave privada (.key)
)
  1. Depois instancie o banco passando o OAuth2Client:
banco = BancoDoBrasil(oauth=oauth)  # Ou Sicoob(oauth=oauth)

URLs das APIs

As URLs base são configuradas automaticamente por cada banco:

  • Banco do Brasil: Definido internamente pela classe BBPixAPI
  • Sicoob: Definido internamente pela classe SicoobPixAPI

Crie um arquivo .env baseado em .env.exemplo com as credenciais e configurações necessárias para autenticação e acesso às APIs bancárias.

Testes

Para rodar os testes automatizados:

make test

ou diretamente com pytest:

pytest

Contribuição

Contribuições são bem-vindas! Por favor, consulte nosso Guia de Contribuição para informações detalhadas sobre:

  • Como configurar o ambiente de desenvolvimento
  • Padrões de código e commits
  • Processo de Pull Request
  • Executar testes e verificações de qualidade

Para entender nossos templates e automações GitHub, veja .github/GITHUB_TEMPLATES.md.

Passos rápidos:

  1. Fork este repositório
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas alterações (git commit -am 'feat: adiciona nova funcionalidade')
  4. Execute os testes (make quality-full)
  5. Push para a branch (git push origin feature/nova-funcionalidade)
  6. Abra um Pull Request

Segurança

Para reportar vulnerabilidades de segurança, consulte nossa Política de Segurança.

NÃO reporte vulnerabilidades através de issues públicos.

Licença

Este projeto está licenciado sob os termos da licença MIT.

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

pypix_api-0.6.15.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypix_api-0.6.15-py3-none-any.whl (50.4 kB view details)

Uploaded Python 3

File details

Details for the file pypix_api-0.6.15.tar.gz.

File metadata

  • Download URL: pypix_api-0.6.15.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pypix_api-0.6.15.tar.gz
Algorithm Hash digest
SHA256 dfb2ae6c7472f6776d7ede78c36f08753de9674ff3bde8195f9fdf1ffd82d6e2
MD5 cd5f094a31a67f7bca2d0d3ebb63dc94
BLAKE2b-256 0d9ea15e9aa5a9fdf041989122457d248283e7e1d47257d99aca437d3a87b595

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypix_api-0.6.15.tar.gz:

Publisher: release.yml on laddertech/pypix-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypix_api-0.6.15-py3-none-any.whl.

File metadata

  • Download URL: pypix_api-0.6.15-py3-none-any.whl
  • Upload date:
  • Size: 50.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pypix_api-0.6.15-py3-none-any.whl
Algorithm Hash digest
SHA256 ca024317453c86ca8419eb4c61dcd2dce40b78bc3db86a8bd78dc0f72902054f
MD5 970c029077939a8c8bdcd21ec6ea2bb4
BLAKE2b-256 8a7ceb01b2b8ad356ed9da8bca2a595d7692cefd648b4d13b23698aba8e34b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypix_api-0.6.15-py3-none-any.whl:

Publisher: release.yml on laddertech/pypix-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page