Python
Tratamento de erros
Toda falha da API vira uma exceção tipada que estende SelectwinError. Decida o fluxo pelo tipo da exceção (ou por error.code), nunca pela mensagem.
Toda falha da API vira uma exceção tipada que estende SelectwinError. Decida o fluxo pelo tipo da exceção (ou por error.code), nunca pela mensagem.
A hierarquia
Todas as classes são importáveis de selectwin e estendem SelectwinError, que carrega os atributos message, code, status_code, request_id e raw.
| Classe | Status | Atributos extras |
|---|---|---|
AuthenticationError | 401 | — |
CardError | 402 | display_message, reversible |
PermissionDeniedError | 403 | — |
NotFoundError | 404 | — |
ValidationError | 400 e 422 | params (lista de campos inválidos) |
ConflictError | 409 | — |
RateLimitError | 429 | retry_after (segundos) |
APIError | 5xx / não classificado | — |
APIConnectionError | falha de rede / timeout | — |
SignatureVerificationError | — | verificação de webhook (ver Webhooks) |
Tratando por tipo
from selectwin import (
Selectwin,
SelectwinError,
CardError,
ValidationError,
RateLimitError,
)
sw = Selectwin(api_key=os.environ["SELECTWIN_API_KEY"])
try:
sw.transactions.create({...})
except CardError as e:
# 402 — mostre e.display_message ao cliente; e.reversible indica se vale retentar
print(e.display_message, e.reversible)
except ValidationError as e:
# 422 — e.params lista cada campo inválido
print(e.params)
except RateLimitError as e:
# 429 — espere e.retry_after segundos
print("aguarde", e.retry_after, "s")
except SelectwinError as e:
print(e.code, e.status_code, e.request_id)Retentativas automáticas
O cliente já retenta falhas transitórias (429, 5xx, rede) com backoff — padrão max_retries=2. Ajuste na criação:
sw = Selectwin(api_key=key, max_retries=4, timeout=30.0) # timeout em segundosComo cada mutação envia uma idempotency key automática, as retentativas não duplicam a operação. Ver Idempotência.
Próximos passos
- Webhooks — verificar assinaturas e tipar eventos.
- Paginação — iterar listas grandes (sync e async).
- Códigos de erro · Recusas de pagamento.
How is this guide?