Skip to content

API-v2(免转钱包)

介绍

免转钱包,用户不用手动把资金转入到哈希平台,当用户登录成功时,每次下注时候,哈希平台会自动获取用户资金,当用户资金充足时候才能下注。

流程图

流程图

1. 前端接入

构建接入链接

哈希游戏提供 PC、H5 网页供商户应用接入,商户可以通过网页 iframe 嵌入的方式接入哈希游戏前端网站。

  • 前端地址

请联系哈希游戏团队获取

  • 接入方式

    • 商户在后台拼装哈希游戏大厅或者单个游戏的访问地址,并在前端嵌入使用。

    • 拼装内容 https://${baseURL 联系官方获取}?merchant_id=0&entry=lobby&currency=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&currency=USDT&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDc4Mzg3ODksImhhbGxfaWQiOjEsImlhdCI6MTc0Nzc1MjM4OSwidXNlcl9pZCI6MX0.D-u6uFV5eZaNZ3zqqfO4hPIyvSuyjsfum9MUe4eFHvw&lang=en&theme=dark

2. 商户端实现

协议合规要求
所有接口实现必须严格遵循 通信协议 规范,特别是对哈希游戏数据的加解密验证:

  1. 请求参数必须 AES 加密
  2. 响应数据必须验签解密
  3. 商户 ID 需通过 Header 传递

2.1 获取用户

接口: POST /api/v2/user/info

简要描述

通过 token 获取用户的信息

请求内容

参数是否必须数据类型说明
tokenstring用户授权码

成功返回的数据字段

参数是否必须数据类型说明
user_idint64商户合作方用户唯一标识
usernamestring用户昵称
avatarstring用户头像地址

示例

json
{
  "code": 0,
  "data": {
    "user_id": 10001,
    "username": "testuser123",
    "avatar": "https://example.com/default.jpg"
  }
}

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

2.2 用户余额

接口: POST /api/v2/user/balance

简要描述

通过 token 获取用户的币种余额

请求内容

参数是否必须数据类型说明
tokenstring用户授权码
currencystring货币标识('USDT', 'TRX'),默认 USDT

成功返回的数据字段

参数是否必须数据类型说明
user_idint64商户合作方用户唯一标识
balancefloat64数字货币余额
currencystring数字货币标识('USDT', 'TRX'),默认 USDT

示例

json
{
  "code": 0,
  "data": {
    "user_id": 10001,
    "balance": 1000.0,
    "currency": "USDT"
  }
}

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

2.3 订单下单

接口: POST /api/v2/order/add

简要描述

携带金额请求下单,第三方返回成功时候,下注成功

请求内容

参数是否必须数据类型说明
tokenstring用户授权码
user_idint32商户合作方用户唯一标识
order_nostring订单号(唯一)
usernamestring用户名
entry_keystring游戏标识(参考游戏类型说明)
round_idint64局数
currencystring货币标识('USDT', 'TRX'),默认 USDT
amountfloat64投注金额
bet_infostring下注详情。这是一个 JSON 字符串,其内容为一个 JSON 数组。
点击查看子订单结构及示例
数组中的每个元素都是一个代表下注详情的 JSON 对象,其结构包含:
  • key: string - 玩法类型,参考玩法类型说明。
  • odds: int - 赔率乘 100
  • amount: float - 下注金额
  • is_win: bool - 是否中奖
  • prize: float - 派发奖励

