Pular para o conteúdo principal

Performance e Boas Práticas

Quick Reference

WhatOtimização de performance
WhyConstrua integrações confiáveis e de alta vazão com retry e idempotência adequados
DifficultyIntermediate
PrerequisitesAutenticação → Criar cobrança

Integrações de alta performance combinam requisições idempotentes, retentativas inteligentes, credenciais em cache e autenticação em camadas para maximizar vazão e taxas de aprovação.


Limites de taxa

NívelLimiteEscopo
Padrão100 requisições/minPor access token
Burst20 requisições/segPor access token
CustomizadoConfigurávelContate o gerente de integração

Quando você atinge um limite de taxa, a A55 retorna HTTP 429 com um header Retry-After (segundos).

Evite loops

Nunca retente erros 4xx em loop apertado. Recue em 429, retente em 5xx com delay exponencial e trate recusas de cartão como terminais.


Timeouts

OperaçãoTimeout recomendadoTimeout máximo
Requisição de token auth10 s30 s
Criar cobrança60 s90 s
Setup / validação 3DS30 s60 s
Zero auth15 s30 s
Endpoints GET / list10 s30 s

Estratégia de retentativa

Backoff exponencial

import time, requests

def call_with_retry(url, headers, payload, max_retries=3):
for attempt in range(max_retries):
try:
r = requests.post(url, headers=headers, json=payload, timeout=60)
if r.status_code < 500:
return r
time.sleep(2 ** attempt)
except requests.exceptions.Timeout:
time.sleep(2 ** attempt)
raise Exception("Max retries exceeded")

Chaves de idempotência

Previna cobranças duplicadas de retentativas enviando um header Idempotency-Key:

curl -X POST 'https://core-manager.a55.tech/api/v1/bank/wallet/charge/' \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: ord_001_attempt_1' \
-d '{ ... }'
ComportamentoDetalhe
Mesma chave + mesmo bodyRetorna a resposta original (sem cobrança duplicada)
Mesma chave + body diferenteRetorna 409 Conflict
Sem chaveCada requisição cria uma nova cobrança
Formato da chave

Use uma combinação do seu ID de pedido e número da tentativa: {order_id}_attempt_{n}. Isso facilita o debug e previne reuso acidental.


Performance de autenticação

  • Faça cache dos access tokens — Tokens são válidos por 3600 segundos. Requisite uma vez, reutilize entre chamadas
  • Não requisite um token por chamada de API — Isso desperdiça orçamento de rate limit e adiciona latência
  • Renove proativamente — Renove aos ~3500 segundos, não após a expiração
import os, time, requests

_token_cache = {"token": None, "expires_at": 0}

def get_token():
if time.time() < _token_cache["expires_at"] - 100:
return _token_cache["token"]
r = requests.post(
"https://core-manager.a55.tech/api/v1/auth/token",
data={
"grant_type": "client_credentials",
"client_id": os.environ["A55_CLIENT_ID"],
"client_secret": os.environ["A55_CLIENT_SECRET"],
},
timeout=10,
)
data = r.json()
_token_cache["token"] = data["access_token"]
_token_cache["expires_at"] = time.time() + data["expires_in"]
return _token_cache["token"]

Stack de otimização

CamadaTécnicaImpacto
AutenticaçãoDataOnly 3DS para Visa/MastercardMaior aprovação, sem fricção de challenge
CredenciaisNetwork tokens (DPAN + criptograma)Confiança do emissor, continuidade do ciclo de vida do cartão
DispositivoImpressão digital A55Pay.getDeviceId()Pontuações de risco mais fortes
ConfiabilidadeChaves de idempotência em toda cobrançaZero cobranças duplicadas
EficiênciaCache de tokens, connection poolingMenor latência
Nunca registre dados sensíveis

Registrar PANs ou CVVs completos é um risco sério de segurança e cria responsabilidade por incidentes. Use IDs de correlação para rastreamento.

Observabilidade

Monitore a latência p95 do seu edge até a A55, taxas de erro por rota e atraso na entrega de webhooks. Alerte antes que os clientes percebam desvios.