# v2 串接 api *參數對應
## api 列表
| 傳送方式 | API | 是否必須 |
| -------- | -------- | -------- |
| 不拘 | [建立會員](#建立會員) | 必要 |
| 不拘 | [查詢會員](#查詢會員) | 必要 |
| 不拘 | [上線玩家列表](#上線玩家列表) | 必要 |
| 不拘 | [取得遊戲入口連結](#取得遊戲入口連結) | 必要 |
| 不拘 | [轉入出點數](##轉入出點數)(上下分) | 必要 |
| 不拘 | [轉點紀錄查詢](#轉點紀錄查詢)(上下分查詢) | 必要 |
| 不拘 | [注單查詢 VersKey](#注單查詢VersKey) | 必要 |
| 不拘 | [取得注單查詢明細 url](#取得注單查詢明細url) | 必要 |
| 不拘 | [注單查詢 time](#注單查詢time) | 必要 |
| 不拘 | [注單統計](#注單統計) | 必要 |
| 不拘 | [踢人](#踢人) | 必要 |
## api 接口說明
以下 api 參數 加密方式 由各司自行 新增 調整
### 建立會員
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | ---------- | -------------------- | -------- |
| 會員帳號 | str(4, 30) | 可支援 @ _ 特殊符號 | 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| ---- | ---- | -------- | -------- |
| 狀態 | - | 成功與否 | 必要 |
**req**
```jsonld
curl -X "POST" "http://{_API_SERVER_}:8089/client/create" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"password": "123456",
"agentID": "mega",
"nickname": "{會員帳號}",
"platform": "web",
"house": "bthouse01",
"subAgentID": "mega",
"group": "cny_web_btmega_bthouse01_try",
"currency": "cny",
"description": "create from Mega",
"agent": "btmega"
}'
```
**res**
```json
{
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYW1lcklkIjoiY255X3dlYl9idG1lZ2FfYnRob3VzZTAxX3RyeV9fY29vbF9tYW5fIiwibmlja25hbWUiOiJfY29vbF9tYW5fIiwiaWF0IjoxNTk0OTU3MDQ1LCJleHAiOjE1OTUwNDM0NDV9.qScmWqIqmVkZcRZuSj9e7u6p2GP_5TBhzx8mS2m1igg",
"nickname": "{會員帳號}",
"created": 1594957045781,
"date": "2020-07-17T11:37:25+08:00",
"description": "create from Mega",
"code": 200200
}
```
---
### 查詢會員
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 會員帳號 | str(4, 30) | 可支援 @ _ 特殊符號 | 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 會員上下線狀態 | - | 會員上下 | 必要|
| 會員目前額度 | int | 額度 | 必要|
| 狀態 | - |成功與否| | |
**req**
```jsonld
curl -X "POST" "http://{_API_SERVER_}/credit/get_balance" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"client": "cny_web_btmega_bthouse01_try_{會員帳號}"
}'
```
**res**
```json
{
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"balance": 8800000,
"currency": "CNY",
"code": 200100
}
```
---
### 上線玩家列表
#### 我司帶入
--
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 會員帳號 | - | 目前在線會員(最久兩秒刷新) | 必要|
**req**
```jsonld
curl -X "POST" "http://{_API_SERVER_}/gamer/get_online/aboid" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"aboid": "cny_web_btmega_bthouse01_try_"
}'
```
**res**
```jsonld=
{
"gamerList": [
"cny_btplat_btagent_bthouse_try_{會員帳號1}",
"cny_btplat_btagent_bthouse_try_{會員帳號2}",
"cny_btplat_btagent_bthouse_try_{會員帳號3}",
"cny_btplat_btagent_bthouse_try_{會員帳號4}",
"cny_btplat_btagent_bthouse_try_{會員帳號5}"
],
result_code: 200
}
```
#### 取得會員是否上線
**req**
```jsonld
curl -X "POST" "{_API_SERVER_}/gamer/online" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"gamerid": "cny_web_btmega_bthouse01_try_{會員帳號}"
}'
```
***res***
```json=
{
"balance": 100000,
"gamerid": "cny_web_btmega_bthouse01_try_{會員帳號}",
"currency": "CNY",
"onLine": true, // false = 不在線
"resultCode": 1 // -1 = 帳號不存在
}
```
---
### 取得遊戲入口連結
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 會員帳號 | str(4, 30) | 可支援 @ _ 特殊符號 | 必要|
| 遊戲代碼 | - | 由貴司自訂 | 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 跳轉遊戲連結 | - | 進入遊戲連結 | 必要|
**1.先取得tonken**
req
```jsonld=
curl -X "POST" "http://{_API_SERVER_}/auth/login" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"password": "123456"
}'
```
res
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJnYW1lcklkIjoiY255X3dlYl9idG1lZ2FfYnRob3VzZTAxX3RyeV9fY29vbF9tYW5fIiwibmlja25hbWUiOiJfY29vbF9tYW5fIiwiaWF0IjoxNTk0OTczNzgzLCJleHAiOjE1OTUwNjAxODN9.VvUQmY1vEDmiIm76kzpO7PlJP3AocBOlEIRYYaM0RVg",
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"nickname": "{會員帳號}",
"code": 200400
}
```
2.組合遊戲連結
*其他參數參照API文件
```
http://{_Game_Server_}/?tablekey=comLobby&key={取得的TOKEN}
```
---
### 轉入出點數
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 會員帳號 | str(4, 30) | 可支援 @ _ 特殊符號 | 必要|
| 異動點數 | - | 轉入轉出額度(上下分額度) | 必要|
| 訂單 id | - | 遊戲方轉點流水號(唯一值)| 必要|
| 轉出轉入動作 | - | 轉出或轉入動作| 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 狀態 | - | 訂單是否成功 必須詳細回應 三種狀態 <br>1.確認成功 <br>2.確認失敗 <br>3.不確定 (網路逾時 等因素) | 必要|
| 訂單 id | - | 遊戲方轉點流水號(唯一)| 必要|
| 異動前金額 | - | 會員轉點前金額(上分前額度)| 必要|
| 異動後金額 | - | 會員轉點後金額(下分前額度)| 必要|
req
// 1存入, 0提取
// 額度 10000 = 遊戲顯示 1.00
```jsonld
curl -X "POST" "http://{_API_SERVER_}/credit/agent_client_transfer" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"amount": "{額度}",
"sn": "{訂單ID}",
"operFlag": {0存入/1提取},
"description": "Transfer from Mega",
"currency": "cny",
"agent": "btmega"
}'
```
*所以交易會有紀錄(可查注單)
*額度不足, 提取時不會扣負的, 會顯示transferState=0 失敗, 金額異動前後不變
res
```json
{
"sn": "{訂單ID}",
"agent": "btmega",
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"operFlag": "{0:存入/1:提取}",
"amount": "{額度}",
"currency": "cny",
"description": "Transfer from Mega",
"created": 1594957365476,
"date": "2020-07-17T11:42:45+08:00",
"clientBalanceBefore": "{異動前金額}",
"clientBalanceAfter": "{異動後金額}",
"transferState": "{0:失敗 1:成功}",
"code": 200100
}
```
---
### 轉點紀錄查詢
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 訂單 id | - | 遊戲方轉點流水號(唯一)| 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 狀態 | - | 訂單是否成功 必須詳細回應 三種狀態 <br>1.確認成功 <br>2.確認失敗 <br>3.不確定 (網路逾時 等因素) | 必要|
| 訂單 id | - | 遊戲方轉點流水號(唯一)| 必要|
| 異動前金額 | - | 該筆訂單會員轉點前金額| 必要|
| 異動後金額 | - | 該筆訂單會員轉點後金額| 必要|
req
```jsonld
curl -X "POST" "http://{_API_SERVER_}/credit/query_transfer_state" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"sn": "{訂單 id}"
}'
```
res
```json
{
"sn": "{訂單 id}",
"agent": "btmega",
"client": "cny_web_btmega_bthouse01_try_{會員帳號}",
"operFlag": "{0:存入/1:提取}",
"amount": "{額度}",
"description": "Transfer from Mega",
"created": 1594957365476,
"date": "2020-07-17T11:42:45+08:00",
"clientBalanceBefore": "{異動前金額}",
"clientBalanceAfter": "{異動後金額}",
"transferState": "{0:失敗 1:成功}",
"code": 200100
}
```
---
### 注單查詢VersKey
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| VersKey | - | 所以 大於 VersKey 的注單都必須回傳| 必要|
ps. VersKey 為注單 版本號 若有新建或更新 都必須更新此 VersKey
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 注單 | - | 注單資訊| 必要|
*待確認
---
### 注單查詢time
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 小於 time | - | 時間內得注單| 必要|
| 大於 time | - | 時間內得注單| 必要|
| 遊戲 id | - | 各遊戲唯一值| 非必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 注單 | - | 注單資訊| 必要|
req
startTime, endTime以注單bettime為依據
```jsonld
curl -X "POST" "http://{_API_SERVER_}/log/get_betlog" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"endTime": "{小於 time}",
"startTime": "{大於 time}",
"agent": "btmega"
}'
```
**回傳時間區間內,所有注單紀錄,注單更新會以bettime更新.
res
```json
{
"count": 1, //這次查詢回傳筆數
"data": [
{
"paytime": "1594957402511", //派彩時間
"firstbettime": "1594957382961", //第一次下注時間
"starttime": "1594957377899", //開始時間
"endtime": "1594957402393", //結束時間
"betendtime": "1594957388899", //最後下注時間
"gametype": "s3", //遊戲簡碼
"validbet": "0", //有效打碼量
"roundid_balance_before": "2000000", //開局前額度
"roundid_balance_after": "2000000", //開局後額度
"id": "19217470", //序號
"betid": "60007171000000022509", //投注ID
"roundid": "840aa001200717114257s30010992fastBaccarat",//局號
"bettime": "1594957402511", //最後注單更新時間
"account": "cny_web_btmega_bthouse01_try_{會員帳號}", //會員帳號
"performtype": "web",
"game": "fastBaccarata001s301", //遊戲類型
"betamount": "200000", //下注金額
"winoutamount": "200000", //派彩金額
"currency": "CNY", //幣別
"status": "done", //注單狀態,done已派彩,
//cancel無效局,betting投注中,rewrite改單
"gameplatformid": "2",
"platform": "web",
"house": "bthouse01",
"agent": "btmega",
"betdetail": {
//詳細注單/遊戲資訊依遊戲不同
},
"gametable": "01"//桌號
}
//...array
],
"code": 200100
}
```
| 欄位 | 實際範例 | 最大長度 | 備註 |
|:-------:|:-------------:|:--------:|:--------:|
| paytime | 1594957402511 | bigint | 派彩時間(ms) |
|firstbettime|1594957382961|bigint|玩家第一次下注時間(ms)|
|starttime|1594957377899|bigint|遊戲開始時間(ms)/可下注時間|
|endtime|1594957402393|bigint|遊戲結束時間(ms)/開始派彩時間|
|betendtime|1594957388899|bigint|停止下注時間(ms)|
|gametype|s3|char 255|遊戲類型|
|validbet|0|bigint|有效打碼量|
|roundid_balance_before|2000000|bigint|一局開始前帳戶的餘額|
|roundid_balance_after|2000000|bigint|結束後帳戶餘額|
|id|19217470|bigint|流水號|
|betid|60007171000000022509|char 255|投注BetID|
|roundid|840aa001200717114257s30010992fastBaccarat|char 255|局號|
|bettime|1594957402511|bigint|下注/派彩/注單最後更新時間(ms)|
account|cny_web_btmega_bthouse01_try_{會員帳號}|char 255|會員帳號|
|performtype|web|char 8|使用平台|
|game|fastBaccarata001s301|char 255|遊戲編號|
|betamount|200000|bigint|下注金額|
|winoutamount|200000|bigint|派彩金額|
|currency|CNY|char 255|幣別|
|status|done|char 255|注單狀態,betting(投注中),done(已派彩), cancel(無效局),rewrite(改單後重新派彩),|
|gameplatformid|2|char 255|平台編號,2=真人|
|platform|web|char 255|platform|
|house|bthouse01|char 255|house|
|agent|btmega|char 255|agent|
|betdetail|{...}|json格式|詳細注單,遊戲資訊依遊戲不同|
|gametable|01|char 2|桌號|
*撈單回傳Json, 欄位均為string, 長度請參考表格及範例
*注單狀態
* 玩家下注後,尚未派彩前 #狀態=**betting**
* 派彩後# 狀態=**done***
* 遊戲異常,系統自動退注 #狀態=**cancel**, 退款金額在winOutAmount, 且有效打碼會為0validbet=0
* 派彩後,改單 #狀態=**rewrite**
*當局遊戲結束 如果
1. 遊戲正常結束, 並派彩成功, 無異常`status=done`
可立即`轉出` 玩家贏得的錢
*當局結束,如果
1. 有異常,系統可自動排除的會`取消該局`並退注處理,狀態變更為`status=cancel`(十分鐘內會處理完畢)
2. 玩家沒有繼續再玩任何遊戲
**十分鐘後**可保證結清該局
*除非有重大異常, 狀態會顯示投注中`status=betting`, 屆時再請客服人員查看並手動改單處理
---
### 取得注單查詢明細url
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 注單唯一值 | - | | 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 注單詳細 url | - | 跳轉到 該筆注單內容 h5 頁面| 必要|
**遊戲詳細注單連結**
*其他參數參照API文件
```
http://{_BetTracer_URL_}/api/detail?betid={注單唯一值}
```
---
### 注單統計
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 遊戲類型 | - |各遊戲唯一直 | 必要|
| 小於 time | - | 時間內得注單| 必要|
| 大於 time | - | 時間內得注單| 必要|
#### 回傳
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 注單條件內總計 | - | 統計需有 <br>1.有效投注統計 <br>2.派彩統計<br>3.注單筆數統計| 必要|
**待確認
### 踢人
#### 我司帶入
| 參數 | 型態 | 備註 | 是否必須 |
| -------- | -------- | -------- |-------- |
| 會員帳號 | - | | 必要|
req
可以一次多會員
```jsonld=
curl -X "POST" "http://{_API_SERVER_}/gamer/kick_out/" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"gamers": [
"cny_web_btmega_bthouse01_try_{會員帳號}"
]
}'
```
res
*bn1 賓果server
*real 真人server
=> resultCode": 1 //執行完畢
```json
{
"bn1": {
"resultCode": 1
},
"bn2": {
"resultCode": 1
},
"code": 200,
"eball": {
"description": "正確移除時,玩家名稱底下會同時有(FGS&GLS);非正常移除則會缺少其中一項或完全沒有",
"errorCode": null,
"logoutStatusList": {
"cny_web_btmega_bthouse01_try_{會員帳號}": []
},
"resultCode": 1
},
"real": {
"description": "正確移除時,玩家名稱底下會同時有(FGS&GLS);非正常移除則會缺少其中一項或完全沒有",
"errorCode": null,
"logoutStatusList": {
"cny_web_btmega_bthouse01_try_{會員帳號}": [
"FGS",
"GLS"
]
},
"resultCode": 1
}
}
```