跳转到主要内容

性能与最佳实践

Quick Reference

What性能优化
Why通过合理的重试与幂等策略构建可靠的高吞吐集成
Difficulty中级
Prerequisites身份验证 → 创建扣款

高性能集成结合幂等请求智能重试凭证缓存分层身份验证,以最大化吞吐量和通过率。


速率限制

层级限制范围
标准100 请求/分钟按 access token(访问令牌)
突发20 请求/秒按访问令牌
自定义可配置联系集成经理

当触发速率限制时,A55 返回 HTTP 429 并附带 Retry-After 头(秒数)。

避免循环

永远不要在紧密循环中重试 4xx 错误。收到 429 时退避等待,5xx 时使用指数退避重试,将卡片拒绝视为终态。


超时设置

操作建议超时最大超时
获取身份验证令牌10 秒30 秒
创建扣款60 秒90 秒
3DS 设置 / 验证30 秒60 秒
零额验证15 秒30 秒
查询 / 列表端点10 秒30 秒

重试策略

指数退避

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("超过最大重试次数")

幂等键

通过发送 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 '{ ... }'
行为说明
相同键 + 相同请求体返回原始响应(不产生重复扣款)
相同键 + 不同请求体返回 409 Conflict
不使用键每次请求创建一笔新扣款
键格式

使用订单 ID 和尝试次数的组合:{order_id}_attempt_{n}。这样便于调试且避免意外重用。


身份验证性能

  • 缓存 access token——令牌有效期为 3600 秒。请求一次,跨调用复用
  • 不要每次 API 调用都请求令牌——这会浪费速率限制配额并增加延迟
  • 主动刷新——在约 3500 秒时刷新,而非等到过期
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"]

优化体系

层级技术效果
身份验证Visa/Mastercard DataOnly 3DS更高通过率,无质询摩擦
凭证网络令牌(DPAN + 密码学凭证)发卡行信任、卡片生命周期连续性
设备A55Pay.getDeviceId() 指纹更强的风控评分
可靠性每次扣款使用幂等键零重复扣款
效率令牌缓存、连接池更低延迟
永远不要记录敏感数据

记录完整 PAN 或 CVV 存在严重安全风险,会导致服务器上留存敏感数据。请使用关联 ID 进行链路追踪。

可观测性

跟踪从您的边缘到 A55 的 p95 延迟、按路由的错误率和 Webhook 交付延迟。在客户察觉之前发出告警。