极客场馆 极客场馆
← 回到开发者文档

凭据创建与管理

开放平台凭据(AppId / AppSecret / AesKey)的创建、配置、轮换与排错——对接前的第一步。

开放平台凭据管理

外部系统(商城 / 自助机 / 第三方 ERP)要调极客场馆 OpenAPI,必须先在管理后台创建一对凭据—— AppId 公开标识 + AppSecret 签名密钥。本文讲怎么创建、配置、轮换、排错。

凭据有哪几样东西

字段性质用途
AppId公开标识跟着请求头发送,类似用户名(例 gk_open_20260527_fjb2ui
AppSecret32 字节 base64 签名密钥用于请求签名,只在创建/轮换时返回一次,泄露立即作废
AesKey32 字节 AES-256 数据密钥启用加密通道时下发,用于敏感字段端到端加密,仅这一次能拿到

⚠️ AppSecret / AesKey 创建后只返回一次——关闭那个弹窗就再也看不到。必须立刻 保存到对接方安全的地方(密钥管理服务 / 环境变量),千万别截图发群、别提交 git。

谁能创建

  • 门店管理员(gym_admin)或品牌管理员(brand_admin),有 INTEGRATION_OPEN_API capability
  • 平台管理员可跨品牌帮门店创建(场馆 onboarding 阶段常用)

创建无审批流,提交即生效。唯一例外:含 wallet:deduct scope(线下扣款权限)的 凭据,架构预留了审批入口——当前没启用、走默认放行,未来上紧时会卡审批。

创建流程(5 步)

Step 1 · 进管理后台

后台路由:/gym-manage/open-api(菜单”开放平台 → 凭据管理”)。

页面顶部”+ 新建凭据”按钮。

Step 2 · 填字段

字段必填说明
名称 (name)给凭据起个识别名,比如”商城对接-2026”,≤ 64 字符。仅给运营自己看
权限范围 (scopes)多选:member:read / order:read / wallet:read / wallet:deduct最小权限原则:商城对接通常 member:read + order:read 就够
IP 白名单逗号分隔多个 IP;扣款类凭据强烈建议填,没填等于互联网任意 IP 都能用
每秒请求数 (rateLimitQps)默认 20;流量大的对接方按需调高
过期时间 (expiresAt)留空表示不过期;建议给短期合作配明确过期日
环境 (environment)prod(真实数据真实扣款)/ sandbox(数据真实但扣款不落账,用来跑联调)
启用加密通道 (enableAesChannel)勾上则同时下发 AesKey,敏感字段(如会员手机号)走端到端 AES 加密

Step 3 · 保存 + 立刻复制 secret

点保存后弹窗显示 AppId + AppSecret(+ AesKey 如有),这是唯一能看 secret 的机会。 复制到密钥管理服务 / .env,确认存好后再关弹窗。

Step 4 · 把 AppId / AppSecret 给对接方

按”开放平台总览”和”开发者接入文档”里的签名格式给对接方接入。

Step 5 · 上线监控

凭据列表页可查每个凭据的:状态(active / disabled)/ 当前 QPS / 最近调用时间 / 调用次数 / 最后一次错误。

后续运维

轮换 Secret

每 6 个月或怀疑泄露时点”轮换 Secret”——新 secret 一次性显示、旧 secret 立即失效。 对接方要同步切换 secret 否则签名报错。没有”灰度切换”——切就是切。

禁用 / 启用

把 status 从 activedisabled——所有调用立即被拒(HTTP 403),但凭据保留、 配置可改、随时切回 active。比删除柔性。

删除

逻辑删除(deleted=1)。建议先 disable 观察一周确认对接方真没在用了再删。

常见错误排查

40101 SignatureInvalid 签名错

按概率从高到低排查:

  1. PATH 拼接错 — 待签 PATH 必须含 /api 前缀、不含 query string、不含 fragment
  2. query 没排序 — 多个 query 参数必须按 key 字典序排列再拼接
  3. 空 body 误算 — 空 body 时签名里的 body 部分用 SHA256(""),不是空字符串
  4. AppSecret 粘贴问题 — 复制时遗漏字符或多了空白
  5. 行尾换行 — 待签字符串末尾有多余 \n

具体签名格式见 开发者接入文档

40102 ClockSkew 时间偏移

签名带 timestamp,服务端容忍 ±300s。对接方机器没挂 NTP 时钟漂太多会被拒。 让对接方挂 NTP(chrony / ntpd)。

40103 ScopeRequired 权限不足

凭据 scopes 数组没包含当前接口要的权限。后台编辑凭据 → 勾上对应 scope → 保存。 不需要重发 secret。

40104 IpDenied IP 白名单拒绝

凭据配了白名单但当前 IP 不在内。后台编辑凭据 → IP 白名单加上对接方公网出口 IP。

40301 CredentialDisabled 凭据禁用

凭据 status=disabled 或 deleted=1。后台启用即可恢复。

42901 RateLimited 限流

对接方 QPS 超过凭据配额。临时方案:提高 rateLimitQps;长期方案:让对接方做客户端限流 + 重试退避。

相关