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.

ClasseStatusAtributos extras
AuthenticationError401
CardError402display_message, reversible
PermissionDeniedError403
NotFoundError404
ValidationError400 e 422params (lista de campos inválidos)
ConflictError409
RateLimitError429retry_after (segundos)
APIError5xx / não classificado
APIConnectionErrorfalha de rede / timeout
SignatureVerificationErrorverificaçã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 segundos

Como cada mutação envia uma idempotency key automática, as retentativas não duplicam a operação. Ver Idempotência.

Próximos passos

How is this guide?

On this page