# GamePool API :::info Author : Scott Version : 1.0.0 Data : 2019-06-27 ::: [TOC] ###### tags: `gamepool` ## 測試資訊 ### 測試網址 外部IP : http://devh5.lianfa.co/api ### 測試GSToken 放置在Header 之中: ``` Authorization : ``` ## 時間格式 時區: `UTC+0` 格式: `RFC3339` Example: ```shell 1996-12-19T16:39:57Z ``` ## Header 每個 Request 必帶 Header 項目 | Parameter | Type | Value |Description| | --- | --- | --- | --- | | Authorization | string | 給予的token |遊戲商token| | Content-Type | string | application/json | 除 GET 方法外都需要 | ## Response 統一規範輸出格式 | Parameter | Type |Description| | --- | --- | --- | | data | string |資料給予的地方| | status | string | 狀態欄 | | code | int | 狀態碼 | | message | string | 狀態訊息 | | datatime | string | 回應時間 | ```json { "data":{ }, "status":{ "code" : 0, "message" : "success", "datatime" : "2017-01-20T01:44:33-04:00" } } ``` ## API ### 即時在線玩家 功能: 取得即時在線玩家 URI: `/session/list` Method : `GET` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | page | int | page | | pagesize | int | pagesize | | parentAccount | string | parentAccount | Response: | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | data | []object | data | | totalPage | int | totalPage | | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | id | string | id | | uid | int64 | uid | | gameID | int | gameID | | account | string | account | | parentID | string | parentID | | gatewayID | string | gatewayID | | level | string | level | | ip | string | ip | Example: ```json { "data":{ "data":[ { "id": "test001_21", "uid": "CNY", "gameID": 3, "account": "test001", "parentID": "bbin", "gatewayID": "gateway-1-1", "level": 1, "ip": "127.0.0.1", }, { "id": "test002_22", "uid": "CNY", "gameID": 3, "account": "test002", "parentID": "bbin", "gatewayID": "gateway-1-2", "level": 3, "ip": "127.0.0.1", } ], "totalPage": 1 }, "status":{ "code" : 0, "message" : "success", "datatime" : "2017-01-20T01:44:33-04:00" } } ``` ### 取得所有卡單資料 功能 : 取得所有卡單資料 URI : `/rollinfailed/list` Method : `GET` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | Response: | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | id | int | userid | | mtCode | string | 交易單號 | | round | string | 局號 | | amount | float64 | 結算後餘額 | | bet | float64 | 投注額 | | win | float64 | 派獎 | | validAmount | float64 | 有效投注額(百家樂類) | | backAmount | float64 | 開和時退還款項(庄閒兩格總下注額)(百家樂類) | | tax | float64 | 稅收 | | gameType | int32 | 遊戲類型 1:一般牌類 2:百家樂類 | | jackpot | float64 | jackpot | | dateTime | int64 | 時間 | | gameCode | string | 遊戲代碼 | | level | int32 | 房間level | Example: ```json { "data": { "rollInData": [ { "id":"test_1", "mtCode": "2TIF1230000999", "round": "2T1230000999", "amount": 3993, "bet": 100, "win": 200, "validAmount": 0, "backAmount": 0, "tax": 10, "gameType": 1, "jackpot": 0, "dateTime": 12345678, "gameCode": "G2", "level": 1, } ] }, "status": { "code": 0, "message": "Success", "datetime": "2017-03-31T01:39:27-04:00" } } ``` ### 清除卡單資料 功能 : 清除卡單資料 URI : `/rollinfailed/clean` Method : `POST` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | users | []Users | | Users | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | id | int | 玩家id | | account | string | 玩家帳號 | | round | string | 局號 | Response: Example: ```json { "data": { }, "status": { "code": 0, "message": "Success", "datetime": "2017-03-31T01:39:27-04:00" } } ``` ### 棋牌注單明細 功能 : 棋牌注單明細 URI : `/table/order` Method : `GET` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | roundID | string | roundID | Response: | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | gameCode | string | gameCode | | gamePlaySerial | string | 局號 | | startTime | int64 | startTime | | endTime | int64 | endTime | | level | string | level | | currency | string | currency | | roomUsers | []RoomUser | | | flopCards | []FlopCards | | RoomUser | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | userID | string | | | isBot | bool | | | isBanker | bool | | | betMultiple | int | | | bet | float64 | | | pay | float64 | | | tax | float64 | | | beforeBalance | float64 | | | afterBalance | float64 | | | deck | object | | FlopCards | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | number | int | | | suit | int | | Deck | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | cards | []Card | | | cardType | int | | Card | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | number | int | | | suit | int | | Example: ```json { "data": { "gameCode": 4, "gamePlaySerial": "4T2019072300007152", "startTime": "2019-07-23T06:14:31Z", "endTime": "2019-07-23T06:14:39Z", "level": 2, "currency": "CNY", "roomUsers": [ { "userID": "guest-c3a63feb-0eda", "isBot": false, "isBanker": false, "lastStatus": 0, "betMultiple": 0, "bet": 100, "pay": -100, "tax": 0, "beforeBalance": 100, "afterBalance": 0, "deck": { "cards": [ { "number": 8, "suit": 3 }, { "number": 10, "suit": 3 } ], "cardType": 2 } }, { "userID": "1OOxW22u3Lv", "isBot": true, "isBanker": false, "lastStatus": 0, "betMultiple": 0, "bet": 0, "pay": 839.8, "tax": 44.2, "beforeBalance": 752, "afterBalance": 1591.8, "deck": { "cards": [ { "number": 2, "suit": 1 }, { "number": 7, "suit": 1 } ], "cardType": 6 } }, { "userID": "1OOxVvEZ9kB", "isBot": true, "isBanker": false, "lastStatus": 0, "betMultiple": 0, "bet": 20, "pay": -20, "tax": 0, "beforeBalance": 732, "afterBalance": 712, "deck": { "cards": [ { "number": 5, "suit": 1 }, { "number": 4, "suit": 2 } ], "cardType": 3 } }, { "userID": "1OOxW0tC01g", "isBot": true, "isBanker": false, "lastStatus": 0, "betMultiple": 0, "bet": 758, "pay": -758, "tax": 0, "beforeBalance": 738, "afterBalance": -20, "deck": { "cards": [ { "number": 2, "suit": 3 }, { "number": 13, "suit": 1 } ], "cardType": 2 } }, { "userID": "1OOxVxkNBEH", "isBot": true, "isBanker": false, "lastStatus": 0, "betMultiple": 0, "bet": 22, "pay": -22, "tax": 0, "beforeBalance": 764, "afterBalance": 742, "deck": { "cards": [ { "number": 6, "suit": 2 }, { "number": 1, "suit": 2 } ], "cardType": 3 } }, { "userID": "1OOxVwrH688", "isBot": true, "isBanker": false, "lastStatus": 0, "betMultiple": 0, "bet": 24, "pay": -24, "tax": 0, "beforeBalance": 756, "afterBalance": 732, "deck": { "cards": [ { "number": 9, "suit": 2 }, { "number": 5, "suit": 2 } ], "cardType": 2 } } ], "flopCards": [ { "number": 12, "suit": 2 }, { "number": 11, "suit": 4 }, { "number": 6, "suit": 1 }, { "number": 4, "suit": 1 }, { "number": 11, "suit": 1 } ] }, "status": { "code": 0, "message": "Success", "datatime": "2019-07-23T06:57:24Z" } } ``` ### 棋牌注單明細(百家樂類) 功能 : 棋牌注單明細(百家樂類) URI : `/table/order/baccarat` Method : `GET` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | roundID | string | roundID | | userID | string | userID | Response: | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | gameCode | string | gameCode | | gamePlaySerial | string | 局號 | | startTime | int64 | 開始時間 | | endTime | int64 | 結束時間 | | level | int32 | 房間等級 | | currency | string | 幣別 | | bet | float64 | 總投注 | | win | float64 | 總派獎 | | validAmount | float64 | 總有效投注 | | pay | float64 | 總損益 | | result | BaccarratResult | 開牌結果 | | zoneBet | map[string]int64 | 各區投注 | | betRecord | []BetRecord | 投注紀錄 | | players | []BaccarratUser | 同局玩家 | *(zoneBet key為各個投注區域代碼)* BaccarratResult | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | dealerhand | Deck | 莊家手牌 | | playerhand | []Deck | 閒家手牌 | | type | int | 開牌結果類型 | Deck | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | zone | int | 區域代碼 | | cards | []Card | | | cardType | int | | BetRecord | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | amount | float64 | 投注金額 | | zone | string | 投注區域代碼 | | time | int64 | 投注時間 | BaccarratUser | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | userID | int64 | 投注金額 | | bet | float64 | 投注 | | win | float64 | 派獎 | | validAmount | float64 | 有效投注 | | pay | float64 | 損益 | Example: ```json { "data": { "gameCode": "G10", "gamePlaySerial": "10T2019112900002df8", "startTime": 1574999779, "endTime": 1574999805, "level": 1, "currency": "CNY", "bet": 14, "win": 28, "validAmount": 14, "pay": -14, "players": [ { "userID": "guest-8719a54b-6b07", "bet": 14, "validAmount": 14, "win": 28, "pay": 14 } ], "result": { "dealerhand": { "cards": [ { "number": 2, "suit": 3 }, { "number": 8, "suit": 2 }, { "number": 3, "suit": 2 } ], "cardtype": 0 }, "playerhand": { "4": { "cards": [ { "number": 6, "suit": 2 }, { "number": 6, "suit": 2 }, { "number": 4, "suit": 4 } ], "cardtype": 0 } }, "type": 28 }, "zoneBet": { "4": 14 }, "betRecord": [ { "amount": 14, "zone": "4", "time": 1575017428 } ] }, "status": { "code": 0, "message": "Success", "datatime": "2019-11-29T09:09:30Z" } } ``` ### 新增代理 功能 : 新增代理 URI : `/agent` Method : `POST` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | account | string | | | name | string | | Response: Example: ```json { "data": "ok", "status": { "code": 0, "message": "Success", "datatime": "2019-07-23T07:12:24Z" } } ``` ### 新增遊戲 功能 : 新增遊戲 URI : `/game` Method : `POST` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | gameCode | string | | Response: Example: ```json { "data": "ok", "status": { "code": 0, "message": "Success", "datatime": "2019-07-23T07:12:24Z" } } ``` ### 踢除線上玩家 功能 : 踢除線上玩家 URI : `/kick` Method : `POST` Note :`踢全部玩家uid=-1 gatewayID=all` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | uid | int | | | gatewayID | string | | Response: Example: ```json { "data": "ok", "status": { "code": 0, "message": "Success", "datatime": "2019-07-23T07:12:24Z" } } ``` ### 遊戲開關設定 功能 : 遊戲開關設定. agent指定代理商開關, agent留白等於全域開關. URI : `/game/enable` Method : `POST` Request : | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | gameCode | string | | | isOpen | bool | | | agent | string | 指定代理商(空值: 全域) | Response: | 參數 | 參數類型 | 參數名稱 | | --- | --- | --- | | gameCode | string | | | isOpen | bool | | Example: ```json { "data": { "gameCode": "G4", "isOpen": true }, "status": { "code": 0, "message": "Success", "datatime": "2019-07-23T07:28:33Z" } } ``` ## Error Code | code | message | | --- | --- | | 0 | success | | 1 | Params Error | | 2 | Round Data Not Found | | 3 | User Not Found | | 4 | Invalid Game Code | | 5 | Duplicate Account | | 6 | Update Failed | | 100 | success | ## Game Level Map ### G2炸金花 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | ### G3搶莊牛牛 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | | 5 | 至尊房 | | 6 | 王者房 | ### G4德州撲克 | level | name | | --- | --- | | 1 | 財大氣粗 | | 2 | 腰纏萬貫 | | 3 | 揮金如土 | | 4 | 富貴逼人 | | 5 | 新手房 | | 6 | 初級房 | | 7 | 中級房 | | 8 | 高級房 | ### G5二八槓 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | | 5 | 至尊房 | | 6 | 王者房 | ### G6通比牛牛 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | | 5 | 至尊房 | | 6 | 王者房 | ### G7搶莊牌九 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | | 5 | 至尊房 | | 6 | 王者房 | ### G8三公 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | | 5 | 至尊房 | | 6 | 王者房 | ### G9極速炸金花 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | ### G10百家樂 | level | name | | --- | --- | | 1 | 體驗房 | | 2 | 初級房 | | 3 | 中級房 | | 4 | 高級房 | ## 其他列舉 ### 撲克牌花色 * number 1~13 代表A~K | suit | mean | | --- | --- | | 1 | 方塊 | | 2 | 梅花 | | 3 | 紅心 | | 4 | 黑桃 | ### 二八槓(無花色) | number | mean | | --- | --- | | 1 | 一筒 | | 2 | 二筒 | | 3 | 三筒 | | 4 | 四筒 | | 5 | 五筒 | | 6 | 六筒 | | 7 | 七筒 | | 8 | 八筒 | | 9 | 九筒 | | 10 | 白板 | ### 牌九(無花色) | number | mean | | --- | --- | | 1 | 丁三 | | 2 | 二四 | | 3 | 雜五(全紅) | | 4 | 雜五(全白) | | 5 | 雜七(全白) | | 6 | 雜七(白三紅四) | | 7 | 雜八(上二下六) | | 8 | 雜八(上三下五) | | 9 | 雜九(紅四白五) | | 10 | 雜九(上三下六) | | 11 | 零霖六 | | 12 | 高腳七 | | 13 | 紅頭十 | | 14 | 斧頭 | | 15 | 板凳 | | 16 | 長三 | | 17 | 梅牌 | | 18 | 鵝牌 | | 19 | 人牌 | | 20 | 地牌 | | 21 | 天牌 | ### 百家樂類型下注區域 | number | mean | | --- | --- | | 1 | 庄 | | 2 | 庄對 | | 4 | 閒 | | 8 | 閒對 | | 16 | 大牌(補牌至少一張) | | 32 | 小牌(沒有補牌) | | 64 | 和 | 開牌結果舉例: | 開牌 | 計算 | 結果 | | --- | --- | --- | | 庄對, 和 | 2 OR 64 | 66 | | 庄對, 閒對, 和 | 2 OR 8 OR 64 | 74 | 驗算: 假設牌型 = 74, AND 運算所有列舉, 大小牌目前沒使用可跳過 | 牌型 | 列舉 | 計算結果 | 開 | | --- | --- | --- | --- | | 74 | 1(庄) | 0 | X | | 74 | 2(庄對) | >0 | O | | 74 | 4(閒) | 0 | X | | 74 | 8(閒對) | >0 | O | | 74 | 16(大牌) | 0 | X | | 74 | 32(小牌) | 0 | X | | 74 | 64(和) | >0 | O |