---
# System prepended metadata

title: 賓果API

---

1. 開局不會拉到彩金
2. 免費球參數10%想要拉出來 以及 總球數 30=>31


待處理
1. 取得前場rng
2. extraBall playbet
3. extraBall DB

# **GameLogin**


**params**
```
{
    code: String,
    entity: {
        gameId: String,
        machineId: String
    }
} 
```
**response**
```
{
    code: String,
    entity: { 
        validBetLevels: Map<string,int> // 可押注倍率
    }
}
```

**Example**
```
params
{
    code: "bingo.gameLogin",
    entity: {
        gameId: "200062",
        machineId: "A4Alex01"
    }
}
        
response
{   
    code: "h5.gameLoginReturn",
    entity: { 
        // 可押注倍率
        validBetLevels: {"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15}
    }
}
```



# **Init**

**params**
``` 
{
    code: String,
    entity: {
        gameId: String,
        machineId: String,
        memberId: String
    }
}
```
**response**
```
{
    code: String,
    entity: {
        executeSetting: {
            payWay: Array<Array<Array<Boolean>>>,
            payTable: Array<Int>,
            specialHitInfo: Array<SpecialHitInfo>,
            screenRow: Int,
            screenColumn: Int,
            megaBingo: Int
            card: Int
        },
        denoms: Array<Int>,
        extraBallTimes: Int, // 額外球數
        credit: Long, // 現在金額
        validBetLevels: Map<string,int> // 可押注倍率
        recoveryGameSeq: String,
        clientRecoveryData: String,
        memberRestrictedBalance: Long
    }
}
SpecialHitInfo
{
    specialHitPattern: String,
    specialHitInfo: Array<String>
}

```

**Example**
```
params
{
    code : "bingo.init",
    entity: {    
        gameId: "200062", 
        machineId: "A4Alex01", 
        memberId: "7686100001"
    }
}

response  
{
    code: "h5.initResponse",
    enity: {
        executeSetting: {  
            extraBallTimes: 12, // 額外球數 
            patternList: [
                [
                    [true,true,true],
                    [true,true,true],
                    [true,true,true],
                    [true,true,true],
                    [true,true,true]
                ],
                [
                    [true,true,true],
                    [true,false,true],
                    [true,false,true],
                    [true,false,true],
                    [true,true,true]
                ],
            ],
            payTable:[1500,500,200,200,100,100,100,50,50,50,50,50,25,25,25,15,5,5,2,2,2],  
            specialHitInfo:[
                {
                    specialHitPattern:"Custom1",
                    specialHitInfo:["freeGame_01"]
                },
                {
                    specialHitPattern:"Custom1",
                    specialHitInfo:["freeGame_02"]
                },  
                {
                    specialHitPattern:"Custom1",
                    specialHitInfo:["megaBingo"]
                } 
            ], 
            screenRow:3,
            screenColumn:5,
            megaBingo: 10000,
            card: 4
        },
        denoms:[1],
        credit: 0, // 現在金額
        // 可押注倍率
        validBetLevels: {"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15}
        recoveryGameSeq:"A4_58bae8727915d43bc5f2937a6f1895dd2fbf9231",
        clientRecoveryData: "",
        memberRestrictedBalance:0
    }
}
```


# **開局**

