Cobranças com Vencimento
Este guia mostra como criar e gerenciar cobranças PIX com data de vencimento.
Cobrança com Vencimento Simples
import uuid
from datetime import datetime, timedelta
from pypix_api.auth.oauth2 import OAuth2Client
from pypix_api.banks.bb import BBPixAPI
oauth = OAuth2Client(
client_id='seu_client_id',
client_secret='seu_client_secret',
cert_path='certificado.p12',
cert_password='senha_cert',
scope='cobv.write cobv.read'
)
api = BBPixAPI(oauth=oauth)
def criar_cobranca_com_vencimento():
"""Cria cobrança PIX com data de vencimento."""
txid = str(uuid.uuid4())
vencimento = datetime.now() + timedelta(days=7)
cobranca = {
'calendario': {
'dataDeVencimento': vencimento.strftime('%Y-%m-%d'),
'validadeAposVencimento': 30
},
'devedor': {
'cpf': '12345678901',
'nome': 'Cliente Mensal'
},
'valor': {
'original': '299.90'
},
'chave': 'empresa@email.com',
'solicitacaoPagador': 'Mensalidade - Janeiro 2025'
}
resultado = api.criar_cobv(txid, cobranca)
print(f"✅ Cobrança criada: {resultado['txid']}")
return resultado
Cobrança Recorrente Mensal
class CobrancaRecorrente:
"""Gerenciador de cobranças recorrentes."""
def __init__(self, api):
self.api = api
def criar_cobranca_mensal(self, cliente_dados, valor, referencia):
"""Cria cobrança mensal para um cliente."""
hoje = datetime.now()
vencimento = hoje + timedelta(days=30) # Vence em 30 dias
txid = f"MENSAL-{cliente_dados['cpf']}-{vencimento.strftime('%Y%m')}"
cobranca = {
'calendario': {
'dataDeVencimento': vencimento.strftime('%Y-%m-%d'),
'validadeAposVencimento': 30
},
'devedor': cliente_dados,
'valor': {
'original': str(valor)
},
'chave': 'cobranca@empresa.com',
'solicitacaoPagador': f'Mensalidade - {referencia}'
}
try:
resultado = self.api.criar_cobv(txid, cobranca)
print(f"✅ Mensalidade criada: {cliente_dados['nome']}")
return resultado
except Exception as e:
print(f"❌ Erro: {e}")
return None
Exemplo de Uso
def exemplo_cobrancas_mensais():
"""Exemplo completo de cobranças mensais."""
clientes = [
{
'cpf': '12345678901',
'nome': 'João Silva'
},
{
'cpf': '98765432100',
'nome': 'Maria Santos'
}
]
gerenciador = CobrancaRecorrente(api)
for cliente in clientes:
gerenciador.criar_cobranca_mensal(
cliente,
150.00,
'Janeiro/2025'
)
Monitoramento de Cobranças
def monitorar_cobrancas():
"""Monitora status das cobranças."""
inicio = datetime.now() - timedelta(days=30)
fim = datetime.now()
cobrancas = api.consultar_cobvs(
data_inicio=inicio.strftime('%Y-%m-%dT%H:%M:%S-03:00'),
data_fim=fim.strftime('%Y-%m-%dT%H:%M:%S-03:00')
)
for cob in cobrancas.get('cobs', []):
status = cob['status']
valor = cob['valor']['original']
if status == 'ATIVA':
print(f"⏳ Pendente: R$ {valor}")
elif status == 'CONCLUIDA':
print(f"✅ Paga: R$ {valor}")
Script Completo
#!/usr/bin/env python3
"""Sistema de cobranças recorrentes."""
import os
from datetime import datetime
from pypix_api.auth.oauth2 import OAuth2Client
from pypix_api.banks.bb import BBPixAPI
def main():
oauth = OAuth2Client(
client_id=os.getenv('BB_CLIENT_ID'),
client_secret=os.getenv('BB_CLIENT_SECRET'),
cert_path=os.getenv('BB_CERT_PATH'),
cert_password=os.getenv('BB_CERT_PASSWORD'),
scope='cobv.write cobv.read'
)
api = BBPixAPI(oauth=oauth)
gerenciador = CobrancaRecorrente(api)
# Processar cobranças
clientes = [{'cpf': '12345678901', 'nome': 'Cliente Teste'}]
for cliente in clientes:
gerenciador.criar_cobranca_mensal(
cliente,
99.90,
datetime.now().strftime('%B/%Y')
)
if __name__ == '__main__':
main()