羊多多APP · 激流勇往直前 对接API文档

版本: v1.0
Base URL: https://<your-domain>(服务器地址,从客户端APP获取)
认证: 登录后返回 token,后续接口通过请求头 Authorization: Bearer <token> 访问


业务流程

flowchart TD
    A[羊多多APP] -->|启动小游戏| B[小游戏启动]
    A -->|POST /game/auth 传递用户+服务端信息| B
    B --> C{已在APP登录?}
    C -- 是 --> D[加载配置/资源]            C -- 否 --> G[弹窗提示前往APP登录 终止进入小游戏]
    D --> E[GET /user/{id} 拉取用户数据]
    E --> F[进入首页/待机]
    F --> H[GET /game/rank 排行榜]
    F --> I[POST /game/energy/exchange 能量兑换]
    F --> J[POST /game/match/start|end 记账]

总体约定


GET /client/info (APP提供接口)

H5 小游戏主动向 APP 客户端请求用户与服务端配置信息,用于后续调用 /game/auth 完成认证并访问服务端接口。

示例

GET /client/info HTTP/1.1
{
  "code": 0,
  "errMsg": "",
  "data": {
    "userId": "u_9d2b3f1a",
    "appToken": "app-token-xxx",
    "serverConfig": {
      "root_url": "https://api.example.com",
      "cdn_url": "https://cdn.example.com/1.2.4/",
      "config_url": "config.json"
    }
  }
}

认证与用户数据

POST /game/auth (服务端提供接口)

用于小游戏认证,核实用户是否已在羊多多APP登录,同时下发服务端配置信息。

示例

POST /game/auth HTTP/1.1
Content-Type: application/json
{
  "userId": "u_9d2b3f1a",
  "appToken": "app-token-xxx"
}
{
  "code": 0,
  "errMsg": "",
  "data": {
    "authorized": true,
    "userId": "u_9d2b3f1a",
    "token": "eyJhbGciOi...",
    "serverConfig": {
      "root_url": "https://api.example.com",
      "cdn_url": "https://cdn.example.com/1.2.4/",
      "config_url": "config.json",
    }
  }
}

未登录示例

{ "code": 1001, "errMsg": "未在APP登录,请前往APP登录后重试", "data": { "authorized": false } }

GET /user/{id} (服务端提供接口)

拉取用户资料与游戏进度数据。

示例

GET /user/u_9d2b3f1a HTTP/1.1
Authorization: Bearer eyJhbGciOi...
{
  "code": 0,
  "errMsg": "",
  "data": {
    "userId": "u_9d2b3f1a",
    "nickName": "羊乐乐",
    "avatarUrl": "https://cdn/avatar/xxx.png",
    "gender": 1,
    "profile": {
      "gold": 280,
      "highScore": 5230,
      "exp": 180,
      "level": 7,
      "skills": { "101": 3, "102": 1 },
      "cars": { "0": 1, "3": 1 },
      "carsLv": { "0": 5 },
      "carsSkin": { "0": 12 },
      "carskinUnlock": { "12": 1, "200": 1 },
      "energy": 8,
      "maxEnergy": 20,
      "energyRemainSec": 45,
      "starBank": 36,
      "lastExitTime": 1731540000,
      "playNum": 5
    }
  }
}

PUT /user/{id} (服务端提供接口)

同步/更新指定用户的统一数据。用于双向打通,将客户端新增字段合并入服务端存储。

示例

PUT /user/u_9d2b3f1a HTTP/1.1
Authorization: Bearer eyJhbGciOi...
Content-Type: application/json
{
  "userId": "u_9d2b3f1a",
  "profile": {
    "gold": 300,
    "highScore": 5230,
    "level": 7,
    "energy": 7,
    "maxEnergy": 20,
    "energyRemainSec": 300,
    "starBank": 40
  }
}
{ "code": 0, "errMsg": "", "data": { "updated": true } }

排行榜

GET /game/rank (服务端提供接口)

获取排行榜列表;默认按段位与最高分排序。

示例

GET /game/rank?page=1&row=10 HTTP/1.1
Authorization: Bearer eyJhbGciOi...
{
  "code": 0,
  "errMsg": "",
  "data": {
    "list": [
      { "userId": "u_a1", "nickName": "玩家A", "avatarUrl": "", "gender": 0, "highScore": 8860, "level": 9 },
      { "userId": "u_b2", "nickName": "", "avatarUrl": "", "gender": 0, "highScore": 7310, "level": 8 }
    ],
    "page": 1,
    "row": 10,
    "total": 245
  }
}

能量体系

POST /game/energy/exchange (服务端提供接口)

使用羊多多APP金币兑换游戏能量;兑换比例由后台配置。

示例

POST /game/energy/exchange HTTP/1.1
Authorization: Bearer eyJhbGciOi...
Content-Type: application/json
{
  "userId": "u_9d2b3f1a",
  "coins": 100,
  "requestId": "req_20251114_0001"
}
{
  "code": 0,
  "errMsg": "",
  "data": { "energyDelta": 10, "energyAfter": 18, "maxEnergy": 20, "rate": "10_coins:1_energy", "requestId": "req_20251114_0001" }
}

比赛记账

POST /game/match/start (服务端提供接口)

开局扣能量并返回本局凭证。

POST /game/match/end (服务端提供接口)

结算上报本局结果;服务端计算并落库,同时按最高分与段位更新排行榜。


错误码


业务规则说明


安全与性能


字段字典


如需我根据后端实际实现调整字段命名或增加更多示例,请告知。