**params**
```
{
    code: String,
    entity: {
        gameId: String,
        requestSN: String,
        memberId: String,
        machineId: String,
        denom: Int,
        spinRequest: {
            betCard: Array<Boolean>,
            card: Array<Array<Array<Int>>>,
            playerBet: Int,
            denom: Int
        }
    }
} 
```
**response**
```
{
    code: String,
    entity: {
        gameSeq: String,
        credit: Long,
        creditAfterOtherBonus: Long,
        expInfo: {
            exp: Long,
            offsetExp: Long
        },
        beforeCredit: Long,
        baseAndFreeGameTotalWin: Long,
        allRoundBaseAndFreeGameTotalWin: Long,
        memberRestrictedBalance: Long,
        spinResult: {
            nextPay: Int,
            ballList: Array<Int>,
            extraBallResult: Array<{
                baseGameResult: {
                    ball: Int,
                    baseGameTotalWin: Long,
                    gameResult: {
                        playerWin: Long,
                        winResult: Array<{
                            card: Int,
                            patternId: Int
                        }>
                    },
                    specialFeatureResult: Array<{
                        specialHitInfo: String,
                        specialScreenHitCard: Int
                    }>,
                    hitNumber: Array<Array<Array<Boolean>>>,
                    possible: Array<Array<Array<Int>>>,
                    totalWinResult: Array<{
                        card: Int,
                        patternId: Int
                    }>
                },
                freeGameResult: Array<Array<{
                    ball: Int,
                    freeGameTotalWin: Long,
                    gameResult: {
                        playerWin: Long,
                        winResult: Array<{
                            patternId: Int
                        }>
                    }, 
                    hitNumber: Array<Array<Array<Boolean>>>,
                    possible: Array<Array<Array<Int>>>,
                    totalWinResult: Array<{
                        patternId: Int
                    }>
                }>>
            }>,
            probabilityDetail: {
                randomNumberUsed: Int,
                randomDataUsed: Array<Int>
            }
        }
}
```

**Example**
```
params
{
    code: "h5.spinBet",
    enity: {  
        gameId: "200062",
        requestSN:"1688463877000",
        memberId:"7686100001",
        machineId:"A4Alex01",
        denom: 1
        spinRequest: {
            betCard: [true, true, true, false],
            card: [
                [
                    [1,2,3],[13,14,15],[25,26,27],[37,38,39],[49,50,51]
                ],
                [
                    [4,5,6],[16,17,18],[28,29,30],[40,41,42],[52,53,54]
                ],
                [
                    [7,8,9],[19,20,21],[31,32,33],[43,44,45],[55,56,57]
                ],
                []
            ],
            playerBet: 1,
            denom: 1 
        } 
    }
} 
        
response
{
    code: "h5.spinBetResponse",
    entity: {
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        credit:230611459,
        creditAfterOtherBonus:230611459,
        expInfo:{ exp:7407650340,offsetExp:30 },
        beforeCredit:230611489,
        baseAndFreeGameTotalWin:0,
        allRoundBaseAndFreeGameTotalWin:0,
        memberRestrictedBalance:0,
        spinResult:{   
            nextPay: 0,
            ballIndexList: [],
            ballList: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],
            extraBallResult: [
                { 
                    baseGameResult: { 
                        ball: 1,
                        baseGameTotalWin:0,   
                        gameResult: {
                            playerWin: 0,
                            winResult:[
                                {
                                    card: 0,
                                    patternId: 0 // 組合
                                }
                            ]
                        },
                        specialFeatureResult:[
                            {
                                specialHitInfo: 'freeGame_01',
                                specialScreenHitCard: 1
                            }
                        ],
                        hitNumber: [
                            [
                                [false,false,false],
                                [false,true,false],
                                [true,false,false],
                                [false,false,false],
                                [false,true,false]
                            ],
                            [
                                [false,false,false],
                                [false,true,false],
                                [true,false,false],
                                [false,false,false],
                                [false,true,false]
                            ],
                            [
                                [false,false,false],
                                [false,true,false],
                                [true,false,false],
                                [false,false,false],
                                [false,true,false]
                            ],
                            [],
                        ], 
                        possible: [
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [],
                        ],
                        totalWinResult: [
                            {  
                                card: 0, 
                                patternId: 0 // 組合
                            }
                        ],
                    },
                    freeGameResult: [
                        // 第一場32顆球
                        [
                            {
                                ball: 1,
                                freeGameTotalWin:0,   
                                gameResult: {
                                    playerWin: 0,
                                    winResult:[
                                        {
                                            patternId: 0 // 組合
                                        }
                                    ]
                                },  
                                hitNumber: [
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    []
                                ], 
                                possible: [
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [],
                                ],
                                totalWinResult: [
                                    {  
                                        patternId: 0 // 組合
                                    }
                                ],
                                extendInfoResult: {
                                    newExtendIndex: 0,
                                    extend: [true,true,false,false,true]
                                }
                            }
                        ],
                        // 第二場
                        [],
                        ...
                    ]
                }
            ]
            probabilityDetail:{
                randomNumberUsed:21,
                randomDataUsed:[0,10,22,2,5,23,17,18,7,5,54,0,132,8,12,11,16,22,12,18,6]
            }
        }
    }
}
```


