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

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

Recomenda-se o uso de ambiente virtual.

pip install .

Ou, para desenvolvimento:

git clone https://github.com/seu-usuario/pypix-api.git
cd pypix-api
pip install -e .

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! Siga os passos:

  1. Fork este repositório
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas alterações (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

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.4.0.tar.gz (19.7 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.4.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pypix_api-0.4.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for pypix_api-0.4.0.tar.gz
Algorithm Hash digest
SHA256 30cc35d3d458ae7c479159cbafe81a8da42305482a806cc90caf7aa6a149fe38
MD5 7048e5f54bbc4931dfcfb0ccf5a10843
BLAKE2b-256 a92b5110f6ec321abd3956dd93db9c42759f426a32dcaa4a2f1a9f86fd4d48da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pypix_api-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for pypix_api-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1308838684858d3d4c34820a2d101cdf5e1e5b8d3870c35ac46a5b3a874f8dcd
MD5 b9c69541b4b8b565dec13292efcdb262
BLAKE2b-256 c1b69ba0e1fab8ed7c10788bdd8653dd3a7e8aa7ea82f0473e02434256e7c74f

See more details on using hashes here.

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