Summary API 接口文档
说明
本文档是由PV提供给外部开发商查询用户游玩过程中产生的下注、盈利等动作的接口文档,下文所涉及的接口均使用 POST 请求, 需带上ts、sign、mch_id以及data。
1. 金额参数
接口交互中涉及到的金额参数都以厘为单位,数据类型为int64。
1元 = 1000厘
1分 = 10厘
2. 时间
接口中所有涉及的时间均为UTC时间, 时间筛选规则为左闭右开: time_start <= query_time < time_end。
3. 全局请求接口格式
请求方式:POST 请求结构:
{
"ts": 1742452087, # int类型
"sign": "5b53eb607246fbfc94d16b7806ec7613",
"mch_id": 101, # int类型
"data": {}
}
请求参数说明:
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
ts | 10位时间戳 | int | 是 | |
sign | 签名 | str | 是 | 固定32位 |
mch_id | 商户id | int | 是 | |
data | 接口参数 | dict | 是 |
4. 全局接口返回格式
所有正常返回的status_code均为200,请按照body里的code字段处理异常。
{
"code": 200,
"msg": "",
"data": {...} | [...]
}
返回字段说明:
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
code | 错误编码 | int | 是 | |
msg | 错误提示 | str | 是 | |
data | 具体接口返回 | dict | list | 是 | 根据不同接口返回字典或列表 |
5. 全局错误码
错误码 | 错误信息 | 说明 |
---|---|---|
200 | 成功 | |
400 | 参数错误 | |
500 | 内部错误 |
接口签名(sign)算法
注: data字典转换为一个紧凑的 JSON 格式字符串(去掉空格),键值对之间使用逗号分隔,键和值之间使用冒号分隔,并且键会按照字母顺序排序(ASCII码顺序)。而后再加上ts和key(商户key,由我方提供)计算md5值。
Python
import hashlib
import json
def compute_md5(data: str, ts_str: str, key: str) -> str:
m = hashlib.md5()
m.update(data.encode("utf-8"))
m.update(ts_str.encode("utf-8"))
m.update(key.encode("utf-8"))
return m.hexdigest()
if __name__ == "__main__":
# 商户key
key = "xxxxxxxxxxxxxxx"
# 请求参数
request_json = {
"ts": 1742452087, # int类型
"mch_id": 101, # int类型
"data": { # data为空也需要计算 data_str = "{}"
"game_id": 1011,
"draw_id": "1011-12312-1232131"
}
}
# 排序后转换为字符串
data_str = json.dumps(
{k: v for k, v in request_json['data'].items()},
separators=(",", ":"),
sort_keys=True)
# 计算sign
sign = compute_md5(data_str, str(request_json['ts']), key)
具体接口文档
注:以下接口文档只涉及接口本身的字段(data),不包含需全局传入的ts、sign、mch_id
1. 所有游戏汇总接口
1.1 所有游戏列表 /api/all/list
Method: POST
URI: /api/all/list
Description: 通过接口返回给OP相关GameList信息以及图标资源url,方便OP查询游戏更新情况。
Request Body:
Content-Type: application/json
"data": {}
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": [
{
"game_id": 1006,
"game_name": "Elves",
"game_type": "Slots",
"resource_url": "https://www.google.com",
"resource_with_name_url": "https://www.google.com"
},
{
"game_id": 1007,
"game_name": "777-fruit",
"game_type": "Slots",
"resource_url": "https://www.google.com",
"resource_with_name_url": "https://www.google.com"
}
]
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
game_id | 游戏id | int | |
game_name | 游戏名称 | str | |
game_type | 游戏类型 | str | Slots、Multiplayer(百人)、Crypto(区块链)、Table(对战)、Fish(捕鱼) |
resource_url | 游戏资源地址 | str | |
resource_with_name_url | 游戏资源地址(带名称) | str |
1.2 所有游戏阶段汇总 /api/all/stage/summary
Method: POST
URI: /api/all/stage/summary
Description: 用于获取所有游戏阶段汇总。
Request Body:
Content-Type: application/json
"data": {
"time_start": 1742365687,
"time_end": 1742452087
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": {
"day_list": [
{
"date": "2025-03-20",
"bet_count": 102,
"bet_amount": 38388400,
"gain_amount": -19038400,
"company_gain_amount": 19038400
},
{
"date": "2025-03-19",
"bet_count": 278,
"bet_amount": 255164400,
"gain_amount": -36218400,
"company_gain_amount": 36218400
}
],
"summary": {
"bet_count": 380,
"bet_amount": 293552800,
"gain_amount": -55256800,
"company_gain_amount": 55256800
}
}
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
day_list | 按日期分割列表 | list | |
date | 日期 | str | |
bet_count | 当日所有玩家总下注次数 | int | |
bet_amount | 当日所有玩家总投注金额 | int | |
gain_amount | 当日所有玩家总赢钱金额 | int | |
company_gain_amount | 当日公司盈亏 | int | |
summary | 阶段汇总dict | dict | |
bet_count | 阶段所有玩家总下注次数 | int | |
bet_amount | 阶段所有玩家总投注金额 | int | |
gain_amount | 阶段所有玩家总赢钱金额 | int | |
company_gain_amount | 阶段公司盈亏 | int |
1.3 所有游戏投注投注历史记录 /api/all/history
Method: POST
URI: /api/all/history
Description: 用于【OP商户】查询各种类型游戏的投注历史数据
Request Body:
Content-Type: application/json
"data": {
"time_start": 1744790000,
"time_end": 1744990439,
"page_size": 2000,
"page": 1,
"game_ids": [2000, 3015]
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
time_start | 开始时间,10位时间戳 | int | 是 | 开始时间与结束时间不可跨天查询, 开始与结束时间跨度不能超过1小时 |
time_end | 结束时间,10位时间戳 | int | 是 | 开始时间与结束时间不可跨天查询, 开始与结束时间跨度不能超过1小时 |
page_size | 分页大小 | int | 否 | 默认1000条,上限2000条 |
page | 页码 | int | 否 | 默认1 |
game_ids | 游戏ID列表 | list[int] | 否 | []或不传字段返回所有游戏 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": {
"items": [
{
"event_id": "8234c460-481e-11f0-a82e-12cf39a4209e",
"draw_id": "1062-0-311-1744790148-0",
"game_id": 1062,
"user_id": 102115212044,
"op_id": "",
"bet_amount": 100000,
"gain_amount": -100000,
"credit_before_bet": 120589196,
"credit": 120489196,
"start_at": 1744790148,
"end_at": 1744790148
},
{
"event_id": "8290ab4a-481e-11f0-a82e-12cf39a4209e",
"draw_id": "1062-0-311-1744790151-0",
"game_id": 1062,
"user_id": 102115212044,
"op_id": "",
"bet_amount": 100000,
"gain_amount": -100000,
"credit_before_bet": 120489196,
"credit": 120389196,
"start_at": 1744790151,
"end_at": 1744790151
}
],
"total": 115,
"page": 20,
"page_size": 3
}
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
items | 记录列表 | list | |
event_id | 事件id | str | |
draw_id | 牌局id | str | |
game_id | 游戏id | int | |
user_id | 用户id | int | |
op_id | OP用户id | str | |
bet_amount | 下注金额 | int | |
gain_amount | 输赢金额 | int | |
credit_before_bet | 游戏前余额 | int | |
credit | 游戏后余额 | int | |
start_at | 牌局开始时间,10位时间戳 | int | |
end_at | 牌局结束时间,10位时间戳 | int | |
total | 总条数 | int | |
page | 页码 | int | |
page_size | 分页大小 | int |
1.4 红利汇总 /api/all/bonus/summary
Method: POST
URI: /api/all/bonus/summary
Description: 用于【OP商户】查询红利汇总数据
Request Body:
Content-Type: application/json
"data": {
"mch_id": 114,
"user_id": 102115212044,
"op_id": "21312312",
"game_ids": [1033, 1062],
"create_type_list": [1, 2, 3],
"state_list": [1, 2, 3, 4, 5],
"time_start": 1744790000,
"time_end": 1744990439
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
mch_id | 商户id | int | 是 | 本商户或下级商户 |
user_id | 用户id | int | 否 | |
op_id | OP用户id | str | 否 | |
game_ids | 游戏ID列表 | list[int] | 否 | []或不传字段返回所有游戏 |
create_type_list | 创建类型列表 [1:API创建 | 2:后台创建 | 3:官方创建] | list[int] | 否 | []或不传字段返回所有创建方式 |
state_list | 红利状态列表 [1:启用中 | 2:打码中 | 3:已完成 | 4:已取消 | 5:已过期 ] | list[int] | 否 | []或不传字段返回所有状态 |
time_start | 创建开始时间,10位时间戳 | int | 否 | 时间范围上限60天 |
time_end | 创建结束时间,10位时间戳 | int | 否 | 时间范围上限60天 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": {
"release_count": 71,
"used_count": 45,
"release_bonus": 24109360.0,
"converted_cash": 1205500.0,
"bet_amount": 21055500,
"win_amount": -8534000
}
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
release_count | 查询条件内累计发放的bg次数 | int | |
used_count | 查询条件内累计已使用的bg次数 | int | |
release_bonus | 已使用的bg累计发放的bonus总额 | float | |
converted_cash | 已成功转换为现金的bonus总额 | float | |
bet_amount | 所有处于打码期间的下注总额 | int | |
win_amount | 所有处于打码期间的获奖总额 | int |
2. Games游戏接口
2.1 玩家历史牌局记录 /api/games/user/history
Method: POST
URI: /api/games/user/history
Description: 返回玩家Games类型游戏历史牌局记录。
Request Body:
Content-Type: application/json
"data": {
"user_id": 101106411105,
"op_id": "1234",
"time_start": 1741588087,
"time_end": 1742452087,
"limit": 10
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
user_id | 用户id | int | 否 | user_id和op_id必传其一 |
op_id | OP用户id | str | 否 | user_id和op_id必传其一 |
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
limit | 分页大小 | int | 否 | 默认50条,上限500条 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": [
{
"event_id": "3fe51802-481b-11f0-a315-72635f25a731",
"draw_id": "34063215",
"game_id": 2011,
"bet_amount": 600000,
"gain_amount": 2550000,
"credit_before_bet": 7764606460,
"credit": 7767156460,
"start_at": 1742284371,
"end_at": 1742284389,
"bet_areas": [
78,
144
],
"win_areas": [
107,
125
],
"game_result": 25,
"award_odds": null
}
]
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
event_id | 事件id | str | |
draw_id | 牌局id | str | |
game_id | 游戏id | int | |
bet_amount | 下注金额 | int | |
gain_amount | 输赢金额 | int | |
credit_before_bet | 游戏前余额 | int | |
credit | 游戏后余额 | int | |
start_at | 牌局开始时间,10位时间戳 | int | |
end_at | 牌局结束时间,10位时间戳 | int | |
bet_areas | 下注行为 | list | 百人&休闲 |
win_areas | 中奖区域 | list | Sicbo, 轮盘, Zoo, AndarBahar等 |
game_result | 开奖结果 | int | 百人 |
award_odds | 跳伞倍数 | float | CrashI&CrashII |
2.2 游戏历史牌局记录 /api/games/game/history
Method: POST
URI: /api/games/game/history
Description: 返回Games类型游戏历史牌局记录。
Request Body:
Content-Type: application/json
"data": {
"game_id": 3011,
"time_start": 1741588087,
"time_end": 1742452087,
"limit": 10
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
game_id | 游戏id | int | 是 | |
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
limit | 数据条目上限 | int | 否 | 默认50条,上限500条 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": [
{
"event_id": "167ff845-481b-11f0-a315-72635f25a731",
"draw_id": "34063215",
"game_id": 2011,
"user_id": 101115163288,
"op_id": "1234",
"bet_amount": 600000,
"gain_amount": 2550000,
"start_at": 1742284371,
"end_at": 1742284389,
"bet_areas": [
78,
144
],
"win_areas": [
107,
125
],
"game_result": 25,
"award_odds": null
}
]
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
event_id | 事件id | str | |
draw_id | 牌局id | str | |
game_id | 游戏id | int | |
user_id | 用户id | int | |
op_id | OP用户id | str | |
bet_amount | 下注金额 | int | |
gain_amount | 输赢金额 | int | |
start_at | 牌局开始时间,10位时间戳 | int | |
end_at | 牌局结束时间,10位时间戳 | int | |
bet_areas | 下注行为 | list | 百人&休闲 |
win_areas | 中奖区域 | list | Sicbo, 轮盘, Zoo, AndarBahar等 |
game_result | 开奖结果 | int | |
award_odds | 跳伞倍数 | float | CrashI&CrashII |
2.3 玩家阶段汇总 /api/games/user/stage/summary
Method: POST
URI: /api/games/user/stage/summary
Description: 返回玩家Games类型游戏阶段汇总数据。
Request Body:
Content-Type: application/json
"data": {
"user_id": 101115163288,
"op_id": "1234",
"time_start": 1741588087,
"time_end": 1742452087
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
user_id | 用户id | int | 否 | user_id和op_id必传其一 |
op_id | OP用户id | str | 否 | user_id和op_id必传其一 |
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": {
"bet_amount": 266200000,
"gain_amount": -259940000,
"credit_before_game": 7764606460,
"credit": 7503186460
}
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
bet_amount | 阶段总下注金额 | int | |
gain_amount | 阶段输赢金额 | int | |
credit_before_game | 游戏前余额 | int | |
credit | 游戏后余额 | int |
2.4 游戏阶段汇总 /api/games/game/stage/summary
Method: POST
URI: /api/games/game/stage/summary
Description: 返回Games类型游戏阶段汇总数据。
Request Body:
Content-Type: application/json
"data": {
"game_id": 2011,
"time_start": 1741588087,
"time_end": 1742452087
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
game_id | 游戏id | int | 是 | |
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": {
"bet_amount": 330400880,
"gain_amount": -31202080,
"user_count": 16,
"bet_count": 451,
"win_user_count": 8,
"lose_user_count": 8
}
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
bet_amount | 阶段下注金额 | int | |
gain_amount | 阶段输赢金额 | int | |
user_count | 阶段下注人数 | int | |
bet_count | 阶段下注次数 | int | |
win_user_count | 阶段赢人数 | int | |
lose_user_count | 阶段输人数 | int |
3. Slots游戏接口
3.1 玩家历史牌局记录 /api/slots/user/history
Method: POST
URI: /api/slots/user/history
Description: 返回玩家Slots类型游戏历史牌局记录。
Request Body:
Content-Type: application/json
"data": {
"user_id": 101106411105,
"op_id": "1234",
"time_start": 1741588087,
"time_end": 1742452087,
"limit": 10
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
user_id | 用户id | int | 否 | user_id和op_id必传其一 |
op_id | OP用户id | str | 否 | user_id和op_id必传其一 |
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
limit | 数据条目上限 | int | 否 | 默认50条,上限500条 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": [
{
"event_id": "9529eb15-481c-11f0-a82e-12cf39a4209e",
"draw_id": "1056-0-989-1742205595-0",
"user_id": 101106411105,
"op_id": "1234",
"currency": "$",
"game_id": 1056,
"feature": 0,
"extra_business": {
"award_type": 0,
"base_amount": 12000,
"free_amount": 0,
"bonus_amount": 0,
"jackpot_amount": 0,
"extra_spins": 0
},
"bet_amount": 100000,
"gain_amount": -100000,
"credit_before_bet": 7767687460,
"credit": 7767587460,
"start_at": 1742205595,
"end_at": 1742205596,
"is_buy": false
}
]
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
event_id | 事件id | str | |
draw_id | 牌局id | str | |
user_id | 用户id | int | |
op_id | OP用户id | str | |
currency | 玩家货币 | str | |
game_id | 游戏id | int | |
feature | 游戏类型 | int | 0-base, 1-free, 2-bonus, 3-jackpot |
extra_business | 额外业务信息 | dict | |
extra_business.award_type | 奖励类型 | int | 0-普通,1-freegame,2-bonus |
extra_business.base_amount | 触发局除JP之外的总奖励 | int | |
extra_business.free_amount | feature内的总赢奖,排除触发局和JP的奖励 | int | |
extra_business.bonus_amount | feature内的总赢奖,排除触发局和JP奖励 | int | |
extra_business.jackpot_amount | 统计单局游戏的所有JP总赢奖(包括std,featurre中的JP) | int | |
extra_business.extra_spins | 一局游戏中额外出现了多少次免费游戏 | int | |
bet_amount | 下注金额 | int | |
gain_amount | 输赢金额 | int | |
credit_before_bet | 玩家交易前余额 | int | |
credit | 玩家交易后余额 | int | |
start_at | 投注开始时间 | int | |
end_at | 投注结束时间 | int | |
is_buy | 是否为购买免费游戏类型 | bool |
3.2 玩家阶段汇总 /api/slots/user/stage/summary
Method: POST
URI: /api/slots/user/stage/summary
Description: 返回玩家Slots类型游戏阶段汇总数据。
Request Body:
Content-Type: application/json
"data": {
"user_id": 101115163288,
"op_id": "1234",
"time_start": 1741588087,
"time_end": 1742452087
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
user_id | 用户id | int | 否 | user_id和op_id必传其一 |
op_id | OP用户id | str | 否 | user_id和op_id必传其一 |
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": [
{
"user_id": 101106411105,
"op_id": "1234",
"game_id": 1056,
"bet_count": 2,
"bet_amount": 200000,
"gain_amount": -200000,
"currency": "$"
},
{
"user_id": 101106411105,
"op_id": "1234",
"game_id": 1019,
"bet_count": 15,
"bet_amount": 1350000,
"gain_amount": -1070000,
"currency": "$"
}
]
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
user_id | 用户id | int | |
op_id | OP用户id | str | |
game_id | 游戏id | int | |
bet_count | 阶段该游戏投注次数 | int | |
bet_amount | 阶段该游戏总投注额 | int | |
gain_amount | 阶段该游戏总赢钱 | int | |
currency | 玩家货币 | str |
3.3 游戏阶段汇总 /api/slots/game/stage/summary
Method: POST
URI: /api/slots/game/stage/summary
Description: 返回Slots类型游戏阶段汇总数据。
Request Body:
Content-Type: application/json
"data": {
"time_start": 1741588087,
"time_end": 1742452087
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
time_start | 开始时间,10位时间戳 | int | 是 | 时间范围上限60天 |
time_end | 结束时间,10位时间戳 | int | 是 | 时间范围上限60天 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": [
{
"game_id": 1041,
"bet_count": 3,
"bet_amount": 300000,
"gain_amount": 825000,
"company_gain_amount": -825000
},
{
"game_id": 1065,
"bet_count": 35,
"bet_amount": 3500000,
"gain_amount": -770000,
"company_gain_amount": 770000
}
]
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
game_id | 游戏id | int | |
bet_count | 阶段玩家总投注次数 | int | |
bet_amount | 阶段玩家总投注金额 | int | |
gain_amount | 阶段玩家总赢钱 | int | |
company_gain_amount | 阶段公司盈亏 | int |
3.4 游戏详情链接 /api/slots/detail/url
Method: POST
URI: /api/slots/detail/url
Description: 返回Slots类型游戏牌局详情网页url。
Request Body:
Content-Type: application/json
"data": {
"game_id": 1044,
"draw_id": "1044-2-685-1742794635-0"
}
请求参数说明
参数 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
game_id | 游戏id | int | 是 | |
draw_id | 牌局id | str | 是 |
Response Body:
Content-Type: application/json
{
"code": 200,
"msg": "",
"data": {
"url": "https://www.google.com"
}
}
返回字段说明
字段名称 | 说明 | 类型 | 备注 |
---|---|---|---|
url | 游戏详情网页url | str |