示例 (整个 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_nostring订单号
balancefloat64余额
currencystring货币类型

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

2.4 订单更新

接口:POST /api/v2/order/update

简要描述

当用户订单状态产生变化时候,如从待结算变更为已结算,重复通知用户; 订单在商户返回正确结果前,会轮询通知;每分钟一次,直到 10 次后不再通知。 商户如果需要长时间的维护停机,可以在服务器再次启动时利 3.2 订单详情接口 来查询结果

注意
获取订单状态时候,切勿重复结算

请求参数

参数是否必须数据类型说明
user_idstring商户合作方用户唯一标识
usernamestring用户昵称
order_nostring订单号(唯一)
entry_keystring游戏标识(参考游戏接入文档)
round_idint64/string游戏局号(根据游戏类型决定传值类型)
amountfloat64投注总金额
currencystring货币类型,如:USDT
statusint32订单状态:
0-待处理
1-成功
2-失败
3-待结算
4-已取消
billfloat64账单金额(可选)
profitfloat64平台利润(可选)
prizefloat64派发奖励(含税)
taxfloat64税金
bonusfloat64游戏特殊奖励
bet_timeint64投注时间(unix 毫秒时间戳)
reckon_timeint64结算时间(unix 毫秒时间戳,未结算可不传)
bet_infostring下注详情(JSON 字符串格式)
resultstring游戏结果(可空)
is_winbool是否中奖
remarkstring备注信息(可空)

成功返回

参数是否必须数据类型说明
codeint0
msgstring描述
dataobject对象信息

成功 data 返回参数

参数是否必须数据类型说明
order_nostring订单号
balancefloat64操作后的余额
currencystring币种

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

3. 哈希游戏提供

3.1 游戏列表

接口:GET api/v2/game/list

简要描述

获取平台目前上线的游戏

请求参数

参数是否必须数据类型说明
pageint页码
page_sizeint每页数量
categoryint分类,默认 1

列表项结构说明

字段名类型说明
entrystring游戏唯一标识
namestring游戏名称
iconstring游戏图标

返回参数

json
{
  "code": 0,
  "msg": "SUCCESS",
  "data": {
    "list": [
      {
        "entry": "pc28-1",
        "name": "pc28高级场",
        "icon": "https:xxxx.jpg"
      }
    ],
    "page": 1,
    "page_size": 10
  }
}

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

3.2 游戏登录

接口:GET api/v2/game/login

简要描述

登录游戏

请求参数

参数是否必须数据类型说明
entrystring游戏标识/ID
tokenstringtoken
currencystring币种,默认 USDT
langstring语言,默认英文

成功结构说明

字段名类型说明
game_urlstring登录地址

返回参数

json
{
  "code": 0,
  "msg": "SUCCESS",
  "data": {
    "game_url": "https://${baseURL}?merchant_id=1001&entry=lobby&currency=USDT&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDc4Mzg3ODksImhhbGxfaWQiOjEsImlhdCI6MTc0Nzc1MjM4OSwidXNlcl9pZCI6MX0.D-u6uFV5eZaNZ3zqqfO4hPIyvSuyjsfum9MUe4eFHvw&lang=en"
  }
}

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

3.3 订单查询

接口:GET api/v2/order/list

简要描述

平台所有玩家订单数据,返回成功且已结算的订单

请求参数

参数是否必须数据类型说明
pageint页码
page_sizeint每页数量
start_timeint毫秒时间戳,查询开始时间,默认今天的开始毫秒
end_timeint毫秒时间戳,查询结束时间,默认今天的结束毫秒
max_idint拉单最大值

列表项结构说明

字段名类型说明
idint64主键 id
order_nostring系统唯一订单号
block_idstring区块哈希
user_idint64用户 ID
usernamestring用户名(已脱敏处理)
game_codestring游戏标识
entry_keystring游戏入口标识码
entry_namestring游戏入口名称
room_idint32房间 ID
room_namestring房间名称
round_idint64游戏局唯一标识
amountfloat64订单金额(含正负)
currencystring货币代码(CNY/USD 等)
statusint32订单状态(见状态枚举)
billfloat64流水金额
profitfloat64平台盈亏(正数盈利/负数亏损)
prizefloat64奖金金额
taxfloat64税费
bonusfloat64额外奖励金额
bet_timeint64下注时间戳(秒)
reckon_timeint64结算时间戳(未结算为 0)
bet_infostring投注详情(JSON 字符串格式)
resultstring开奖结果
is_winbool是否中奖
remarkstring备注

返回参数

json
{
  "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
  }
}

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述

3.4 订单详情

接口:GET api/v2/order/details

简要描述

平台玩家订单详细信息

请求参数

参数是否必须数据类型说明
order_nostring订单号(唯一)

成功响应 data 数据(200)

字段名类型说明
order_nostring系统唯一订单号
block_idstring区块哈希
user_idint64用户 ID
usernamestring用户名(已脱敏处理)
game_codestring游戏标识
entry_keystring游戏入口标识码
entry_namestring游戏入口名称
room_idint32房间 ID
room_namestring房间名称
round_idint64游戏局唯一标识
amountfloat64订单金额(含正负)
currencystring货币代码(CNY/USD 等)
statusint32订单状态(见状态枚举)
billfloat64流水金额
profitfloat64平台盈亏(正数盈利/负数亏损)
prizefloat64奖金金额
taxfloat64税费
bonusfloat64额外奖励金额
bet_timeint64下注时间戳(秒)
reckon_timeint64结算时间戳(未结算为 0)
bet_infostring投注详情(JSON 字符串格式)
resultstring开奖结果
is_winbool是否中奖
remarkstring备注
json
{
  "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": ""
  }
}

失败返回

参数是否必须数据类型说明
codeint错误码(参考错误码说明)
msgstring错误描述