Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.upaybr.com/llms.txt

Use this file to discover all available pages before exploring further.

Upay Python SDK

SDK oficial da Upay para Python. Compatível com Python 3.8+.

Instalação

Este SDK ainda não está publicado no PyPI. Instale diretamente pelo GitHub:
pip install git+https://github.com/anthonymengottii/upay-python-sdk.git

Uso Rápido

import os
from upay import UpayClient

upay = UpayClient(api_key=os.getenv('UPAY_API_KEY'))
link = upay.payment_links.create({
    'title': 'Produto Premium',
    'amountCents': 9900,
    'description': 'Acesso vitalício',
})

Resposta

{
    'id': 'lnk_abc123',
    'title': 'Produto Premium',
    'description': 'Acesso vitalício',
    'amountCents': 9900,
    'status': 'ACTIVE',
    'url': 'https://pay.upaybr.com/l/abc123',
    'createdAt': '2026-04-08T00:00:00.000Z',
    'updatedAt': '2026-04-08T00:00:00.000Z'
}

Criar Transação PIX

tx = upay.transactions.create({
    'product': 'Curso Python',
    'paymentMethod': 'PIX',
    'amountCents': 19900,
    'clientName': 'João Silva',
    'clientEmail': 'joao@example.com',
    'clientDocument': '12345678900',
})

print(tx['pixCopiaECola'])

Validar Cupom

result = upay.coupons.validate(
    code='DESCONTO10',
    amount_cents=19900,
)

# result['valid'], result['discountCents'], result['finalAmountCents']

Validação de Webhooks

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    is_valid = upay.verify_webhook_signature(
        payload=request.data,
        signature=request.headers.get('x-webhook-signature', ''),
        secret=os.getenv('UPAY_WEBHOOK_SECRET'),
    )

    if not is_valid:
        return jsonify(error='Assinatura inválida'), 401

    event = request.json
    return jsonify(received=True)

Tratamento de Erros

from upay import UpayValidationError, UpayError

try:
    tx = upay.transactions.create({ ... })
except UpayValidationError as e:
    print('Dados inválidos:', e)
except UpayError as e:
    print(f'Erro {e.status_code}:', e)