DocsSDKs OficiaisEDPay Python SDK
SDK Oficial Produção v1.3.0

EDPay Python SDK

Biblioteca oficial para Python 3.9+ com suporte a frameworks como Django, FastAPI e Flask, tipagem estrita com Pydantic e clientes assíncronos/síncronos.

edutecka/edpay-python-sdk

Produção v1.3.0

Repositório oficial no GitHub com código aberto sob licença MIT.

Ver no GitHub

Instalação via Pip

Instale o pacote no seu ambiente virtual Python via PyPI:

Terminal
pip install edpay

Inicialização do Cliente

Carregue as credenciais seguras da sua conta (X-EDPay-Public-Key e X-EDPay-Private-Key):

main.py
from edpay import EDPayClient import os # Inicializar cliente com credenciais do ambiente client = EDPayClient( public_key=os.environ["EDPAY_PUBLIC_KEY"], private_key=os.environ["EDPAY_PRIVATE_KEY"], base_url="https://api-pay.edutecka.com" # Padrão )

Criar Pagamento Multicanal

Exemplo de envio de intenção de pagamento com idempotência automática:

create_payment.py
# Criar pagamento multicanal agnóstico payment = client.payments.create( amount=1500, # 1.500,00 MZN currency="MZN", reference="FAT-2026-002", description="Assinatura de Plano Empresarial", customer={ "name": "Mariamo Cassamo", "email": "[email protected]", "phone": "+25884xxxxxxx", }, metadata={"account_id": "acc_7891"}, idempotency_key="req_order_python_98413", ) print(f"Pagamento ID: {payment['data']['id']}") print(f"Estado: {payment['data']['status']}")

Recepção de Webhooks com FastAPI

Exemplo de endpoint para receber e autenticar notificações assíncronas:

webhook_handler.py
from fastapi import FastAPI, Request, HTTPException import hmac import hashlib import os app = FastAPI() @app.post("/webhooks/edpay") async def handle_edpay_webhook(request: Request): payload = await request.body() signature = request.headers.get("X-EDPay-Signature", "") secret = os.environ["EDPAY_WEBHOOK_SECRET"] # Validação da assinatura criptográfica is_valid = client.webhooks.verify_signature(payload, signature, secret) if not is_valid: raise HTTPException(status_code=401, detail="Invalid signature") event = await request.json() if event["event"] == "payment.succeeded": payment_id = event["data"]["id"] # Processar confirmação de pagamento return {"received": True}