# **額外球**

**params**
```
{
    code: String,
    entity: {
        gameSeq: String,
        gameId: String,
        requestSN: String,
        memberId: String,
        machineId: String,
        denom: Int,
        spinRequest: {
            ballIndex: Int, 
        }
    }
} 
```
**response**
``` 
{
    code: String,
    entity: {
        gameSeq: String,
        credit: Long,
        creditAfterOtherBonus: Long,
        expInfo: {
            exp: Long,
            offsetExp: Long
        },
        beforeCredit: Long,
        baseAndFreeGameTotalWin: Long,
        allRoundBaseAndFreeGameTotalWin: Long,
        memberRestrictedBalance: Long,
        spinResult: {
            nextPay: Int,
            extraBallResult: Array<{
                baseGameResult: { 
                    ball: Int, 
                    baseGameTotalWin: Long,
                    gameResult: {
                        playerWin: Long,
                        winResult: Array<{
                            card: Int,
                            patternId: Int
                        }>
                    },
                    specialFeatureResult: Array<{
                        specialHitInfo: String,
                        specialOperations: Array<String>
                    }>,
                    hitNumber: Array<Array<Array<Boolean>>>,
                    possible: Array<Array<Array<Int>>>,
                    totalWinResult: Array<{
                        card: Int,
                        patternId: Int
                    }>
                },
                freeGameResult: Array<Array<{
                    ball: Int,
                    freeGameTotalWin: Long,
                    gameResult: {
                        playerWin: Long,
                        winResult: Array<{
                            playerWin: Long,
                            patternId: Int
                        }>
                    }, 
                    hitNumber: Array<Array<Array<Boolean>>>,
                    possible: Array<Array<Array<Int>>>,
                    totalWinResult: Array<{
                        patternId: Int
                    }>
                }>>
            }>,
            probabilityDetail: {
                randomNumberUsed: Int,
                randomDataUsed: Array<Int>
            }
        }
    }
}
```

**Example**
```
params
{
    code: "h5.extraBet",
    enity: {  
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        gameId: "200062",
        requestSN:"1688463877000",
        memberId:"7686100001",
        machineId:"A4Alex01",
        denom: 1, 
        spinRequest: {
            ballIndex: 0, 
        } 
    }
} 

response
{
    code: "h5.extraBetResponse",
    entity: {
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        credit:230611459,
        creditAfterOtherBonus:230611459,
        expInfo:{ exp:7407650340,offsetExp:30 },
        beforeCredit:230611489,
        baseAndFreeGameTotalWin:0,
        allRoundBaseAndFreeGameTotalWin:0,
        memberRestrictedBalance:0,
        spinResult:{   
            nextPay: 0,
            ballIndexList: [0,5,3,11]
            ballList: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,50],
            extraBallResult: [
                { 
                    baseGameResult: { 
                        ball: 50, 
                        baseGameTotalWin:0,   
                        gameResult: {
                            playerWin: 0,
                            winResult:[
                                {
                                    card: 0,
                                    patternId: 0 // 組合
                                }
                            ]
                        },
                        specialFeatureResult:[ 
                            {
                                specialHitInfo: 'freeGame_01',
                                specialScreenHitCard: 1
                            }
                        ],
                        hitNumber: [
                            [[false,false,false],[false,true,false],[true,false,false],[false,false,false],[false,true,false]],
                            [[false,false,false],[false,true,false],[true,false,false],[false,false,false],[false,true,false]],
                            [[false,false,false],[false,true,false],[true,false,false],[false,false,false],[false,true,false]],
                            [],
                        ], 
                        possible: [
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [],
                        ],
                        totalWinResult: [
                            {  
                                card: 0, 
                                patternId: 0 // 組合
                            }
                        ],
                    },
                    freeGameResult: [
                        // 第一場32顆球
                        [
                            {
                                ball: 1,
                                freeGameTotalWin:0,   
                                gameResult: {
                                    playerWin: 0,
                                    winResult:[
                                        { 
                                            patternId: 0 // 組合
                                        }
                                    ]
                                },  
                                hitNumber: [
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    []
                                ], 
                                possible: [
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [],
                                ],
                                totalWinResult: [
                                    {  
                                        patternId: 0 // 組合
                                    }
                                ],
                                extendInfoResult: {
                                    newExtendIndex: 0,
                                    extend: [true,true,false,false,true]
                                }
                            }
                        ],
                        // 第二場
                        []
                    ]
                }
            ]
            probabilityDetail:{
                randomNumberUsed:21,
                randomDataUsed:[0,10,22,2,5,23,17,18,7,5,54,0,132,8,12,11,16,22,12,18,6]
            }
        }
    }
}

{
    code: "h5.extraWildBallResponse",
    entity: {
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        credit:230611459,
        creditAfterOtherBonus:230611459,
        expInfo:{ exp:7407650340,offsetExp:30 },
        beforeCredit:230611489,
        baseAndFreeGameTotalWin:0,
        allRoundBaseAndFreeGameTotalWin:0,
        memberRestrictedBalance:0,
        isWildBall: true
    }
}
```



