hyapp-server/docs/flutter对接/Fami_VIP设置开关Flutter接口对接文档.md
2026-07-21 11:31:21 +08:00

5.2 KiB

Fami VIP 设置接口对接文档

1. 接口范围

本文档只描述 Fami VIP 设置相关接口、请求参数和返回字段。

2. 设置字段

VIP 等级 设置项 benefit_code 接口字段 无记录默认值
VIP6 隐藏个人数据 hide_profile_data hide_profile_data_enabled false
VIP6 榜单隐身 leaderboard_invisible leaderboard_invisible_enabled false
VIP7 匿名访问主页 anonymous_profile_visit anonymous_profile_visit_enabled false
VIP8 进房全服通知 room_entry_notice room_entry_notice_enabled true
VIP9 上线全服通知 online_global_notice online_global_notice_enabled true

updated_at_ms = 0 表示用户尚未修改,当前返回的是默认值。

3. 公共请求约定

3.1 请求头

Authorization: Bearer {access_token}
X-App-Code: fami
Content-Type: application/json

3.2 统一响应结构

{
  "code": "OK",
  "message": "OK",
  "data": {},
  "request_id": "req_xxx"
}

接口成功条件为 code == "OK"

4. 查询当前用户设置

4.1 请求

GET /api/v1/vip/settings

请求体:无。

4.2 成功响应

{
  "code": "OK",
  "message": "OK",
  "data": {
    "settings": {
      "app_code": "fami",
      "user_id": 10001,
      "room_entry_notice_enabled": true,
      "online_global_notice_enabled": true,
      "hide_profile_data_enabled": false,
      "anonymous_profile_visit_enabled": false,
      "leaderboard_invisible_enabled": false,
      "updated_at_ms": 0
    },
    "evaluated_at_ms": 1784563200000
  },
  "request_id": "req_vip_settings_get"
}

5. 修改当前用户设置

5.1 请求

PATCH /api/v1/vip/settings

请求体支持以下可选字段:

{
  "room_entry_notice_enabled": true,
  "online_global_notice_enabled": true,
  "hide_profile_data_enabled": false,
  "anonymous_profile_visit_enabled": false,
  "leaderboard_invisible_enabled": false
}

PATCH 规则:

  • 每次请求至少传一个设置字段。
  • 未传字段保持原值。
  • 显式传 false 表示关闭该设置。
  • 不支持修改其他用户的设置。

单字段请求示例:

{
  "hide_profile_data_enabled": true
}

5.2 成功响应

修改成功后返回完整设置对象:

{
  "code": "OK",
  "message": "OK",
  "data": {
    "settings": {
      "app_code": "fami",
      "user_id": 10001,
      "room_entry_notice_enabled": true,
      "online_global_notice_enabled": true,
      "hide_profile_data_enabled": true,
      "anonymous_profile_visit_enabled": false,
      "leaderboard_invisible_enabled": false,
      "updated_at_ms": 1784563200123
    },
    "server_time_ms": 1784563200150
  },
  "request_id": "req_vip_settings_patch"
}

6. VIP 用户信息接口返回设置

6.1 请求

GET /api/v1/vip/me

设置字段路径:

data.state.user_settings

精简响应示例:

{
  "code": "OK",
  "data": {
    "state": {
      "effective_vip": {
        "level": 8,
        "name": "VIP8",
        "active": true
      },
      "effective_benefits": [
        {
          "benefit_code": "room_entry_notice",
          "status": "active"
        }
      ],
      "user_settings": {
        "app_code": "fami",
        "user_id": 10001,
        "room_entry_notice_enabled": true,
        "online_global_notice_enabled": true,
        "hide_profile_data_enabled": false,
        "anonymous_profile_visit_enabled": false,
        "leaderboard_invisible_enabled": false,
        "updated_at_ms": 0
      }
    }
  },
  "request_id": "req_vip_me"
}

真实响应还包含 paid_vipequipped_trial_cardeffective_sourceevaluated_at_msprogram_config 等字段。

7. 当前用户聚合信息返回设置

7.1 请求

GET /api/v1/users/me/overview

设置字段路径:

data.vip.user_settings

精简响应示例:

{
  "code": "OK",
  "data": {
    "profile": {
      "user_id": "10001",
      "username": "Nina"
    },
    "vip": {
      "level": 8,
      "name": "VIP8",
      "active": true,
      "started_at_ms": 1780000000000,
      "expires_at_ms": 1782592000000,
      "user_settings": {
        "app_code": "fami",
        "user_id": 10001,
        "room_entry_notice_enabled": true,
        "online_global_notice_enabled": true,
        "hide_profile_data_enabled": false,
        "anonymous_profile_visit_enabled": false,
        "leaderboard_invisible_enabled": false,
        "updated_at_ms": 0
      }
    }
  },
  "request_id": "req_user_overview"
}

补充约定:

  • data.vip.unavailable == true 表示本次 VIP 上游查询降级。
  • 他人公开资料接口 GET /api/v1/users/by-id/{user_id}/profile 不返回 user_settings

8. 错误响应

HTTP 状态码 code 说明
400 INVALID_ARGUMENT 请求体为空、字段名错误或字段类型错误。
401 UNAUTHORIZED Access Token 无效或已过期。
403 FORBIDDEN 无权跨 App 或修改其他用户设置。
502 UPSTREAM_ERROR VIP/Wallet 上游服务异常。

错误处理应以稳定的 code 为准,不依赖 message 文案。