游戏商列表查询
获取当前 Agent 可访问的 Brand 列表及其实际可用币种,按 Brand GUID 保持独立。
环境地址
| 环境 | Base URL |
|---|---|
| 生产环境 | https://hub-panel-api.v7stech.com |
| 测试环境 | https://hub-panel-api-dev.v7stech.com |
接口信息
| 属性 | 值 |
|---|---|
| 路径 | POST /papi/v1/game/providers |
| 认证 | Agent Token(Bearer) |
| Content-Type | application/x-www-form-urlencoded |
请求头
| Header | 值 | 必填 |
|---|---|---|
Authorization | Bearer {agent_token} | ✅ 必填 |
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
currency | string | 否 | 筛选实际可用币种,例如 MYR;省略或 ALL 表示不筛选单一币种 |
请求示例
bash
curl -X POST https://api.example.com/papi/v1/game/providers \
-H "Authorization: Bearer {agent_token}" \
-d "currency=IDR"AI 开发提示词(可直接复制)
text
请修改当前包网项目的 VCT 游戏目录接入,复用现有 HTTP Client、Agent Token、分页和错误处理。
接口:POST {VCT_BASE_URL}/papi/v1/game/providers 与 POST {VCT_BASE_URL}/papi/v1/game/list。
Content-Type:application/x-www-form-urlencoded;Authorization:Bearer {agent_token}。凭证及签名只在后端处理。
实现要求:
1. providers 的 data 数组和 game/list 的 data.list 均保存 brand_guid、brand_code、brand_name;providers.data 另外返回 Brand 图片字段 logo_url。两个目录响应不再返回 brand,不要要求或读取这个响应字段。名称、编码和图片地址读取 Hub 的 Brand 主资料,不从 Product Name 推导。
2. brand_guid 是 Hub Brand 唯一键;不同 GUID 即使 Code、Name 完全相同也必须分别保存。以 brand_guid 做关联、缓存键和选择器 value;显示 brand_name,辅以 brand_code。logo_url 只用于展示,不得作为身份或缓存键;为空时显示默认图或占位图。
3. 选中 Brand 后调用 game/list 传 brand_guid 精确筛选,不再用名称或 Code 唯一定位;类型筛选使用数字 game_genre,保留 currency 与分页。page 默认 1,pageSize 默认 10、最大 100;批量拉取按 data.total 读完全部分页。
4. 游戏仍以返回的 id 作为 game_id 保存和启动;不要把 brand_guid 当作 game_id。currency 可能为逗号分隔的实际可用币种;请求 currency=ALL 或省略表示不过滤单一币种,不绕过授权,也不能用 ALL 启动游戏。
5. 成功需同时满足 HTTP 成功、code=0、status 不为 false;空数组是正常结果。保留维护状态、图片、币种和分类逻辑,切换筛选取消过期请求。
6. 迁移旧数据时保留历史交易与关联;禁止仅凭名称或 Code 自动合并、猜测 GUID。可唯一确认的旧关联才回填;有歧义的列出清单。新接口未部署或缺少 brand_guid 时给出升级提示,停止迁移,不能回退为按名称合并或清空已有数据。
7. bet-push 回调也携带 brand_guid、brand_code、brand_name,注单通过 brand_guid 关联目录。game/rates 也支持 brand_guid 精确筛选并返回三个 Brand 字段;费率、目录和注单使用同一 GUID 关联,保留历史账单及计算规则。
8. 测试同名同 Code 不同 GUID 保持独立、GUID 筛选、两接口字段一致、Brand 改名后关联不变、多页完整拉取、空结果、旧响应缺字段与迁移歧义。凭证和完整 Token 不得进入前端或普通日志。
先检查现有代码,然后完成最小必要修改、测试和迁移说明;说明修改文件及仍需人工确认的旧数据。Brand 唯一标识与迁移
两接口统一通过已有 brand_guid 查询 Hub Brand 主资料,返回 brand_guid、brand_code、brand_name;/game/providers 还返回 logo_url。不再返回重复的 brand 响应字段。编码使用 brand_code,名称使用 brand_name。Code 与 Name 都可能跨来源重复,包网必须用 brand_guid 作为唯一键,名称仅用于显示。logo_url 只用于展示,可能为空或因运营更换图片而变化。
/game/providers 按 Brand GUID 保持独立,不合并同 Code / Name 的不同 Brand;选择 Brand 后,将它的 brand_guid 原样传给 /game/list。原 brand 参数仍可按当前 Code 或 Name 搜索,但可能返回多个 Brand。缺失或已删除的 Brand、空 Brand Code 不返回。
此契约需部署更新后的 Hub 后端才能使用。对缺少 brand_guid 的旧响应,应提示升级并暂停迁移,不能退回按名称合并。旧关联只在能唯一确认时回填 GUID,保留历史交易,有歧义的数据人工核对。
游戏日志推送使用相同的 Brand GUID 关联注单。费率查询也支持相同的 brand_guid 精确筛选与关联。
响应字段
Data[Item] 结构
| 字段 | 类型 | 说明 |
|---|---|---|
brand_guid | string | Hub Brand 唯一 GUID,关联和选择器使用此字段 |
brand_code | string | Hub Brand 主资料的当前 Code,不保证跨 Brand 唯一 |
brand_name | string | Hub Brand 主资料的当前 Name,仅用于显示 |
logo_url | string | Brand 图片公开 URL,仅用于展示;未配置图片时为空字符串 |
currencies | array[string] | 该品牌在此代理下已启用的币种列表 |
categories | array[string] | 兼容字段,内容来自游戏 game_genre 的去重显示名称(如 Slot、Other);不返回数字,也不来自 Game Category |
响应示例
json
{
"status": true,
"code": 0,
"data": [
{
"brand_guid": "30ff77f5-0616-4ecc-a8a3-80e35fcaaf3e",
"brand_code": "1007",
"brand_name": "PG Soft",
"logo_url": "https://cdn.example.com/brands/pg-soft.png",
"currencies": [
"MYR"
],
"categories": [
"Slot"
]
}
],
"msg": "获取成功"
}