API Doc
协议 (Protocol)
Merchant API 使用 HTTP(s) 来发送数据和返回数据, 目前支持的数据格式只有 JSON. 关于 JSON 的信息可参考(http://www.json.org/)
在 HTTP Header 部分, 除了 HTTP 协议必须的 Header 外, 还有使用如下的 Header:
| HTTP Header | 是否必须 | 示例 | 说明 |
|---|---|---|---|
| API | 是 | authorize | 服务接口名称 |
| DataType | 是 | JSON | 数据格式 JSON |
| Digest | 否 | MD5(Data) | 发送数据的信息摘要, 后期可增加与 merchant 相对应的 key |
| Accept-Encoding | 否 | gzip, deflate | 标识是否支持返回数据 zip 压缩 |
| Content-Encoding | 否 | gzip | 标识提交的数据已使用 zip 压缩 |
| Accept-Language | 否 | en_US | 默认返回消息的国际化的语言 |
关于字符编码, 在对所有涉及 text <=> byte[] 进行 encode/decode 处理时, 请显式指定编码格式为 UTF-8
关于 Digest, 使用 md5 对信息摘要, 示例代码如下:
public static String digest(byte[] input) { byte[] digest = Digest.md5().compute( input ); return Hex.encodeHexString( digest ); }
名词解释
- Game Provider: 游戏提供者, 提供游戏的平台, 管理玩家和商户的数据
- Merchant: 商户, 每个注册的商户, 都有其各自的配置和数据保存在游戏提供者的系统中
- 接口使用者: API 接口的调用者
- 接口提供者: API 接口的服务提供者
- Acct ID: 用户唯一标识 ID, 游戏玩家
API 接口概况
在 API 的使用时, 由调用者按接口定义的消息, 生成相应的数据, 发送到接口提供者提供的 URL 上, 接口提供者处理完成后, 将相应的消息返回回来.
一般的接口定义为: xxxResponse xxxx(xxxRequest request) xxxRequest 为 API 相应的请求消息, xxxResponse 为 API 相应的响应消息
所有的请求消息, 都包括:
| 名称 | 数据类型 | 示例 | 说明 |
|---|---|---|---|
| serialNo | Varchar(50) | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
| merchantCode | Varchar(10) | TEST | 标识商户 ID |
所有的响应消息, 都包括:
| 名称 | 数据类型 | 示例 | 说明 |
|---|---|---|---|
| serialNo | Varchar(50) | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
| code | Integer | 0 | 处理结果代码定义 code |
| msg | Varchar(128) | success | 处理结果描述 |
| merchantCode | Varchar(10) | TEST | 标识商户 ID |
其中, code 用来定义接口调用的处理结果, 详细的 code 的定义, 请参照 "附录 1 响应消息代码定义".
特别注意: serialNo 是消息标识, 同一个 serialNo 只会有一个 request/response, 请确保每次生成的 serialNo 是唯一的值. 建议使用 GUID/UUID, 或是日期+时间+随机数的字符串.
API 接口定义 (Service Interface)
游戏大厅页面跳转
使用场景: 当游戏玩家在进入 merchant 网站后, 通过网页上的游戏提供商按钮, 将玩家页面转到游戏提供商的大厅.
接口名: Game Lobby Redirect
接口提供者: Game Lobby Provider
接口使用者: Merchant
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| token | Varchar(128) | 是 | fe1a85adc54545d2963b661a22d09c9e | |
| language | Varchar(10) | 是 | en_US | 语言 |
| channel | Varchar(10) | 是 | Web | 注单来自手机或网 |
| isLobby | boolean | 是 | true/false | 是否进入游戏大厅 |
- 详细的 language 的定义, 请参照"附录 2 语言代码定义"。
- 请参考4.15查询域名列表以获取最新域名。
- 请将DEMO替换成您的商户号。
Game Lobby Redirect URL and Parameters:
https://lobby.sampledomain.com/DEMO/auth/?acctId=TESTPLAYER1&language=zh_CN&token=fe1a85adc54545d2963b661a22d09c9e&channel=Web&isLobby=true

游戏页面跳转
使用场景: 当游戏玩家在进入 merchant 网站后, 通过网页上的 Goto Game 或 Real Money 按钮, 将玩家页面转到游戏提供商的游戏.
接口名: Game Redirect
接口提供者: Game Provider
接口使用者: Merchant
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| token | Varchar(128) | 是 | fe1a85adc54545d2963b661a22d09c9e | |
| language | Varchar(10) | 是 | en_US | 语言 |
| game | Varchar(10) | 是 | sLongX3 | 游戏代码 |
| brand | Varchar(10) | No | TEST123 | 客制化商戶代碼 |
- 详细的 language 的定义, 请参照"附录 2 语言代码定义".
- Game 的定义, 请"附录 4 游戏代码定义".
- 请参考4.15查询域名列表以获取最新域名。
- 请将DEMO替换成您的商户号。
Game Lobby Redirect URL and Parameters(real money):
https://lobby.sampledomain.com/DEMO/auth/?acctId=TESTPLAYER1&language=zh_CN&token=fe1a85adc54545d2963b661a22d09c9e&game=sLongX3
Game Lobby Redirect URL and Parameters(play for fun):
https://play.sampledomain.com/game?merchantCode=DEMO&game=sLongX3&language=zh_CN

用户授权
使用场景: 当游戏提供商收到从 merchant 网站跳转过来的请求后, 通过本 API 验证请求是否合法.
接口名: authorize
接口提供者: Merchant
接口使用者: Game Provider
请求消息定义 AuthorizeRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| token | Varchar(128) | 是 | fe1a85adc54545d2963b661a22d09c9e | |
| language | Varchar(10) | 否 | en_US | 语言 |
| gameCode | Varchar(10) | 否 | sLongX3 | 游戏代码 |
| forFun | boolean | 否 | false | 测试游戏 |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 AuthorizeResponse:
| 名称 | 数据类型 | 示例 | 说明 |
|---|---|---|---|
| acctInfo | AcctInfo | AcctInfo 类 |
AcctInfo 定义 :
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 用户标识 ID |
| userName | Varchar(15) | 否 | TestPlayer | 用户名称 |
| currency | Char(3) | 是 | CNY | 货币的 ISO 代码 |
| balance | Decimal(12, 4) | 是 | 0 | 用户当前余额 |
| siteId | Varchar(10) | 否 | SITE_CNY1 | 商户的站点 |
特别注意:
- 详细的货币代码定义, 请参照"附录 3 货币代码定义".
- 详细的加密货币代码定义, 请参照"附录 4 加密货币代码定义".
- AuthorizeResponse 接口中的 balance 值可以忽略(设置为 0 即可).
- Acct ID 格式: [a-zA-Z0-9_-]{5, 30}. 例子: TestPlayer_1
Authorize 请求和响应消息示例
JSON AuthorizeRequest:
{ "acctId": "TESTPLAYER1", "language": "en_US", "merchantCode": "TEST", "gameCode": "sLongX3", "forFun": "false", "token": "fe1a85adc54545d2963b661a22d09c9e", "serialNo": "20120722224255982841" }
JSON AuthorizeResponse:
{ "acctInfo": { "acctId": "TESTPLAYER1", "balance": 0, "userName": "TestPlayer", "currency": "CNY" "siteId": "SITE_CNY1" }, "merchantCode": "TEST", "msg": "success", "code": 0, "serialNo": "20120722224255982841" }
Http 客户端中的示例:


查询用户信息
使用场景: 查询用户信息(如余额)
接口名: getAcctInfo
接口提供者: Game Provider
接口使用者: Merchant
求消息定义 GetAcctInfoRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 GetAcctInfoResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| resultCount | Integer | 是 | 100 | 总共的记录数 |
| pageCount | Integer | 是 | 1 | 总共的页数 |
| list | AcctInfo[] | 是 | AcctInfo 类 |
AcctInfo 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 用户标识 ID |
| userName | Varchar(50) | 否 | TestPlayer | 用户名称 |
| currency | Char(3) | 是 | CNY | 货币的 ISO 代码 |
| balance | Decimal(12, 4) | 是 | 0 | 用户当前余额 |
GetAcctInfo 请求和响应消息示例
JSON GetAcctInfoRequest:
{ "acctId": "TESTPLAYER1", "merchantCode": "TEST", "serialNo": "20120802152140143938" }
JSON GetAcctInfoResponse:
{ "list": [{ "userName": "TestPlayer1", "currency": "CNY", "acctId": "TESTPLAYER1", "balance": 1000 }], "resultCount": 1, "pageCount": 1, "merchantCode": "TEST", "msg": "success", "code": 0, "serialNo": "20120802152140143938" }
Http 客户端中的示例:


查询用户余额 (单一钱包)
使用场景 : 查询用户余额
接口名 : getBalance
接口提供者 : Merchant
接口使用者 : Game Provider
GetBalance 请求消息定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| token(仅适用于测试环境) | Varchar(128) | 是 | fe1a85adc54545d2963b661a22d09c9e | |
| merchantCode | Varchar(10) | Yes | TEST | 标识商户 ID |
| serialNo | Varchar(50) | Yes | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
| currency | Char(3) | 否 | CNY | 货币的 ISO 代码 |
GetBalance 响应消息定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctInfo | AcctInfo[] | 是 | AcctInfo | acctInfo |
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| userName | Varchar(15) | 否 | TestPlayer | 用户名称 |
| currency | Char(3) | 是 | CNY | 货币的 ISO 代码 |
| balance | Decimal(12, 4) | 是 | 0 | 玩家当前余额 |
| siteId | Varchar(10) | 否 | SITE_CNY1 | 商户的站点 |
GetBalance 请求和响应消息示例 :
JSON GetBalanceRequest::
{ "acctId": "TESTPLAYER1", "token": "fe1a85adc54545d2963b661a22d09c9e",(仅适用于测试环境) "merchantCode": "TEST", "serialNo": "20120802152140143938", "currency": "CNY" }
JSON GetBalanceResponse:
{ "acctInfo": { "userName": "TestPlayer1", "currency": "CNY", "acctId": "TESTPLAYER1", "balance": 1000 }, "merchantCode": "TEST", "msg": "success", "code": 0, "serialNo": "20120802152140143938" }
转帐 (单一钱包)
使用场景 :
- 用户 place bet 时,由 Game Provider 将金额信息传入 merchant,merchant 将相应的金额从用户的余额中扣除。
- 系统 payout 时,由 Game Provider 将金额信息传入 merchant,merchant 将相应的金额存入用户的余额。
- 当用户下注但没有回报赔金时,系统将回赔=0的信息于merchant。
接口名 : transfer
接口提供者 : Merchant
接口使用者 : Game Provider
请求消息定义 TransferRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| transferId | Varchar(50) | 是 | a3b0c9dd1ab041 | 标识转帐流水 |
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 用户标识 ID |
| currency | Char(3) | 是 | USD | 货币的 ISO 代码 |
| amount | Decimal(20, 9) | 是 | 1000 | 转帐金额,无论何种操作,金额必须大于 0 |
| type | Int | 是 | 1 | 1 = 下注 (place bet) 2 = 取消下注 (cancel bet) 4 = 派彩 (payout) 6 = 商家和游戏提供商头奖派彩 (jackpot payout by merchant & game provider) 7 = 商家头奖派彩 (jackpot payout by merchant), (开发中,还未开放) 8 = 游戏提供商头奖派彩 (jackpot payout by game provider), (开发中,还未开放) 9 = 商家和游戏提供商比赛派彩 (tournament payout by merchant & game provider), (开发中,还未开放) 10 = 商家比赛派彩 (tournament payout by merchant), (开发中,还未开放) 11 = 游戏提供商比赛派彩 (tournament payout by game provider), (开发中,还未开放) 12 = 商家和游戏提供商红包派彩 (red packet payout by merchant & game provider),(开发中,还未开放) 13 = 商家红包派彩 (red packet payout by merchant), (开发中,还未开放) 14 = 游戏提供商红包派彩 (red packet payout by game provider),(开发中,还未开放) 20 = 奖励任务派彩(Bonus mission payout) |
| channel | Varchar(10) | 是 | Web / Mobile, APP-i / APP-A / PC |
注单来自手机或网 |
| gameCode | Varchar(10) | 是 | sLongX3 | 游戏代码 |
| ticketId | Varchar(20) | 否 | 641482277 | |
| referenceId | Varchar(50) | 否 | a8ab9cc8f1a277de | Transfer id 的参考 ID |
| specialGame | SpecialGame | SpecialGame Type | ||
| mainBetId (仅适用于测试环境) | Varchar(50) | 否 | 1ab9bdca06c14811b24653468e60988 | 参考第一个投注Transfer ID |
| token (仅适用于测试环境) | Varchar(128) | 是 | fe1a85adc54545d2963b661a22d09c9e |
SpecialGame type 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| type | Varchar(20) | 否 | Free | 分辨特别游戏种,例子: bonus, free, bonusfree, freebonus |
| count | Int | 否 | 10 | 玩家所得特别游戏的总数量 |
| sequence | Int | 否 | 1 | 玩家已完成的特别游戏数量 |
**specialGame 仅在 type = 4 (payout) 才会通过。**
特别注意:
- 如果 merchant 收到转帐流水发现之前已经处理成功,则直接返回转帐交易的状态,不能再次操作余额。
- 如果参考 ID 重复或没有找到,商家应该返回我们错误代码:109.除了此错误代码,提供商将继续重新发送参考 ID。
- 检查转账ID是否存在
- 检查此交易的下注交易(ReferenceId)是否存在(仅适用于类型2和类型4)
- 检查此交易的下注交易(ReferenceId)是否有其他取消投注或支付交易(类型2或类型4)
响应消息定义 TransferResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| transferId | Varchar(50) | 是 | a3b0c9dd1ab041 | 请求转帐流水 |
| merchantTxId | Varchar(20) | 否 | 498036704 | Merchant 处理的交易流水号 |
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 用户标识 ID |
| balance | Decimal(12, 4) | 是 | 1000 | 处理完成后用户余额 |
Transfer 请求和响应消息示例:
JSON TransferRequest:
{ "acctId": "TESTPLAYER1", "transferId": "0ab9bdca06c14811b24653468e60988", "currency": "USD", "amount": 10, "type": 4, "ticketId": "234950357", "channel": "Web", "gameCode": "sLongX3", "merchantCode": "TEST", "serialNo": "20120722231413699735", "referenceId": "dfffdca06c14811b24653468e60", "mainBetId": "1ab9bdca06c14811b24653468e60988", (仅适用于测试环境) "token": "fe1a85adc54545d2963b661a22d09c9e", (仅适用于测试环境) "specialGame": { "type": "Free", "count": 10, "sequence": 1 } }


JSON TransferResponse:
{ "transferId": "0ab9bdca06c14811b24653468e609838", "merchantCode": "TEST", "merchantTxId": "20130813014319279367", "acctId": "TestPlayer1", "balance": "1050", "msg": "success", "code": 0, "serialNo": "20120722231413699735" }
Transfer Jackpot 请求和响应消息示例:
JSON TransferRequest:
{ "acctId": "TESTPLAYER1", "transferId": "0ab9bdca06c14811b24653468e60988", "currency": "USD", "amount": 10, "type": 6, "ticketId": "234950357", "channel": "Web", "gameCode": "sRoma", "merchantCode": "TEST", "serialNo": "20210917171413632534" "referenceId": "dfffdca06c14811b24653468e60", }
JSON TransferResponse:
{ "transferId": "0ab9bdca06c14811b24653468e60988", "merchantCode": "TEST", "merchantTxId": "20210917014319279367", "acctId": "TestPlayer1", "balance": "1250", "msg": "success", "code": 0, "serialNo": "20210917171413632534" }
查询转帐记录 (单一钱包)
使用场景 :
- 查询转帐状态,供核对转帐数据。
接口名 : transferHistory
接口提供者 : Game Provider
接口使用者 : Merchant
请求消息定义 TransferHistoryRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| beginDate | char(15) | 是 | 20120720T230043 | 开始时间,格式为 yyyymmdd’T’24hhmmss |
| endDate | char(15) | 是 | 20120722T230043 | 截止时间,格式为 yyyymmdd’T’24hhmmss |
| pageIndex | Integer | 是 | 1 | 页码 |
| merchantCode | Varchar(20) | 是 | TEST | 标识商户 ID |
响应消息定义 TransferHistoryResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| resultCount | Integer | 是 | 100 | 总共的记录数 |
| pageCount | Integer | 是 | 1 | 总共的页数 |
| merchantCode | Varchar(20) | 是 | TEST | 标识商户 ID |
| Code | Integer | 是 | 1 | 处理结果代码定义 code |
| msg | Varchar(255) | 是 | Success | 处理结果描述 |
| serialNo | Varchar(50) | 是 | 20210312T1705371679 | 用于标识消息的序列,由调用者生成 |
| list | TransferInfo[] | 是 | TransferInfo 的数组 |
TransferInfo 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| transferId | Varchar(50) | 是 | a3b0c9dd1ab041 | 标识转帐流水 |
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 用户标识 ID |
| ticketId | Varchar(20) | 是 | 641482277 | |
| transferTime | Char(15) | 是 | 20120722T225043 | 转帐时间 |
| gameCode | Varchar(10) | 是 | sLongX3 | 游戏代码 |
| type | Int | 是 | 1 | 1 = 下注 (place bet) 2 = 取消下注 (cancel bet) 4 = 派彩 (payout) 6 = 头奖派彩 (jackpot payout) 7 = 商家头奖派彩 (jackpot payout by merchant) 8 = 商家和游戏提供商头奖派彩 (jackpot payout by merchant & game provider) 9 = 比赛派彩 (tournament payout) 10 = 商家比赛派彩 (tournament payout by merchant) 11 = 商家和游戏提供商比赛派彩 (tournament payout by merchant & game provider) 12 = 红包派彩 (red packet payout) 13 = 商家红包派彩 (red packet payout by merchant) 14 = 商家和游戏提供商红包派彩 (red packet payout by merchant & game provider) |
| amount | Decimal(20,4) | 是 | 1000 | 转帐金额 |
| status | Int | 是 | 0 | 状态,收到的响应代码 |
| channel | Varchar(10) | 是 | Web/Mobile, APP-i/APP-A/PC |
注单来自手机或网 |
TransferHistory 请求和响应消息示例:
JSON TransferHistoryRequest:
{ "beginDate": "20120721T175139", "endDate": "20120723T174139", "pageIndex": 1, "merchantCode": "TEST" }
JSON TransferHistoryResponse:
{ "list": [{ "transferId": "667706462", "acctId": "TEST10001", "ticketId": "749084635", "type": 1, "amount": 20, "transferTime": "20130908T151100", "gameCode": "sLongX3", "status": 0, "channel": "Web", }], "resultCount": 1, "pageCount": 1, "merchantCode": "TEST", "code": 0, "msg": "success", "serialNo": "20120726214956563472" }
TransferHistory Jackpot 请求和响应消息示例:
JSON TransferHistoryRequest:
{ "beginDate": "20210917T175139", "endDate": "20210920T174139", "pageIndex": 1, "merchantCode": "TEST" }
JSON TransferHistoryResponse:
{ "list": [{ "transferId": "667706462", "acctId": "TEST10001", "ticketId": "749084635", "type": 6, "amount": 1250, "transferTime": "20210918T151100", "gameCode": "sRoma", "status": 0, "channel": "Web", }], "resultCount": 1, "pageCount": 1, "merchantCode": "TEST", "code": 0, "msg": "success", "serialNo": "20210917171413632534" }
存款
使用场景: 由 merchant 将相应的金额存入 Game Provider 中用户的余额
接口名: deposit
接口提供者: Game Provider
接口使用者: Merchant
求消息定义 DepositRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| currency | Char(3) | 是 | CNY | 货币的 ISO 代码 |
| amount | Decimal(12, 4) | 是 | 1000 | 存款金额 |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 DepositResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| transactionId | Varchar(20) | 是 | 498036704 | 交易流水号 |
| beforeBalance | Decimal(12, 4) | 是 | 1000.0000 | 玩家之前余额 |
| afterBalance | Decimal(12, 4) | 是 | 1500.0000 | 玩家最新余额 |
特别注意:
- serialNo 是消息标识, 同一个 serialNo 只会有一个 request/response, 请确保每次生成的 serialNo 是唯一的值.
- 建议使用 GUID/UUID, 或是日期+时间+随机数的字符串.
- Acct ID 格式: [a-zA-Z0-9_-]{5, 30}. 例子: TestPlayer_1
Deposit 请求和响应消息示例:
JSON DepositRequest:
{ "acctId": "TESTPLAYER1", "amount": 200, "currency": "CNY", "merchantCode": "TEST", "serialNo": "20120722231413699735" }
JSON DepositResponse:
{ "newPlayer": false, "beforeBalance": 1000.0000, "afterBalance": 1500.0000, "transactionId": "500648408", "merchantCode": "TEST", "msg": "success", "code": 0, "serialNo": "20120722231413699735" }
Http 客户端中的示例:

取款
使用场景: 由 merchant 将相应的金额存入 Game Provider 中用户的余额提取
接口名: withdraw
接口提供者: Game Provider
接口使用者: Merchant
求消息定义 WithdrawRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 游戏玩家 ID |
| currency | Char(3) | 是 | CNY | 货币的 ISO 代码 |
| amount | Decimal(12, 4) | 是 | 1000 | 存款金额 |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 WithdrawResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| transactionId | Varchar(20) | 是 | 498036704 | 交易流水号 |
| beforeBalance | Decimal(12, 4) | 是 | 1500.0000 | 玩家之前余额 |
| afterBalance | Decimal(12, 4) | 是 | 1000.0000 | 玩家最新余额 |
特别注意:
- serialNo 是消息标识, 同一个 serialNo 只会有一个 request/response, 请确保每次生成的 serialNo 是唯一的值.
- 建议使用 GUID/UUID, 或是日期+时间+随机数的字符串.
- Acct ID 格式: [a-zA-Z0-9_-]{5, 30}. 例子: TestPlayer_1
Withdraw 请求和响应消息示例:
JSON WithdrawRequest:
{ "acctId": "TESTPLAYER1", "amount": 200, "currency": "CNY", "merchantCode": "TEST", "serialNo": "20120722231413699735" }
JSON WithdrawResponse:
{ "newPlayer": false, "beforeBalance": 1500.0000, "afterBalance": 1000.0000, "transactionId": "500648408", "merchantCode": "TEST", "msg": "success", "code": 0, "serialNo": "20120722231413699735" }
Http 客户端中的示例:

查询转帐记录
使用场景 :
- 查询转帐状态,供核对转帐数据.
接口名 : checkTransfer
接口提供者 : Game Provider
接口使用者 : Merchant
请求消息定义 CheckTransferRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchantCode | Varchar(30) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(200) | 是 | 2020012004074 | 用于标识消息的序列,由调用者生成 |
响应消息定义 CheckTransferResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| status | Integer | 是 | 1 | 状态,收到的响应代码 0 = 转账失败 1 = 转账成功 |
| currency | Char(3) | 是 | PTS | 货币的 ISO 代码 |
| acctId | Varchar(70) | 是 | TESTPLAYER1@TEST | 游戏玩家 ID |
| valueBefore | Decimal(20,6) | 是 | 199992.000000 | 转账前的数量 |
| valueChange | Decimal(20,6) | 是 | 1000.000000 | 转账的数量 |
| valueAfter | Decimal(20,6) | 是 | 200992.000000 | 转账后的数量 |
| merchantCode | Varchar(30) | 是 | TEST | 标识商户 ID |
| code | Integer | 是 | 0 | 处理结果代码定义 code |
| msg | Varchar(255) | 是 | Success | 处理结果描述 |
| serialNo | Varchar(200) | 是 | 2020012004074 | 用于标识消息的序列,由调用者生成 |
CheckTransfer 请求和响应消息示例:
JSON CheckTransferRequest:
{ "merchantCode": "TEST", "serialNo": "2020012004074" }
JSON CheckTransferResponse:
{ "status": 1, "currency": "PTS", "acctId": "TESTPLAYER1@TEST", "valueBefore": 199992.000000, "valueChange": "1000.000000", "valueAfter": 200992.000000, "merchantCode": "TEST", "code": 0, "msg": "Success", "serialNo": "2020012004074" }
Http 客户端中的示例:


查询用户下注记录
使用场景: 查询下注记录
接口名: getBetHistory
接口提供者: Game Provider
接口使用者: Merchant
特别注意:
- 建议商家将每次搜索时间调至最多两个小时
- 且让其每次查询间隔时间为3至5秒钟
请求消息定义 GetBetHistoryRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| beginDate | Char(15) | 是 | 20120720T230043 | 开始时间,格式为 yyyymmdd’T’24hhmmss |
| endDate | Char(15) | 是 | 20120720T230043 | 截止时间, 格式为 yyyymmdd’T’24hhmmss |
| pageIndex | Integer | 是 | 1 | 页码 |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列,由调用者生成 |
响应消息定义 GetBetHistoryResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| resultCount | Integer | 是 | 100 | 总共的记录数 |
| pageCount | Integer | 是 | 1 | 总共的页数 |
| list | BetInfo[] | 是 | BetInfo 的数组 |
BetInfo 定义 :
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| ticketId | Long | 是 | 641482277 | 下注单号 |
| acctId | Varchar(50) | 是 | TESTPLAYER1 | 用户标识 ID |
| ticketTime | Char(15) | 是 | 20120722T225417 | 下注时间 |
| categoryId | Varchar(10) | 是 | SM or TB or AD or BN | 游戏种类 |
| gameCode | Varchar(10) | 是 | sLongX3 | 游戏代码 |
| currency | Char(3) | 是 | CNY | 货币 ISO 代码 |
| betAmount | Decimal(18, 6) | 是 | 20 | 下注金额 |
| result | Varchar(1024) | 否 | 23415 | 结果 |
| winLoss | Decimal(18, 6) | 是 | -20 | 用户输赢 |
| jackpotAmount | Decimal(18, 6) | 是 | 0 | |
| betIp | Varchar(20) | 是 | 8.8.8.8 | 用户下注 IP |
| luckyDrawId | Long | 否 | 10 | |
| completed | boolean | 是 | True | 是否已结束 |
| roundId | Long | 是 | 1823 | 游戏 log ID |
| sequence | Integer | 是 | 0, 1, 2, 3 | 0 =没赢 jackpot |
| channel | Varchar(10) | 是 | Mobile/Web | 注单来自手机或网 |
| balance | Decimal(18, 6) | 是 | 234.000000 | 上轮余额 |
| jpWin | Decimal(18, 6) | 是 | -100.000000 | 积宝赢额 |
| referenceId | Varchar(50) | 是 | 4445780193 | 参照 transfer ID (只用于单一钱包) |
| isCascade | boolean | 是 | true/false | 是否有连消 |
| isBuyFeature | Varchar(5) | 是 | true/false/NA | 是否有购买免费游戏(NA 没有购买免费游戏功能) |
其中,详细的游戏代码请参照"附录 4 游戏代码定义".
GetBetHistory 请求和响应消息示例:
JSON GetBetHistoryRequest:
{ "beginDate": "20120721T175139", "endDate": "20120723T174139", "pageIndex": 1, "merchantCode": "TEST", "serialNo": "20120723175139440637" }
JSON GetBetHistoryResponse:
{ "list": [{ "ticketId": 633161396, "acctId": "Test10001", "categoryId": "SM", "gameCode": "sLongX3", "ticketTime": "20200908T161044", "betIp": "8.8.8.8", "betAmount": 20, "winLoss": 30, "currency": "CNY", "result": "23412", "jackpotAmount": 1.5, "luckyDrawId": 0, "completed": True, "roundId": 1879, "sequence": 0, "channel": web, "balance": 234.000000, "jpWin": -100.000000 "referenceId": "" "isCascade": true "isBuyFeature": false }], "resultCount": 1, "pageCount": 1, "merchantCode": "TEST", "msg": "success", "code": 0, "serialNo": "20120723175139440637" }
JSON Jackpot GetBetHistoryResponse:
{ "channel": Web, "result": "{\"ticketId\":\"31\",\"jpCategory\":\"1\",\"jpCode\":\"Roma\"}", "currency": "XXX", "acctId": "TestPlayer488", "balance": 20000024.4, "jpWin": 0.0, "gameCode": "sRoma", "sequence": 0, "referenceId": "", "ticketId": 35, "categoryId":"SM", "luckyDrawId": 0, "roundId": 0, "betAmount": 0.0, "completed": true, "jackpotAmount": 0.0, "ticketTime": "20221103T160952", "betIp": "xxx.xxx.xxx.xxx" }
Http 客户端中的示例:


查询注单信息
使用场景: Merchant 可直接查询注单信息。
接口名: Query Bet Detail
接口提供者:Game Provider
接口使用者: Merchant
Direct link for query bet detail:
https://gameapi.backoffice-domain.com/betDetails?merchantId=MERCHANT_CODE&token=MD5_HASH&lang=en&ticketId=TICKET_ID
- Merchant请向客服索要密钥.
- 请使用MD5加密算法 ticketId|secretKey 以获得 token 参数.
强制退出当前在线用户
使用场景: 当 merchant 网站进行维护时, 如果不希望当前在游戏中的玩家继续游戏, 则调用本接口, 将所属的在线用户强制退出
接口名: kickAcct
接口提供者: Game Provider
接口使用者: Merchant
请求消息定义 KickAcctRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 否 | TESTPLAYER1 | 玩家 ID, 如果为空则退出全部 |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列,由调用者生成 |
响应消息定义 KickAcctResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| List | String[] | 是 | [TESTPLAYER1] | 退出的用户列表 |
KickAcct 请求和响应消息示例:
JSON KickAcctRequest:
{ "acctId": "Test10001", "merchantCode": "TEST", "serialNo": "20130430164644935780" }
JSON KickAcctResponse:
{ "list": ["Test10001"], "merchantCode": "TEST", "code": 0, "msg": "success", "serialNo": "20130430164644935780" }
Http 客户端中的示例:


查询游戏列表
使用场景: 查询游戏列表
接口名: getGames
接口提供者: Game Provider
接口使用者: Merchant
请求消息定义 GetGamesRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchantCode | Varchar(50) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 GetGamesResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| games | Game[] | 是 | Game类 |
Game type 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| gameCode | Varchar(50) | 是 | sLongX3 | 游戏代码 |
| gameName | Varchar(50) | 是 | Long Long Long | 游戏名称 |
| cnName | Varchar(50) | 是 | 龙龙龙 | 游戏中文名称 |
| line | Integer | 是 | 1 | 游戏线 |
| category | Varchar(50) | 是 | SM | 游戏种类 |
GetGames (请求和响应消息示例):
JSON GetGamesRequest:
{ "merchantCode": "TEST", "serialNo": "20130430164644935780" }
JSON GetGamesResponse:
{ "games": [{ "gameCode": "sLongX3", "gameName": "Long Long Long", "cnName": "龙龙龙", "line": 1, "category": "SM" }], }
Http 客户端中的示例:


查询域名列表
使用场景: 查询域名列表
接口名: getDomainList
接口提供者: Game Provider
接口使用者: Merchant
请求消息定义 GetDomainListRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchantCode | Varchar(50) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20120722224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 GetDomainListResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| domains | String[] | 是 | ["https://lobby.sample.com"] | 域名列表 |
| merchantCode | Varchar(50) | 是 | TEST | 标识商户 ID |
| code | Integer | 是 | 0 | 处理结果代码定义 code |
| msg | Varchar(128) | 是 | success | 处理结果描述 |
| serialNo | Varchar(50) | 是 | 20210920224255982841 | 用于标识消息的序列, 由调用者生成 |
GetDomainList 请求和响应消息示例:
JSON GetDomainListRequest:
{ "merchantCode": "TEST", "serialNo": "20210920164644935780" }
JSON GetDomainListResponse:
{ "domains": [ "https://lobby1.sample.com", "https://lobby2.sample.com", "https://lobby3.sample.com" ] "merchantCode": "TEST" "code": 0 "msg": "Success" "serialNo": "20210920224255982841" }
Http 客户端中的示例:


查询利润损失列表
使用场景: 查询利润损失信息
接口名: getProfitLoss
接口提供者: Game Provider
接口使用者: Merchant
特别注意 :
- 建议商家将每次搜索时间调在一个月内
请求消息定义 GetProfitLossRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| beginDate | Char(15) | 是 | 20120720T230043 | 开始日期,格式为 yyyymmdd’T’24hhmmss |
| endDate | Char(15) | 是 | 20120720T230043 | 结束日期,格式为 yyyymmdd’T’24hhmmss |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| isAll | boolean | 否 | true / false | 是否显示其商户下的所有子商户 |
| currency | Varchar(3) | 否 | CNY | 货币的 ISO 代码 |
| pageIndex | Integer | 是 | 1 | 页码 |
响应消息定义 GetProfitLossResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| resultCount | Integer | 是 | 100 | 总共的记录数 |
| pageCount | Integer | 是 | 1 | 总共的页数 |
| list | ProfitLossInfo[] | 是 | ProfitLossInfo的数组 |
ProfitLossInfo 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchantCode | Varchar(10) | 是 | GT | 标识商户 ID |
| currency | Varchar(3) | 是 | CNY | 货币的 ISO 代码 |
| betCount | Integer | 是 | 149612 | 总共的页数 |
| betAmount | Decimal(18,6) | 是 | 285725.320000 | 下注金额 |
| validBetAmount | Decimal(18,6) | 是 | 285725.320000 | 有效的下注金额 |
| totalWL | Decimal(18,6) | 是 | -7271.780000 | 总共的用户输赢 |
| jpContributeAmt | Decimal(18, 6) | 是 | 0.000000 | 积宝贡献金额 |
| jpAmt | Decimal(18, 6) | 是 | 0.000000 | 大奖金额 |
| jpTotalWL | Decimal(18, 6) | 是 | -7271.779999 | 累积奖金总损失 |
| bonusAmt | Decimal(18, 6) | 是 | 0.000000 | 奖金金额 |
| bonusBearAmt | Decimal(18, 6) | 是 | 0 | Bonus Bear Amount |
GetProfitLoss 请求和响应消息示例:
JSON GetProfitLossRequest:
{ "beginDate": "20220901T000000", "endDate": "20220902T000000", "merchantCode": "TEST", "isAll": true, "currency": "CNY", "pageIndex": 1 }
JSON GetProfitLossResponse:
{ "list": [{ "merchantCode": "TEST", "currency": "CNY", "betCount": 149612, "betAmount": 285725.32, "validBetAmount": 285725.32, "totalWL": -7271.78, "jpContributeAmt": 0.0, "jpAmt": 0.000000, "jpTotalWL": -7271.779999, "bonusAmt": 0.0, "bonusBearAmt": 0 }], "pageCount": 1, "resultCount": 1, "merchantCode": "TEST", "code": 0, "msg": "success", "serialNo": "20230419T1526329782" }
Example in Http client:


查询未完成游戏列表
使用场景: 查询未完成游戏信息
接口名: getUnfinishedGameLog
接口提供者: Game Provider
接口使用者: Merchant
请求消息定义 GetUnfinishedGameLogRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| beginDate | Char(15) | 是 | 20120720T230043 | 开始日期,格式为 yyyymmdd’T’24hhmmss |
| endDate | Char(15) | 是 | 20120720T230043 | 结束日期,格式为 yyyymmdd’T’24hhmmss |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| isAll | boolean | 否 | true / false | 是否显示其商户下的所有子商户 |
| acctId | Varchar(50) | 否 | TestPlayer678 | 玩家唯一标识 ID |
| gameCode | Varchar(10) | 否 | sShkThaiX2 | 游戏代码 |
| pageIndex | Integer | 是 | 1 | 页数 |
响应消息定义 GetUnfinishedGameLogResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| resultCount | Integer | 是 | 100 | 总共的记录数 |
| pageCount | Integer | 是 | 1 | 总共的页数 |
| list | UnfinishGameInfo[] | 是 | UnfinishedGameInfo 的数组 |
UnfinishedGameInfo 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| acctId | Varchar(50) | 是 | TESTPLAYER678@TEST | 用户唯一标识 ID |
| loginId | Varchar(50) | 是 | TestPlayer678 | 玩家唯一标识 ID |
| gameCode | Varchar(10) | 是 | 游戏代码 | |
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| unfinishedBonus | Integer | 是 | 0 | 未完成奖金游戏数量 |
| unfinishedFree | Integer | 是 | 12 | 未完成免费旋转数量 |
| unfinishedFreeMultiplyer | Integer | 是 | 1 | 未完成免费乘数数量 |
| createDate | DateTime | 是 | 20220929T080000 | 玩家未完成游戏的生成日期 |
GetUnfinishedGameLog 请求和响应消息示例:
JSON GetUnfinishedGameLogRequest:
{ "beginDate": "20220929T000000", "endDate": "20221001T000000", "merchantCode": "TEST", "isAll": true, "acctId": "TestPlayer678", "gameCode": "sShkThaiX2", "pageIndex": 1 }
JSON GetUnfinishedGameLogResponse:
{ "list": [{ "acctId": "TESTPLAYER678@TEST", "loginId": "TestPlayer678", "gameCode": "sShkThaiX2", "merchantCode": "TEST", "unfinishedBonus": 0, "unfinishedFree": 12, "unfinishedFreeMultiplyer": 1, "createDate": "20220929T080000" }], "pageCount": 1, "resultCount": 1, "merchantCode": "TEST", "code": 0, "msg": "success, " "serialNo": "20230419T2105028176" }
Example in Http client:


Query Online Player Info
Usage Scenario: 检索平台上当前活跃的在线玩家总数
Interface Name: getOnlinePlayerInfo
API Provider: Game Provider
API Requestor: Merchant
请求消息定义 GetOnlinePlayerInfoRequest:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| serialNo | Varchar(50) | 是 | 20210920224255982841 | 用于标识消息的序列, 由调用者生成 |
响应消息定义 GetOnlinePlayerInfoResponse:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| resultCount | Integer | 是 | 100 | 总共的记录数 |
| pageCount | Integer | 是 | 1 | 总共的页数 |
| list | OnlinePlayerInfo[] | 是 | OnlinePlayerInfo 的数组 |
OnlinePlayerInfo 定义:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| userName | Varchar(15) | 是 | TESTPLAYER678 | 用户名称 |
| currency | Char(3) | 是 | USD | 货币的 ISO 代码 |
| acctId | Varchar(50) | 是 | TESTPLAYER678 | 游戏玩家 ID |
GetOnlinePlayerInfo 请求和响应消息示例:
JSON GetOnlinePlayerInfoRequest:
{ "merchantCode": "TEST", "serialNo": "1111-1111-1111" }
JSON GetOnlinePlayerInfoResponse:
{ { "serialNo": "1111-1111-1111", "code": 0, "msg": "Success", "merchantCode": "TEST", "resultCount": 1, "pageCount": 1, "list": [ { "userName": "TESTPLAYER901", "currency": "USD", "acctId": "TESTPLAYER901" }
Example in Http client:


API 锦标赛定义
锦标赛的域名与可用域名相同。https://tournament.sampledomain.com.
锦标赛的测试环境 https://tournament_staging.sampledomain.com
锦标赛的正试环境 https://tournament.sampledomain.com
查询锦标赛列表
使用场景: 根据商家获取可用锦标赛列表
端点名: /tournament/get
接口提供者: 游戏锦标赛领域
接口使用者: 无
数据传输方式: POST
请求消息定义锦标赛列表:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| language | Varchar(10) | 是 | en_US | 语言 |
| game | Varchar(10) | 否 | sLongX3 | 游戏代码 |
响应消息定义锦标赛列表:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| isShow | boolean | 是 | true | 验证 |
| info | String[] | 否 | "id": Integer/number, | 显示信息列表 |
| id | Varchar(10) | 是 | 1000 | 标识帐户 ID |
| name | Varchar(255) | 是 | Songkran Festival Tournament | 锦标赛名字 |
| startDate | Vachar(24) | 是 | 2023-04-01T00:00:00.000Z | 开始日期 |
| endDate | Vachar(24) | 是 | 2023-04-14T23:59:59.000Z | 结束日期 |
| desc | Varchar(1024) | 是 | Spin & Soak up the Big Wins | 描述信息 |
锦标赛列表请求和响应消息示例:
JSON Request:
{ "merchant": "TEST", "language": "en_US", "game": "sCandyXmas" }
JSON 响应成功:
{ "isShow": true, "info": [ { "id": "1000", "name": "Songkran Festival Tournament", "startDate": "2023-04-01T00:00:00.000Z", "endDate": "2023-04-14T23:59:59.000Z", "desc": "Spin & Soak up the Big Wins" } ] }
JSON 响应不成功:
{ "isShow": false, }
查询锦标赛奖品列表
使用场景: 根据商家和币种获取赛事奖品列表
端点名: /tournament/prize/get
接口提供者: 游戏锦标赛领域
接口使用者: 无
数据传输方式: POST
请求消息定义锦标赛奖品列表:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| tid | Varchar(10) | 是 | 1000 | 标识锦标赛 ID |
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| currency | Varchar(3) | 是 | USD | 货币 ISO 代码 |
响应消息定义锦标赛奖品列表:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| rank | Varchar(10) | 是 | 1 | 奖位 |
| prize | Varchar(50) | 是 | USD$ 500 | 奖金金额 |
锦标赛奖品列表请求和响应消息示例:
JSON Request:
{ "tid": "1000", "merchant": "TEST", "currency": "USD" }
JSON Response:
[ { "rank": "1", "prize": "USD$ 500" }, { "rank": "2", "prize": "USD$ 300" }, { "rank": "3", "prize": "USD$ 300" }, { "rank": "4", "prize": "USD$ 200" }, { "rank": "5-10", "prize": "USD$ 100" } ]
查询锦标赛排行列表
使用场景: 获取锦标赛排行列表
端点名: /tournament/rank/get
接口提供者: 游戏锦标赛领域
接口使用者: 无
数据传输方式: POST
请求消息定义锦标赛排行列表:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| tid | Varchar(10) | 是 | 1000 | 标识锦标赛 ID |
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| game | Varchar(10) | 否 | sRoma | 游戏代码 |
响应消息定义锦标赛排行列表:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| rank | Integer | 是 | 1 | 奖位 |
| playerId | Varchar(10) | 是 | TESTPLAYERID | 标识玩家 ID |
| score | Decimal(18,6) | 是 | 3809.523809 | 玩家分数 |
锦标赛排行请求和响应消息示例:
JSON Request:
{ "tid": "1000", "merchant": "TEST", "game": "sRoma" }
JSON Response:
[ { "rank": "1", "playerId": "TESTPLAYER1", "score": "771402.857142" }, { "rank": "2", "playerId": "TESTPLAYER2", "score": 3809.523809 }, { "rank": "3", "playerId": "TESTPLAYER3", "score": 1000 }, { "rank": "4", "playerId": "TESTPLAYER4", "score": 12.619047 }, { "rank": "5", "playerId": "TESTPLAYER5", "score": 1.428571 } ]
查询玩家的锦标赛排行
使用场景: 获得特定玩家在锦标赛中的排行
端点名: /tournament/rank/player/get
接口提供者: 游戏锦标赛领域
接口使用者: 无
数据传输方式: POST
请求消息定义锦标赛排行:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| tid | Varchar(10) | 是 | 1000 | 标识锦标赛 ID |
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| playerId | Varchar(50) | 是 | TESTPLAYER1 | 标识玩家 ID |
| game | Varchar(10) | 否 | sRoma | 游戏代码 |
响应消息定义锦标赛排行:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| score | Decimal(18,6) | 是 | 3809.523809 | 玩家分数 |
| bet | Decimal(18,6) | 是 | 16000 | 玩家投注 |
| rank | Integer | 是 | 2 | 玩家排名 |
锦标赛排行请求和响应消息示例:
JSON Request:
{ "tid": "1000", "merchant": "TEST", "playerId": "TESTPLAYER1", "game": "sRoma" }
JSON Response:
{ "score": 3809.523809, "playerId": 16000, "rank": 2 }
查询玩家详细中奖信息
使用场景: 根据商家和锦标赛获取玩家详细中奖信息
端点名: /tournament/results/get
接口提供者: 游戏锦标赛领域
接口使用者: 无
数据传输方式: POST
请求消息定义玩家详细中奖信息:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| tid | Varchar(10) | 是 | 1000 | 标识锦标赛 ID |
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| currency | Varchar(3) | 否 | USD | 奖金的货币ISO代码 |
响应消息定义玩家详细中奖信息:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| playerId | Varchar(10) | 是 | TESTPLAYERID | 标识玩家 ID |
| currency | Varchar(3) | 是 | USD | 玩家的使用的货币ISO代码 |
| score | Varchar(50) | 是 | USD$ 500 | 玩家分数 |
| rank | Varchar(10) | 是 | 1 | 奖位 |
| prize | Varchar(50) | 是 | USD$ 500 | 玩家奖金 |
玩家详细中奖信息请求和响应消息示例:
JSON Request:
{ "tid": "1000", "merchant": "TEST", "currency": "USD" }
JSON Response:
[ { "merchantCode": "TEST", "playerId": "TESTPLAYER431", "currency": "USD", "ttlBet": 6795069, "score": 6795069, "rank": 1 "prize": USD$ 2,118 } ]
查询玩家详细投注信息
使用场景: 获得玩家详细投注信息
端点名: /tournament/details/get
接口提供者: 游戏锦标赛领域
接口使用者: 商家
数据传输方式: POST
请求消息定义玩家详细投注信息:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| tid | Varchar(10) | 是 | 1000 | 标识锦标赛 ID |
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| playerId | Varchar(50) | 否 | TESTPLAYER1 | 标识玩家 ID |
| beginDate | char(24) | 否 | 2022-09-01 00:00:00 | 开始日期. 格式 yyyy-MM-dd HH:mm:ss |
| endDate | char(24) | 否 | 2022-09-10 00:00:00 | 结束日期. 格式 yyyy-MM-dd HH:mm:ss |
| pageNo | Integer | 否 | 1 | 页数 |
| pageSize | Integer | 否 | 10 | 总共的页数 |
响应消息定义玩家详细投注信息:
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchantCode | Varchar(10) | 是 | TEST | 标识商户 ID |
| playerId | Varchar(50) | 是 | TESTPLAYER1 | 标识玩家 ID |
| currency | Varchar(6) | 是 | MYR | 货币 ISO 代码 |
| betCount | Integer | 是 | 19856 | 总共的页数 |
| ttlBet | Decimal(18,6) | 是 | 3239892 | 总共的投注 |
| wlAmt | Decimal(18,6) | 是 | -3131821.12 | 用户输赢 |
| score | Decimal(18,6) | 是 | 771402.857142 | 玩家分数 |
| rank | Integer | 是 | 1 | 玩家排行 |
玩家详细投注信息请求和响应消息示例:
JSON Request:
{ "tid": "1000", "merchant": "TEST", "playerId": "TESTPLAYER1", "beginDate": "2022-09-01 00:00:00", "endDate": "2022-09-10 00:00:00", "currency": "USD", "pageNo": 1, "pageSize": 10 }
JSON Response:
[ { "merchant": "TEST", "playerId": "TESTPLAYER1", "currency": "USD", "betCount": 19856, "ttlBet": 3239892, "wlAmt": -3131821.12, "score": -771402.857142, "rank": 1 }, { "merchant": "TEST", "playerId": "TESTPLAYER2", "currency": "MYR", "betCount": 18, "ttlBet": 16000, "wlAmt": -6152, "score": 3809.523809, "rank": 2 }, { "merchant": "TEST", "playerId": "TESTPLAYER3", "currency": "MYR", "betCount": 44, "ttlBet": 4200, "wlAmt": 28028, "score": 1000, "rank": 3 } ]
锦标赛页面
使用场景: 锦标赛页面
端点名: /tournament
接口提供者: 游戏锦标赛领域
接口使用者: 无
数据传输方式: POST
| 名称 | 数据类型 | 必填 | 示例 | 说明 |
|---|---|---|---|---|
| merchant | Varchar(10) | 是 | TEST | 标识商户 ID |
| language | Varchar(10) | 是 | en_US | 语言 |
| currency | char(3) | 是 | MYR | 货币 ISO 代码 |
| playerId | Varchar(50) | 否 | TESTPLAYER1 | 标识玩家 ID |
- 详细的 language 的定义, 请参照""附录 2 语言代码定义"。
- 请参考4.15查询域名列表以获取最新域名。
Tournament Page Redirect URL and Parameters:
https://tournament.sampledomain.com/tournament?merchant=TEST&lang=en_US&cy=USD&tid=1000
附录 1 响应代码定义
| code | 中文描述 | 英文描述 | 说明 |
|---|---|---|---|
| 0 | 成功 | Success | 接口调用成功 |
| 1 | 系统错误 | System Error | 系统内部出错, 程序 Bug, 数据库连接不上等 |
| 2 | 非法请求 | Invalid Request | 不是合法的请求 |
| 3 | 服务暂时不可用 | Service Inaccessible | 服务不可用 |
| 100 | 请求超时 | Request Timeout | |
| 101 | 用户调用次数超限 | Call Limited | |
| 104 | 请求被禁止 | Request Forbidden | |
| 105 | 缺少必要的参数 | Missing Parameters | |
| 106 | 非法的参数 | Invalid Parameters | |
| 107 | 批次号重复 | Duplicated Serial No | |
| 108 | Apk 版本及 Pc 版本商家登录 Key 错误 | Merchant Key Error | |
| 109 | 重复Transfer | Duplicate Transfer | |
| 110 | 批次号不存在 | Record Id Not Found | |
| 10113 | Merchant 不存在 | Merchant Not Found | |
| 112 | Api 调用次数超限 | Api Call Limited | 调用 Api 接口的次数已超限 |
| 113 | Acct Id 不正确 | Invalid Acct Id | Acct Id 格式不正确 |
| 50100 | 用户不存在 | Acct Not Found | |
| 50101 | 帐号未激活 | Acct Inactive | |
| 50102 | 帐号已锁 | Acct Locked | |
| 50103 | 帐号 Suspend | Acct Suspend | |
| 50104 | Token 验证失败 | Token Validation Failed | |
| 50110 | 帐号余额不足 | Insufficient Balance | |
| 50111 | 超过帐号交易限制 | Exceed Max Amount | |
| 50112 | 币种不支持 | Currency Invalid | Deposit/Withdraw 的币种与用户的币种不一致, 或者 Merchant 没有相应的币种 |
| 50113 | 金额不合法 | Amount Invalid | Deposit/Withdraw 金额必须 > 0 |
| 10104 | 会员密码不正确 | Password Invalid | |
| 30003 | 设置不完整 | Bet Setting Incomplete | |
| 10103 | 会员不存在 | Acct Not Found | |
| 10105 | 账号为激活 | Acct Status Inactived | |
| 10110 | 账号已锁 | Acct Locked | |
| 10111 | 帐号 Suspend | Acct Suspend | |
| 11101 | 余额不足 | Bet Insufficient Balance | |
| 11102 | 投注失效 | Bet Draw Stop Bet | |
| 11103 | 玩法为开放 | Bet Type Not Open | |
| 11104 | 下注信息不完整 | Bet Info Incomplete | |
| 11105 | 帐号信息异常 | Bet Acct Info Incomplete | |
| 11108 | 下注请求不合法 | Bet Request Invalid | |
| 12001 | 设置不完整 | Bet Setting Incomplete | |
| 1110801 | 下注最大值超过上限 | Bet Request Invalid Max | |
| 1110802 | 下注最小值超下线 | Bet Request Invalid Min | |
| 1110803 | 下注金额错误 | Bet Request Invalid Totalbet | |
| 50200 | 游戏在该货币未激活 | Game Currency Not Active |
附录 2 语言代码定义
| 语言的 ISO 代码 | 说明 | |
|---|---|---|
| bn_BD | 孟加拉语 | |
| de_DE | 德文 | |
| en_US | 英文 | |
| es_ES | 西班牙语 | |
| fil_PH | 菲律宾语 | |
| hi_IN | 印地语 | |
| id_ID | 印度尼西亚语 | |
| ja_JP | 日语 | |
| kh_KM | 高棉语 | |
| ko_KR | 韩语 | |
| my_MM | 缅甸语 | |
| pt_PT | 葡萄牙语 | |
| sv_SE | 瑞典语 | |
| th_TH | 泰语 | |
| vi_VN | 越南语 | |
| zh_CN | 简体中文 | |
| zh_TW | 繁体中文 |
附录 3 货币代码定义
| 货币的 ISO 代码 | 说明(en) | 说明 | |
|---|---|---|---|
| AED | United Arab Emirates Dirham | 阿联酋迪拉姆 | 1:1 |
| AMD | Armenian Dram | 亚美尼亚德拉姆 | 1:1 |
| AOA | Angolan Kwanza | 安哥拉匡撒 | 1:1 |
| ARS | Argentine Peso | 阿根廷比索 | 1:1 |
| AUD | Australian Dollar | 澳洲元 | 1:1 |
| BDT | Bangladeshi taka | 孟加拉塔卡 | 1:1 |
| BND | Brunei Dollar | 汶萊元 | 1:1 |
| BRL | Brazilian Real | 巴西雷亚尔 | 1:1 |
| CAD | Canadian Dollar | 加元 | 1:1 |
| CNY | Chinese Yuan (Renminbi) | 人民币 | 1:1 |
| COP | Colombian Peso | 哥伦比亚比索 | 1:1000 |
| CO2 | Colombian Peso | 哥伦比亚比索 | 1:1 |
| CLP | Chilean Peso | 智利比索 | 1:1 |
| DZD | Algerian Dinar | 阿尔及利亚第纳尔 | 1:1 |
| EUR | Euro | 欧元 | 1:1 |
| ETB | Ethiopian Birr | 埃塞俄比亚比尔 | 1:1 |
| FKP | Falkland Pound | 福克兰群岛镑 | 1:1 |
| GBP | British Pound | 英镑 | 1:1 |
| GHS | Ghanaian Cedi | 加纳塞地 | 1:1 |
| HKD | Hong Kong Dollar | 港元 | 1:1 |
| IDR | Indonesia Rupiah | 印尼盾 | 1:1000 |
| ID2 | Indonesia Rupiah | 印尼盾 | 1:1 |
| INR | Indian Rupee | 印度卢比 | 1:1 |
| JPY | Japanese Yen | 日圓 | 1:1 |
| KHR | Cambodian Riel | 柬埔寨瑞尔 | 1:1 |
| KWD | Kuwaiti Dinar | 科威特第纳尔 | 1:1 |
| KRW | South Korean Won | 韩圆 | 1:1 |
| LAK | Laotian Kip | 寮國基普 | 1:1000 |
| MAD | Moroccan Dirham | 摩洛哥迪拉姆 | 1:1 |
| MMK | Myanmar Kyat | 缅甸元 | 1:1000 |
| MK2 | Myanmar Kyat | 缅甸元 | 1:1 |
| MNT | Mongolian Tughrik | 蒙古图格里克 | 1:1000 |
| MN2 | Mongolian Tughrik | 蒙古图格里克 | 1:1 |
| MYR | Malaysia Ringgit | 马来西亚零吉 | 1:1 |
| MXN | Mexican Peso | 墨西哥比索 | 1:1 |
| NGN | Nigerian Naira | 尼日利亚奈拉 | 1:1 |
| NPR | Nepalese rupee | 尼泊尔卢比 | 1:1 |
| PHP | Philippine peso | 菲律宾比索 | 1:1 |
| PEN | Peruvian Sol | 秘鲁索尔 | 1:1 |
| PGK | Papua New Guinean Kina | 巴布亚新几内亚基那 | 1:1 |
| PKR | Pakistani rupee | 巴基斯坦卢比 | 1:1 |
| RUB | Russian Ruble | 俄罗斯卢布 | 1:1 |
| SEK | Swedish krona | 瑞典克朗 | 1:1 |
| SGD | Singapore Dollar | 新加坡元 | 1:1 |
| THB | Thailand Baht | 泰铢 | 1:1 |
| TH2 | Thailand Baht | 泰铢 | 1:100 |
| TND | Tunisian Dinar | 突尼斯第納爾 | 1:1 |
| TRY | Turkish Lira | 土耳其里拉 | 1:1 |
| TZS | Tanzanian Shilling | 坦尚尼亞先令 | 1:1000 |
| USD | United States Dollar | 美元 | 1:1 |
| UZS | Uzbekistani Som | 乌兹别克斯坦苏姆 | 1:1000 |
| VES | Venezuelan Bolívares | 委内瑞拉玻利瓦尔 | 1:1 |
| VND | Viet Nam Dong | 越南盾 | 1:1000 |
| VN2 | Viet Nam Dong | 越南盾 | 1:1 |
| XAF | Central African CFA Franc | 中非法郎 | 1:1 |
附录 4 加密货币代码定义
| 货币的 ISO 代码 | 说明 | 比例 | |
|---|---|---|---|
| ET2 | milli Etherium | 1:0.001 | |
| FTN | FastToken | 1:1 | |
| LT2 | milli Litecoin | 1:0.001 | |
| BC2 | milli Bitcoin Cash | 1:0.001 | |
| TET | Tether USDT | 1:1 | |
| TON | Toncoin | 1:0.001 | |
| XB3 | micro-Bitcoin | 1:0.000001 | |
| XRP | Ripple | 1:1 |
-
区域限制
目前NS对任何区域都没有限制。
-
Nextspin 服务器的时区
我们服务器的时区基于 GMT +8。
-
NS维护时间
通常,我们会在星期二上午 9 点到 11 点进行日常维护。任何更改都会在 Skype 群聊和/或 Telegram 中通知。紧急维护也会在同组通知。
-
NextSpin 支持哪个平台?
所有浏览器,IOS 和 Android。 (但不推荐 IE,因为它已经停止服务)
-
什么是连消(cascade)功能?
当玩家中奖后,奖励符号会消失,新的符号会往下掉补满格子,形成新的盘面。如果新的盘面再次中奖,又会继续消除,直到没有新的中奖组合状态。
-
游戏列表
The Google Excel(游戏列表) 文件包含所有 Nextspin 最新游戏信息。
-
能否知道哪些游戏有免费旋转吗?
可参考专栏(免费游戏) column (Free Games)
-
指定货币的存取款比例
所有币种的存取款比例都是一样的,都是1:1。例如,当玩家存入1 USD时,他们将在游戏中获得1 USD。
**VND 和 IDR 将显示 1:1000(游戏中显示存款 1000 IDR = Rp1.00)
-
能不能帮忙增加api白名单功能,限制非我方和子代理相关人员调用api信息?
商家需要向我们提供 IP 以用于 API 和 BO 访问的白名单。
-
NS有没有暂存环境(staging env)可以提供给我们的operator?
可向技术人员询问。
-
查询异常投注需要哪些资料?
注单 ID、玩家 ID、时间范围、屏幕截图/视频(如果适用)
-
支持语言
API Doc Language(EN) | API Doc Language(CN)
-
一个运营商是否对应一种货币?如果我们需要开通其他币种,应该怎么办?
1个商户代码可以有多个币种,1:N。
-
后台信息(投注交易)的保留时间是多少?
2个月/60天
-
如何解锁BO账户?
可以联系客服
-
如何重置密码?
可以联系客服
-
玩家声称他/她赢得了比赛但没有收到奖金?
首先,可能会要求他们提供注单ID和截图。如果可能,可以要求他们提供时间范围。之后,可以与客服核实
-
BO报告不相符?
反馈给客服,我们会在工作日解决。
-
如何获得秘钥(secret key—)?
可以联系客服
-
无法进入游戏 / 大厅
如果商家有任何错误,可以附上游戏链接,包括商家代码、认证令牌和图像(如果有),以供检查目的
示例游戏链接:
https://lobby.sampledomain.com/DEMO/auth/?acctId=TESTPLAYER1&language=zh_CN&token=fe1a85adc54545d2963b661a22d09c9e&channel=Web&isLobby=true
-
如何在游戏中踢出玩家?
API Doc KickAcc(EN) | API Doc KickAcc(CN)
-
查询投注明细的用处 (API 4.12)
给于的链接用于在不登录 BO 的情况下生成投注详细信息
**注:可替换sampledomain、MERCHANT_CODE、MD5_HASH和ticket_ID https://gameapi.sampledomain.com/betDetails?merchantId=MERCHANT_CODE&token=MD5_HASH&lang=en&ticketId=TICKET_ID
