SDK Python
SDK oficial para Python 3.9+: cobranças, saldo e verificação de webhooks. Zero dependências (só stdlib).
Instalação
pip
pip install carecapayBeta: enquanto o pacote não está no PyPI, instale a partir do repositório carecapay-sdk-python (pip install <caminho>).
A chave secreta é obrigatória
O construtor exige a sua chave secreta (ccp_secret_...), do painel em Chaves de API — chaves vazias ou de outro formato são rejeitadas na hora. O ambiente vem da chave: sandbox ou live.
Python
import os
from carecapay import CarecaPay
carecapay = CarecaPay(os.environ["CARECAPAY_SECRET_KEY"])Criar e acompanhar cobranças
Python
charge = carecapay.charges.create(
amount_cents=1990, # obrigatório, em centavos
description="Assinatura", # opcional
method="pix", # opcional — hoje é o único disponível (padrão)
currency="BRL", # opcional — hoje é a única disponível (padrão)
external_reference="order_42", # opcional — seu id do pedido, só guardamos e devolvemos
)
print(charge["qr_code"]) # copia e cola do Pix
print(charge["qr_code_base64"]) # PNG já renderizado (base64), pronto pra exibir
carecapay.charges.get(charge["id"])
carecapay.charges.list(status="paid", limit=10)
carecapay.balance.get()
# só no sandbox: baixa fake (dispara o webhook também)
carecapay.charges.simulate_payment(charge["id"])Verificando webhooks
Flask
from carecapay import webhooks, CarecaPayWebhookError
@app.post("/webhooks/carecapay")
def carecapay_webhook():
try:
event = webhooks.construct_event(
payload=request.get_data(as_text=True), # corpo CRU!
header=request.headers.get("X-CarecaPay-Signature", ""),
secret=os.environ["CARECAPAY_WEBHOOK_SECRET"], # ccp_whsec_...
)
except CarecaPayWebhookError:
return "", 400
if event["type"] == "charge.paid":
liberar_pedido(event["data"]["id"]) # deduplique pelo event["id"]
return "", 200Sem o SDK, dá pra comparar o header X-CarecaPay-Token com o segredo diretamente — mais simples, mas sem detecção de corpo adulterado. Veja em Webhooks.
Erros tipados
Python
from carecapay import CarecaPayError
try:
carecapay.charges.create(amount_cents=0)
except CarecaPayError as err:
err.code # "invalid_amount" (estável)
err.status # 400 (0 em falha de rede, code "network_error")Os dicts devolvidos têm exatamente os shapes da API REST (snake_case). Também oficiais: SDK Node.js e SDK PHP.