# **WildBall**

**params**
```
{
    code: String,
    entity: {
        gameSeq: String,
        gameId: String,
        requestSN: String,
        memberId: String,
        machineId: String,
        denom: Int,
        spinRequest: {
            selectBall: Int, 
        }
    }
}
```
**response**
``` 
{
    code: String,
    entity: {
        gameSeq: String,
        credit: Long,
        creditAfterOtherBonus: Long,
        expInfo: {
            exp: Long,
            offsetExp: Long
        },
        beforeCredit: Long,
        baseAndFreeGameTotalWin: Long,
        allRoundBaseAndFreeGameTotalWin: Long,
        memberRestrictedBalance: Long,
        spinResult: {
            nextPay: Int,
            extraBallResult: Array<{
                baseGameResult: { 
                    ball: Int, 
                    baseGameTotalWin: Long,
                    gameResult: {
                        playerWin: Long,
                        winResult: Array<{
                            card: Int, 
                            winResult: Int
                        }>
                    },
                    specialFeatureResult: Array<{
                        specialHitInfo: String
                    }>,
                    hitNumber: Array<Array<Array<Boolean>>>,
                    possible: Array<Array<Array<Int>>>,
                    totalWinResult: Array<{
                        card: Int,
                        winResult: Int
                    }>
                },
                freeGameResult: Array<Array<{
                    ball: Int,
                    freeGameTotalWin: Long,
                    gameResult: {
                        playerWin: Long,
                        winResult: Array<{ 
                            winResult: Int
                        }>
                    }, 
                    hitNumber: Array<Array<Array<Boolean>>>,
                    possible: Array<Array<Array<Int>>>,
                    totalWinResult: Array<{
                        winResult: Int
                    }>
                }>>
            }>,
            probabilityDetail: {
                randomNumberUsed: Int,
                randomDataUsed: Array<Int>
            }
        }
    }   
```

