跳转到主要内容

调试指南

Quick Reference

What高效调试 A55 API 集成问题
Why在出现问题时缩短解决时间
Reading Time10 分钟
Difficulty中级
Prerequisites可运行的沙箱集成

使用 request_id 获取支持

每个 A55 API 响应的响应体中都包含一个 request_id。此标识符可帮助 A55 支持团队在处理流水线中追踪您的确切请求。

{
"uuid": "chg_abc123...",
"status": "declined",
"request_id": "req_7f3a2b1c-4d5e-6f78-9a0b-cdef12345678"
}

联系 tech.services@a55.tech 时,请务必提供:

  1. request_id
  2. 请求的时间戳(UTC)
  3. 端点和 HTTP 方法
  4. 收到的 HTTP 状态码

HTTP 状态码

状态码含义操作
200成功处理响应内容
201已创建资源创建成功
400错误请求修正请求体——检查必填字段和格式
401未授权令牌已过期或无效——重新认证
403禁止访问您的凭证无权访问此资源
404未找到检查 URL 和资源 UUID
409冲突使用了相同的幂等键但载荷不同
422无法处理的实体验证失败——查看 error.details 获取字段级错误
429请求过多已触发速率限制——等待后使用退避策略重试
500服务器内部错误A55 端问题——使用指数退避重试
502/503服务不可用临时中断——使用指数退避重试

解读错误响应

A55 返回结构化的错误响应:

{
"error": {
"code": "INVALID_CARD_NUMBER",
"message": "The card number failed Luhn validation",
"details": [
{
"field": "card.number",
"reason": "Must be a valid card number (Luhn check failed)"
}
]
},
"request_id": "req_7f3a2b1c..."
}
字段描述
error.code机器可读的错误代码——用于错误处理逻辑
error.message人类可读的描述
error.details字段级验证错误数组(适用时)

沙箱测试

沙箱环境模拟生产环境行为:

  • 使用测试卡参考中的测试卡
  • 测试您代码处理的每种拒绝场景
  • 沙箱中的 webhook 触发方式与生产环境相同
  • 速率限制相同(100 请求/分钟)
# 快速沙箱环境健康检查
curl -s -o /dev/null -w "%{http_code}" \
"https://sandbox.api.a55.tech/api/v1/health/"
# 预期返回:200

Webhook 调试

使用 ngrok 进行本地开发

# 启动 ngrok 隧道
ngrok http 8080

# 使用该 HTTPS URL 作为您的 webhook_url
# 示例:https://abc123.ngrok.io/webhooks/a55

使用 webhook.site

  1. 访问 webhook.site
  2. 复制您的专属 URL
  3. 在创建收款时将其设置为 webhook_url
  4. 在浏览器中检查收到的载荷

验证投递

如果 webhook 未到达:

  1. 确认您的端点在 5 秒内返回 HTTP 200
  2. 检查您的端点是否可公开访问(未在 VPN/防火墙后面)
  3. 确认 HMAC 签名验证没有拒绝有效的载荷
  4. 检查 A55 的重试机制——webhook 最多重试 5 次,使用指数退避

收款状态转换

如果收款卡在意外状态中:

# 轮询收费状态
curl -s "https://sandbox.api.a55.tech/api/v1/bank/wallet/charge/?charge_uuid=${CHARGE_UUID}" \
-H "Authorization: Bearer ${A55_ACCESS_TOKEN}" | python3 -m json.tool

常见状态流程:

流程状态
成功收款pendingauthorizedcapturedsettled
自动扣款pendingconfirmedsettled
被拒收款pendingdeclined
已退款收款settledrefunded
3DS 验证pendingawaiting_3dsauthorizedcaptured

cURL 调试参数

详细输出 (-v)

显示请求/响应头部和 TLS 握手信息:

curl -v -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/charge/" \
-H "Authorization: Bearer ${A55_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"amount": "100.00", "currency": "BRL"}' 2>&1

完整追踪 (--trace)

捕获发送和接收的每个字节:

curl --trace trace.log -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/charge/" \
-H "Authorization: Bearer ${A55_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"amount": "100.00", "currency": "BRL"}'

# 查看追踪信息
less trace.log

响应计时

curl -o /dev/null -s -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTLS: %{time_appconnect}s\nTotal: %{time_total}s\nHTTP: %{http_code}\n" \
"https://sandbox.api.a55.tech/api/v1/health/"