认证与签名
接入 OristaPay Open API 采用 双重认证:- OAuth2 访问令牌 — 证明调用方身份
- HMAC 请求签名 — 证明请求未被篡改
每次请求必须同时通过两层校验,任一失败即返回 401 Unauthorized。
1. 获取访问令牌
标准 OAuth2client_credentials 流程。
请求
access_token在expires_in秒内可复用,建议缓存并在到期前 30 秒主动刷新access_token必须由与X-Api-Key对应的 OAuth 客户端签发
2. 请求签名算法
待签字符串拼接规则
参考实现
- Python
- Java
- Node.js
3. 请求头规范
所有业务请求必须同时携带以下请求头:请求与响应约定
协议规范响应信封
所有响应均为单层 JSON{ code, message, data? },由下游业务服务返回,网关不再做二次包装。
成功(业务正常)
业务码 code = 1,业务数据在 data 中:
200,错误细节由业务码 code / message 表达:
200,code 为负整数(与 gRPC StatusCode 取负,如 -14 表示 UNAVAILABLE),message 给出连接错误详情。
网关层错误
路由未命中、网关内部异常、descriptor 缺失等。HTTP 状态码使用对应错误码(如 400 / 404 / 500 / 502),响应体仍为单层 {code, message}:
- HTTP 状态码反映传输层处理结果:
2xx表示请求成功送达下游并完成转换;非2xx表示网关侧错误 - 业务码
code反映业务层处理结果:1表示业务成功,data承载返回值;其他值为业务错误码,message给出原因描述 - 判断成功的正确姿势:HTTP
2xx+ 业务code == 1,两者皆满足才表示业务调用成功 - 认证类错误:
Authorization/X-Signature/X-Timestamp/X-Nonce任一校验失败统一返回 HTTP401,响应体为{"code":401,"message":"Unauthorized"}
错误处理
HTTP 状态码与业务码
响应体统一为单层{code, message, data?}。HTTP 状态码反映网关/传输层结果,业务码 code 反映业务处理结果。
认证失败排查清单
所有认证类错误统一返回:- Token 是否有效 — 是否过期?是否由当前
api_key签发? - 签名是否匹配 —
METHOD / PATH / BODY是否与实际发送一致? - 时间戳是否在窗口内 — 本机时钟是否与 NTP 同步?
- Nonce 是否唯一 — 5 分钟内同一
api_key下不得复用
限流策略
超限响应示例
需要更高配额请联系商务,调整后次分钟生效。