**Example**
```
params
{
    code: "h5.wallBet",
    enity: {  
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        gameId: "200062",
        requestSN:"1688463877000",
        memberId:"7686100001",
        machineId:"A4Alex01",
        denom: 1, 
        spinRequest: {
            wildBall: 59
        } 
    }
} 

response
{
    code: "h5.wallBetResponse",
    entity: {
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        credit:230611459,
        creditAfterOtherBonus:230611459,
        expInfo:{ exp:7407650340,offsetExp:30 },
        beforeCredit:230611489,
        baseAndFreeGameTotalWin:0,
        allRoundBaseAndFreeGameTotalWin:0,
        memberRestrictedBalance:0,
        spinResult:{   
            nextPay: 0, 
            ballIndexList: [0,5,3,11,16]
            ballList: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,50,59],
            extraBallResult: [
                { 
                    baseGameResult: {  
                        ball: 59, 
                        baseGameTotalWin:0,   
                        gameResult: {
                            playerWin: 0,
                            winResult:[
                                {
                                    card: 0, 
                                    patternId: 0 // 組合
                                }
                            ]
                        },
                        specialFeatureResult:[
                            {
                                specialHitInfo: 'freeGame_01',
                                specialScreenHitCard: 1
                            }
                        ],
                        hitNumber: [
                            [[false,false,false],[false,true,false],[true,false,false],[false,false,false],[false,true,false]],
                            [[false,false,false],[false,true,false],[true,false,false],[false,false,false],[false,true,false]],
                            [[false,false,false],[false,true,false],[true,false,false],[false,false,false],[false,true,false]],
                            [],
                        ], 
                        possible: [
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                            [],
                        ],
                        totalWinResult: [
                            {  
                                card: 0, 
                                patternId: 0 // 組合
                            }
                        ],
                    },
                    freeGameResult: [
                        // 第一場32顆球
                        [
                            {
                                ball: 1,
                                freeGameTotalWin:0,   
                                gameResult: {
                                    playerWin: 0,
                                    winResult:[
                                        { 
                                            patternId: 0 // 組合
                                        }
                                    ]
                                },  
                                hitNumber: [
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    [
                                        [false,false,false],
                                        [false,true,false],
                                        [true,false,false],
                                        [false,false,false],
                                        [false,true,false]
                                    ],
                                    []
                                ], 
                                possible: [
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [[0,0,0],[20,0,0],[25,0,0],[0,0,0],[0,50,0]],
                                    [],
                                ],
                                totalWinResult: [
                                    {  
                                        patternId: 0 // 組合
                                    }
                                ],
                                extendInfoResult: {
                                    newExtendIndex: 0,
                                    extend: [true,true,false,false,true]
                                }
                            }
                        ],
                        // 第二場
                        []
                    ]
                }
            ]
            probabilityDetail:{
                randomNumberUsed:21,
                randomDataUsed:[0,10,22,2,5,23,17,18,7,5,54,0,132,8,12,11,16,22,12,18,6]
            }
        }
    }
}
```



# 結帳

**params**
```
{
    code: String,
    entity: {
        gameSeq: String,
        gameId: String,
        requestSN: String,
        memberId: String,
        machineId: String,
        denom: Int
    }
}
```
**response**
``` 
{
    code: String,
    entity: {
        gameSeq: String
    }   
```

**Example**
```
params
{
    code: "h5.spinEnd",
    enity: {  
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        gameId: "200062",
        requestSN:"1688463877000",
        memberId:"7686100001",
        machineId:"A4Alex01",
        denom: 1
    }
} 

response
{
    code: "h5.spinEndResponse",
    entity: {
        credit:320934664,
        creditAfterOtherBonus:320934664,
        expInfo:{},
        beforeCredit:320934664,
        baseAndFreeGameTotalWin:0,
        allRoundBaseAndFreeGameTotalWin:0,
        gamaDTInfo {
            iDTCycleNum:0,
            iDragonThreshold:999999999,
            iTigerThreshold:999999999
        },
        isRepeatedRequest:false,
        memberRestrictedBalance:0
    }
}
```


# 結束遊戲

**params**
```
{
    code: String,
    entity: {
        gameSeq: String,
        gameId: String,
        requestSN: String,
        memberId: String,
        machineId: String,
        denom: Int
    }
}
```
**response**
``` 
{
    code: String,
    entity: {
        gameSeq: String
    }   
```

**Example**
```
params
{
    code: "h5.gameEnd",
    enity: {  
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99",
        gameId: "200062",
        requestSN:"1688463877000",
        memberId:"7686100001",
        machineId:"A4Alex01",
        denom: 1
    }
} 

response
{
    code: "h5.gameEndResponse",
    entity: {
        gameSeq:"A4_a5a244d931662d0e789052b3f3e7a38e8383da99"
    }
}
```