API-v2(免转钱包)
介绍
免转钱包,用户不用手动把资金转入到哈希平台,当用户登录成功时,每次下注时候,哈希平台会自动获取用户资金,当用户资金充足时候才能下注。
流程图

1. 前端接入
构建接入链接
哈希游戏提供 PC、H5 网页供商户应用接入,商户可以通过网页 iframe 嵌入的方式接入哈希游戏前端网站。
- 前端地址
请联系哈希游戏团队获取
接入方式
商户在后台拼装哈希游戏大厅或者单个游戏的访问地址,并在前端嵌入使用。
拼装内容 https://${baseURL 联系官方获取}?merchant_id=0&entry=lobby¤cy=USDT&token=&lang=en
必要 参数说明
- merchant_id - 商户 ID,商户向哈希游戏申请获取
- entry - 游戏类型,比如 lobby 是大厅,更多请看游戏类型说明
- currency - 币种类型,比如 USDT ,更多请看币种类型
- token - 用户授权码,商户的用户登录后的授权码 token
- 建议使用双向加解密,对用户关键信息加密产生的字符串
- 此内容如何解密哈希游戏不关心,会将原文回传
- 注意:由于 GET 方式传参,请使用 URL 转码此内容
- 当此参数不存在或者为空时,游戏将弹出用户未授权的弹框
- lang - 语言编码,更多请看语言标识说明
- home_url - 首页地址,或者其他页面的地址(指用户登录失效后会跳转的地址)
- theme - 系统主题,dark(暗黑模式)、light(明亮模式),默认明亮模式
嵌入链接示例
https://${baseURL}?merchant_id=1001&entry=lobby¤cy=USDT&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDc4Mzg3ODksImhhbGxfaWQiOjEsImlhdCI6MTc0Nzc1MjM4OSwidXNlcl9pZCI6MX0.D-u6uFV5eZaNZ3zqqfO4hPIyvSuyjsfum9MUe4eFHvw&lang=en&theme=dark
2. 商户端实现
⚠ 协议合规要求
所有接口实现必须严格遵循 通信协议 规范,特别是对哈希游戏数据的加解密验证:
- 请求参数必须 AES 加密
- 响应数据必须验签解密
- 商户 ID 需通过 Header 传递
2.1 获取用户
接口: POST /api/v2/user/info
简要描述
通过 token 获取用户的信息
请求内容
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| token | 是 | string | 用户授权码 |
成功返回的数据字段
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| user_id | 是 | int64 | 商户合作方用户唯一标识 |
| username | 是 | string | 用户昵称 |
| avatar | 是 | string | 用户头像地址 |
示例
{
"code": 0,
"data": {
"user_id": 10001,
"username": "testuser123",
"avatar": "https://example.com/default.jpg"
}
}失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
2.2 用户余额
接口: POST /api/v2/user/balance
简要描述
通过 token 获取用户的币种余额
请求内容
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| token | 是 | string | 用户授权码 |
| currency | 是 | string | 货币标识('USDT', 'TRX'),默认 USDT |
成功返回的数据字段
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| user_id | 是 | int64 | 商户合作方用户唯一标识 |
| balance | 是 | float64 | 数字货币余额 |
| currency | 是 | string | 数字货币标识('USDT', 'TRX'),默认 USDT |
示例
{
"code": 0,
"data": {
"user_id": 10001,
"balance": 1000.0,
"currency": "USDT"
}
}失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
2.3 订单下单
接口: POST /api/v2/order/add
简要描述
携带金额请求下单,第三方返回成功时候,下注成功
请求内容
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| token | 是 | string | 用户授权码 |
| user_id | 是 | int32 | 商户合作方用户唯一标识 |
| order_no | 是 | string | 订单号(唯一) |
| username | 是 | string | 用户名 |
| entry_key | 是 | string | 游戏标识(参考游戏类型说明) |
| round_id | 是 | int64 | 局数 |
| currency | 否 | string | 货币标识('USDT', 'TRX'),默认 USDT |
| amount | 是 | float64 | 投注金额 |
| bet_info | 是 | string | 下注详情。这是一个 JSON 字符串,其内容为一个 JSON 数组。点击查看子订单结构及示例数组中的每个元素都是一个代表下注详情的 JSON 对象,其结构包含:
示例 (整个 bet_info 字段的值,注意这是一个字符串,内部 JSON 需要转义):"[{\"key\":\"Big\",\"name\":\"大\",\"amount\":1,\"is_win\":true,\"prize\":200,\"odds\":200},{\"key\":\"Even\",\"name\":\"双\",\"amount\":1,\"is_win\":true,\"prize\":200,\"odds\":200}]" |
成功返回的数据字段
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| order_no | 是 | string | 订单号 |
| balance | 是 | float64 | 余额 |
| currency | 是 | string | 货币类型 |
失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
2.4 订单更新
接口:POST /api/v2/order/update
简要描述
当用户订单状态产生变化时候,如从待结算变更为已结算,重复通知用户; 订单在商户返回正确结果前,会轮询通知;每分钟一次,直到 10 次后不再通知。 商户如果需要长时间的维护停机,可以在服务器再次启动时利 3.2 订单详情接口 来查询结果
⚠ 注意
获取订单状态时候,切勿重复结算
请求参数
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| user_id | 是 | string | 商户合作方用户唯一标识 |
| username | 是 | string | 用户昵称 |
| order_no | 是 | string | 订单号(唯一) |
| entry_key | 是 | string | 游戏标识(参考游戏接入文档) |
| round_id | 是 | int64/string | 游戏局号(根据游戏类型决定传值类型) |
| amount | 是 | float64 | 投注总金额 |
| currency | 是 | string | 货币类型,如:USDT |
| status | 是 | int32 | 订单状态:0-待处理1-成功2-失败3-待结算4-已取消 |
| bill | 否 | float64 | 账单金额(可选) |
| profit | 否 | float64 | 平台利润(可选) |
| prize | 是 | float64 | 派发奖励(含税) |
| tax | 是 | float64 | 税金 |
| bonus | 是 | float64 | 游戏特殊奖励 |
| bet_time | 是 | int64 | 投注时间(unix 毫秒时间戳) |
| reckon_time | 否 | int64 | 结算时间(unix 毫秒时间戳,未结算可不传) |
| bet_info | 是 | string | 下注详情(JSON 字符串格式) |
| result | 否 | string | 游戏结果(可空) |
| is_win | 是 | bool | 是否中奖 |
| remark | 否 | string | 备注信息(可空) |
成功返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 0 |
| msg | 是 | string | 描述 |
| data | 是 | object | 对象信息 |
成功 data 返回参数
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| order_no | 是 | string | 订单号 |
| balance | 是 | float64 | 操作后的余额 |
| currency | 是 | string | 币种 |
失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
3. 哈希游戏提供
3.1 游戏列表
接口:GET api/v2/game/list
简要描述
获取平台目前上线的游戏
请求参数
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| page | 是 | int | 页码 |
| page_size | 是 | int | 每页数量 |
| category | 否 | int | 分类,默认 1 |
列表项结构说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| entry | string | 游戏唯一标识 |
| name | string | 游戏名称 |
| icon | string | 游戏图标 |
返回参数
{
"code": 0,
"msg": "SUCCESS",
"data": {
"list": [
{
"entry": "pc28-1",
"name": "pc28高级场",
"icon": "https:xxxx.jpg"
}
],
"page": 1,
"page_size": 10
}
}失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
3.2 游戏登录
接口:GET api/v2/game/login
简要描述
登录游戏
请求参数
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| entry | 是 | string | 游戏标识/ID |
| token | 是 | string | token |
| currency | 是 | string | 币种,默认 USDT |
| lang | 否 | string | 语言,默认英文 |
成功结构说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| game_url | string | 登录地址 |
返回参数
{
"code": 0,
"msg": "SUCCESS",
"data": {
"game_url": "https://${baseURL}?merchant_id=1001&entry=lobby¤cy=USDT&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDc4Mzg3ODksImhhbGxfaWQiOjEsImlhdCI6MTc0Nzc1MjM4OSwidXNlcl9pZCI6MX0.D-u6uFV5eZaNZ3zqqfO4hPIyvSuyjsfum9MUe4eFHvw&lang=en"
}
}失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
3.3 订单查询
接口:GET api/v2/order/list
简要描述
平台所有玩家订单数据,返回成功且已结算的订单
请求参数
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| page | 是 | int | 页码 |
| page_size | 是 | int | 每页数量 |
| start_time | 否 | int | 毫秒时间戳,查询开始时间,默认今天的开始毫秒 |
| end_time | 否 | int | 毫秒时间戳,查询结束时间,默认今天的结束毫秒 |
| max_id | 否 | int | 拉单最大值 |
列表项结构说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int64 | 主键 id |
| order_no | string | 系统唯一订单号 |
| block_id | string | 区块哈希 |
| user_id | int64 | 用户 ID |
| username | string | 用户名(已脱敏处理) |
| game_code | string | 游戏标识 |
| entry_key | string | 游戏入口标识码 |
| entry_name | string | 游戏入口名称 |
| room_id | int32 | 房间 ID |
| room_name | string | 房间名称 |
| round_id | int64 | 游戏局唯一标识 |
| amount | float64 | 订单金额(含正负) |
| currency | string | 货币代码(CNY/USD 等) |
| status | int32 | 订单状态(见状态枚举) |
| bill | float64 | 流水金额 |
| profit | float64 | 平台盈亏(正数盈利/负数亏损) |
| prize | float64 | 奖金金额 |
| tax | float64 | 税费 |
| bonus | float64 | 额外奖励金额 |
| bet_time | int64 | 下注时间戳(秒) |
| reckon_time | int64 | 结算时间戳(未结算为 0) |
| bet_info | string | 投注详情(JSON 字符串格式) |
| result | string | 开奖结果 |
| is_win | bool | 是否中奖 |
| remark | string | 备注 |
返回参数
{
"code": 0,
"msg": "SUCCESS",
"data": {
"list": [
{
"user_id": 9,
"username": "RSwVUYp",
"order_no": "202506061653316411",
"block_id": "0000000004579244e0f582546c32e30225bf30c0fa9eb2f281334fd7b83ddf23",
"game_code": "pc28",
"entry_key": "pc28-1",
"entry_name": "",
"room_id": 1,
"room_name": "",
"round_id": 72847940,
"amount": 10,
"currency": "USDT",
"status": 3,
"bill": 0,
"profit": 0,
"prize": 0,
"tax": 0,
"bonus": 0,
"bet_time": 1749200012000,
"reckon_time": 0,
"bet_info": "[{\"key\":\"Big\",\"name\":\"Big\",\"odds\":200,\"amount\":10}]",
"result": "",
"is_win": false,
"remark": ""
}
],
"page": 1,
"page_size": 10
}
}失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |
3.4 订单详情
接口:GET api/v2/order/details
简要描述
平台玩家订单详细信息
请求参数
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| order_no | 是 | string | 订单号(唯一) |
成功响应 data 数据(200)
| 字段名 | 类型 | 说明 |
|---|---|---|
| order_no | string | 系统唯一订单号 |
| block_id | string | 区块哈希 |
| user_id | int64 | 用户 ID |
| username | string | 用户名(已脱敏处理) |
| game_code | string | 游戏标识 |
| entry_key | string | 游戏入口标识码 |
| entry_name | string | 游戏入口名称 |
| room_id | int32 | 房间 ID |
| room_name | string | 房间名称 |
| round_id | int64 | 游戏局唯一标识 |
| amount | float64 | 订单金额(含正负) |
| currency | string | 货币代码(CNY/USD 等) |
| status | int32 | 订单状态(见状态枚举) |
| bill | float64 | 流水金额 |
| profit | float64 | 平台盈亏(正数盈利/负数亏损) |
| prize | float64 | 奖金金额 |
| tax | float64 | 税费 |
| bonus | float64 | 额外奖励金额 |
| bet_time | int64 | 下注时间戳(秒) |
| reckon_time | int64 | 结算时间戳(未结算为 0) |
| bet_info | string | 投注详情(JSON 字符串格式) |
| result | string | 开奖结果 |
| is_win | bool | 是否中奖 |
| remark | string | 备注 |
{
"code": 0,
"msg": "SUCCESS",
"data": {
"user_id": 9,
"username": "RSwVUYp",
"order_no": "202506061653316411",
"block_id": "0000000004579244e0f582546c32e30225bf30c0fa9eb2f281334fd7b83ddf23",
"game_code": "pc28",
"entry_key": "pc28-1",
"entry_name": "",
"room_id": 1,
"room_name": "",
"round_id": 72847940,
"amount": 10,
"currency": "USDT",
"status": 3,
"bill": 0,
"profit": 0,
"prize": 0,
"tax": 0,
"bonus": 0,
"bet_time": 1749200012000,
"reckon_time": 0,
"bet_info": "[{\"key\":\"Big\",\"name\":\"Big\",\"odds\":200,\"amount\":10}]",
"result": "",
"is_win": false,
"remark": ""
}
}失败返回
| 参数 | 是否必须 | 数据类型 | 说明 |
|---|---|---|---|
| code | 是 | int | 错误码(参考错误码说明) |
| msg | 是 | string | 错误描述 |

