跳到主要内容

错误处理

所有 Lampay API 响应 -- 无论成功还是失败 -- 都遵循统一的信封格式。本页介绍响应结构、HTTP 状态码规范以及按业务域组织的完整错误码目录。

响应信封

Lampay API 的每个响应都封装在带有元数据字段的标准信封中。

成功响应

200成功
{
"version": "1.3.0",
"timestamp": 1709337600000,
"success": true,
"code": "2000",
"message": "SUCCESS",
"data": {
"transferId": "txn_789xyz",
"status": "COMPLETED",
"amount": "100.00",
"currency": "USD"
}
}

错误响应

400错误
{
"version": "1.3.0",
"timestamp": 1709337600000,
"success": false,
"code": "T1007",
"message": "INVALID_AMOUNT",
"data": null
}

信封字段

字段类型说明
versionstringAPI 版本(如 1.3.0
timestamplong响应时间戳,毫秒级 epoch 时间
successboolean成功操作为 true,错误为 false
codestring机器可读的结果码。2xxx = 成功,带域前缀的码 = 错误
messagestring人类可读的结果描述
dataobject / null成功时为响应数据载荷;错误时始终为 null
提示 程序化错误处理

始终先检查 success 字段。当 successfalse 时,使用 code 字段进行程序化处理(如重试逻辑、用户提示消息)。message 字段仅供参考,可能在 API 版本间变化 -- 不要程序化解析它。


HTTP 状态码

Lampay API 使用标准 HTTP 状态码。以下表列出了您可能遇到的所有状态码:

状态码含义返回场景
200OK请求成功,响应体包含结果
201Created新资源创建成功
204No Content请求成功,无响应体(如 DELETE 操作)
400Bad Request参数校验错误、无效参数或业务规则违反
401Unauthorized缺少或无效的认证信息(API 密钥错误、签名不匹配、时间戳过期)
403Forbidden认证成功但调用方缺少此操作的权限
404Not Found请求的资源不存在
409Conflict资源已存在或操作与当前状态冲突
429Too Many Requests超出速率限制 -- 等待后重试
500Internal Server Error服务器内部错误 -- 如持续出现请联系支持

错误码目录

错误码由域前缀加数字标识组成。前缀标识生成错误的模块;完整编码唯一标识错误条件。

S -- 系统 / 基础设施

可在任何端点上出现的通用系统级错误。

错误码名称HTTP说明
S001INTERNAL_ERROR500服务器内部错误。如持续出现请联系支持。
S002SERVICE_UNAVAILABLE503依赖服务不可用。请在短暂延迟后重试。
S003TIMEOUT504操作超时。请求可能已被处理也可能未被处理。
S004INVALID_REQUEST400请求格式错误(如无效的 JSON 语法)。
S005UNAUTHORIZED401需要认证但未提供。
S006FORBIDDEN403访问被拒绝。调用方不具备所需角色或权限。
S007NOT_FOUND404请求的资源未找到。
S011VALIDATION_ERROR400一个或多个请求字段未通过校验。
S012INVALID_PARAMETER400参数值无效(类型错误、超出范围等)。
S013MISSING_PARAMETER400请求缺少必填参数。
S031DATA_NOT_FOUND404数据库中未找到请求的数据记录。
S032DATA_ALREADY_EXISTS409具有相同唯一键的记录已存在。
S034CONCURRENT_MODIFICATION409乐观锁冲突。另一个操作并发修改了此资源。请重试。

W -- 钱包

钱包账户和余额操作的错误。

错误码名称HTTP说明
W1001ACCOUNT_NOT_FOUND404钱包账户未找到。
W1002ACCOUNT_INACTIVE400钱包账户未激活。请先激活再执行操作。
W1003ACCOUNT_FROZEN400钱包账户已冻结。请联系管理员。
W1004ACCOUNT_ALREADY_EXISTS409具有此身份的钱包账户已存在。
W3001INSUFFICIENT_BALANCE400钱包余额不足以完成此操作。
W3003INSUFFICIENT_AVAILABLE400可用余额(扣除冻结部分)不足。
W3005OPTIMISTIC_LOCK_CONFLICT409检测到钱包余额的并发修改。请重试操作。
W5005CURRENCY_NOT_SUPPORTED400此钱包不支持指定的币种。
W9004MISSING_WORKSPACE_CONTEXT401缺少工作空间上下文。请确保 API 密钥已关联到工作空间。

T -- 转账

转账创建和处理的错误。

错误码名称HTTP说明
T1001SOURCE_WALLET_NOT_FOUND404源钱包未找到。
T1002TARGET_WALLET_NOT_FOUND404目标钱包未找到。
T1005CURRENCY_MISMATCH400源钱包和目标钱包使用不同的币种。
T1006SAME_WALLET_TRANSFER400不能向同一钱包转账。
T1007INVALID_AMOUNT400转账金额必须为正数。
T1008INSUFFICIENT_BALANCE400源钱包余额不足。
T1020ORDER_NOT_FOUND404转账订单未找到。
T1023DUPLICATE_REQUEST409具有此幂等键的转账已被处理。
T1040EXECUTION_FAILED500转账执行失败。资金未被转移。
T1044TARIFF_NOT_CONFIGURED400钱包费率(手续费方案)未配置。请联系管理员。

GA -- 网关认证

API 网关认证流水线的错误。完整的验证流水线请参阅 HMAC 认证

错误码名称HTTP说明
GA2001API_KEY_REQUIRED401缺少 X-Api-Key 头。
GA2002SIGNATURE_REQUIRED401缺少 X-Signature 头。
GA2011API_KEY_INVALID401API 密钥无效或未找到。
GA2012SIGNATURE_INVALID401签名验证失败。
GA2013TIMESTAMP_EXPIRED401请求时间戳超出 60 秒窗口。
GA2021API_KEY_DISABLED403API 密钥已被禁用。
GA2022IP_NOT_ALLOWED403客户端 IP 不在白名单中。
GA2024SCOPE_DENIED403API 密钥缺少所需权限范围。
GA2032WORKSPACE_NOT_FOUND404工作空间未找到。
GA2034WORKSPACE_NOT_MEMBER403用户不是工作空间成员。

错误处理最佳实践

提示 重试策略

对于 5xx 错误和 429(速率限制),实施带抖动的指数退避。初始延迟 1 秒,每次重试加倍,并添加随机抖动以避免惊群效应。最多重试 3-5 次。

提示 幂等性

对于创建资源的 POST 操作,使用幂等键。如果请求因网络错误失败而您重试,幂等键可防止重复创建。T1023(DUPLICATE_REQUEST)响应意味着您的原始请求已成功处理。

提示 用户提示消息

在您的应用中将错误码映射为用户友好的消息。不要向终端用户显示原始错误码或 message 字段 -- 它们面向开发者。构建一个翻译层,将类似 W3001 的错误码转换为"余额不足,无法完成此转账"之类的消息。

提示 日志记录

对每个错误记录完整的响应信封(包括 codemessagetimestamp)。timestamp 字段有助于在与 Lampay 支持团队合作时将客户端错误与服务端日志进行关联。