Web Service API
Technical Guide
1.Introduction
The Web Service API interface is for accessing the SA Gaming Platform. Including user registration, user balance query, user betting records and charging to or withdraw from a user account. This document includes both Transfer Wallet and Seamless Wallet.
2.Version
Version | Description | Date |
---|---|---|
3.0.53 |
| 2024/01/29 |
3.0.54 |
| 2024/03/04 |
3.0.55 |
| 2024/03/18 |
3.0.56 |
| 2024/04/08 |
3.0.57 |
| 2024/04/22 |
3.API Calling Restriction Information
The following APIs have calling restriction.
Name of API | Frequency of calls |
---|---|
GetAllBetDetailsDV | Every 5 minutes no more than 10 calls |
GetAllBetDetailsForTimeIntervalDV | Every 5 minutes no more than 10 calls |
GetCancelledBetDetails | Every 5 minutes no more than 10 calls |
ResendTransaction | Every 5 minutes no more than 1 call |
Accuracy of point value
The accuracy of all point value is limited two decimal places. For example:
1000.23, 89.32, 1002304.89
4.Encryption
4.1.Encryption Requirements
All of the web service queries require DES encryption and MD5 hashing before sending to ensure the content has no modification during transmission.
Please ask us for the following information:
- Secret Key
- EncrypKey
- MD5Key
- API
url - Live game client loader
- Lobby name (supplied during startup the client)
Example DES Encrypt function in ASP.Net C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
protected byte[] EncryptKey = ASCIIEncoding.ASCII.GetBytes("ask_us_for_key"); public string DESEncrypt( string inString) { MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream (ms, new DESCryptoServiceProvider ().CreateEncryptor(EncryptKey, EncryptKey), CryptoStreamMode .Write); StreamWriter sw = new StreamWriter (cs); sw.Write(inString); sw.Flush(); cs.FlushFinalBlock(); sw.Flush(); return Convert.ToBase64String(ms.GetBuffer(), 0, ( int )ms.Length); } |
Example DES Encrypt function in PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php class DES { var $key; var $iv; function DES( $key, $iv=0 ) { $this->key = $key; if( $iv == 0 ) { $this->iv = $key; } else { $this->iv = $iv; } } function encrypt($str) { return base64_encode( openssl_encrypt($str, 'DES-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv ) ); } } ?> |
Example in PHP:
1 2 3 4 5 6 7 8 |
<?php $str = "method=GetUserStatusDV&Key=01234567789ABCDEF0123456789ABCDE&Time=20150101012345&Username=abcd12345"; // for example $key = 'ZyXw4321'; // for example $crypt = new DES($key); $mstr = $crypt->encrypt($str); $urlemstr = urlencode($mstr); echo "[ $str ] Encrypted: [ $mstr ] UrlEncoded encrypted string: [ $urlemstr ]"; ?> |
Example MD5 function in ASP.Net C#:
1 2 3 4 5 6 7 8 9 10 |
public string BuildMD5(string inString) { byte[] hashed = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(inString)); StringBuilder sb = new StringBuilder(hashed.Length * 2); for (int i = 0; i < hashed.Length; i++) { sb.Append(hashed[i].ToString("x2")); } return sb.ToString(); } |
Example MD5 function in PHP:
1 2 3 4 5 6 7 8 9 |
<?php $str = "method=GetUserStatusDV&Key=01234567789ABCDEF0123456789ABCDE&Time=20150101012345&Username=abcd12345"; // for example $md5key = "abcdefg"; // for example $Time = "20150101012345"; // for example $SecretKey = "01234567789ABCDEF0123456789ABCDE"; // for example $PreMD5Str = $str . $md5key . $Time . $SecretKey; $OutMD5 = md5($PreMD5Str); echo "md5:[ $OutMD5 ]"; ?> |
4.2.Encryption Procedures
- Construct a Query String (QS) with required parameters (including the web service method name itself (e.g. method=RegUserInfo)
- DES encrypt the Query String with the supplied EncryptKey and obtain the encrypted query string (q)
- Build an MD5 hash according to (QS) and other parameters to form a signature (s)
- Use HTTP/HTTPS POST request to API url.
- Obtain the resulting XML response.
4.3.Example to call API
Let’s take RegUserInfo as an example.
Encryption requires the following parameters
- method (String, “RegUserInfo”)
- Key (String, the Secret Key)
- Time (DateTime, Current Time, in yyyyMMddHHmmss format)
- Username (String)
- CurrencyType (String)
method, Key and Time are always inserted. Other parameters please follow the parameter list in each API function.
Let say, the Secret Key is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX and md5key is YYYYYYYY.
Example Query String (QS):
1 2 3 |
QS = “method=RegUserInfo&Key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&Time=20140101123456&Username=DemoUser001&CurrencyType=EUR”; q = HttpUtility.UrlEncode( DESencrypt(QS) ); |
For example, q = ‘j4tjorjwarfj3trwise0safrwg2wt4awari0fwjfeoh’
Example MD5 String for building the signature (QS + md5key + Time + Key):
1 |
s = BuildMD5(QS + “YYYYYYYY” + “20140101123456” + “XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”); |
For example, s = ‘1234567890abcdef’
Resulting POST method query (using “Content-Type: application/x-www-form-urlencoded”):
q=j4tjorjwarfj3trwise0safrwg2wt4awari0fwjfeoh&s=1234567890abcdef
POST to: http://
Output
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <RegUserInfoResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Username>DemoUser001</Username> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </RegUserInfoResponse> |
4.4.Error handling
If there are decryption error or the md5 not matching, a generic error response will be output.
ErrorMsgId 128 for decryption error.
ErrorMsgId 132 for md5 sign unmatch.
1 2 3 4 5 |
<?xml version="1.0" encoding="utf-8"?> <APIResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>128</ErrorMsgId> <ErrorMsg>Decryption error</ErrorMsg> </APIResponse> |
5.Web Service Interface
All services require a secret key to access. Please contact us to get one.
5.1.User Account Manipulation
5.1.1.RegUserInfo
Create a user by username and currency type.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "RegUserInfo" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
CurrencyType | Currency: USD Refer to Supported currencies | String (16) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
ErrorMsgId | Error message: 0: Success 108: Username length/format incorrect 113: Username duplicated 114: Currency not exist 133: Create user failed | Byte | Y |
ErrorMsg | Error message details | String | Y |
Output
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <RegUserInfoResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Username>aaauser</Username> </RegUserInfoResponse> |
5.1.2.VerifyUsername
Check if a username is already existing in database of a lobby.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be “VerifyUsername” | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in “yyyyMMddHHmmss” format | DateTime | Y |
Username | Username | String (48) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
IsExist | User existing? True: user existing False: user not existing | Bool | Y |
ErrorMsgId | Error message: 0: Success 108: Username length/format incorrect | Byte | Y |
ErrorMsg | Error message details | String | Y |
Output
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="utf-8"?> <VerifyUsernameResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <IsExist>True</IsExist> <Username>DemoUser001</Username> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </VerifyUsernameResponse> |
5.1.3.GetUserStatusDV
The status of a user including:
- Online/offline
- Bet exist
- Bet amount and remain balance
- Maximum balance
- Maximum daily winning
Name | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetUserStatusDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
IsSuccess | Success? True: Success False: Failed | Bool | Y |
Username | Username | String (48) | Y |
Balance | Active balance, excluding betted amount. Correct to cent. (Not applicable for seamless wallet) | Decimal | Y |
Online | Online? | Bool | Y |
Betted | Betted? (Not applicable for seamless wallet) | Bool | Y |
BettedAmount | Total betted amount (Not applicable for seamless wallet) | Decimal | Y |
MaxBalance | Upper limit in user's balance to place bet (Not applicable for seamless wallet) | Decimal | Y |
MaxWinning | Daily winning limitation to allow place bet | Decimal | Y |
ErrorMsgId | Error message 0: Success 100: Username error 108: Username length/format incorrect 116: Username does not exist | Byte | Y |
ErrorMsg | Error message detail | String | Y |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?> <GetUserStatusResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <IsSuccess>true</IsSuccess> <Username>DemoUser01</Username> <Balance>115500</Balance> <Online>false</Online> <Betted>false</Betted> <BettedAmount>0</BettedAmount> <MaxBalance>0</MaxBalance> <MaxWinning>0</MaxWinning> </GetUserStatusResponse> |
5.1.4.QueryBetLimit
Query all of the bet limit for specified currency.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "QueryBetLimit" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Currency | Currency: USD Refer to Supported currencies | String (16) | Y |
Gametype | andarbahar - Andar Bahar baccarat – Baccarat blackjack – Blackjack dragontiger - Dragon Tiger pokdeng - Pok Deng roulette - Roulette sicbo - SicBo teenpatti2020 - Teen Patti 20-20 xocdia – Xóc Đĩa To query bet limit for all game types, please use: Gametype="all" | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
BetLimitList | BetLimit lists | XML Structure | Y |
ErrorMsgId | Error message: 0: Success 114: Currency not exist 155: Incorrect/missing game type | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
RuleID | ID of the bet limit | Int64 | Y |
GameType | The game type of return data | Attribute | Y |
Min | Minimum of the limit | Int | Y |
Max | Maximum of the limit | Int | Y |
BetLimit example
1 2 3 4 5 6 7 8 9 10 11 12 |
<BetLimitList GameType="Baccarat"> <BetLimit> <RuleID>936</RuleID> <Min>5</Min> <Max>500</Max> </BetLimit> <BetLimit> <RuleID>937</RuleID> <Min>30</Min> <Max>3000</Max> </BetLimit> </BetLimitList> |
5.1.5.SetAllBetLimit
Set bet limit for individual game type to a user.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "SetAllBetLimit" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
Currency | Currency: USD Refer to Supported currencies | String (16) | Y |
ListSet | ID from QueryBetLimit RuleID list retrieved from QueryBetLimit, Comma separated. Eg. 10108405000150004,10108405000250005,10108402000120005 Example 1: In QueryBetLimit: Currency = THB GameType = baccarat RuleID “10107645000050002” for the bet limit of “5-500” will be returned. Currency = THB GameType = dragontiger RuleID “10207641000110003” for the bet limit of “10-1000” will be returned. In SetAllBetLimit, update the above THB bet limit for both Baccarat and DragonTiger: Currency = THB ListSet = “10107645000050002, 10207641000110003” Example 2: In QueryBetLimit: Currency = VND GameType = baccarat RuleID “10107043000130005” and “10107041000320004” for the bet limit of “30-300,000” and “1,000 – 20,000” will be returned. In SetAllBetLimit, update the above VND bet limit for Baccarat: Currency = VND ListSet = “10107043000130005, 10107041000320004” | String (Max) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
ErrorMsgId | Error message: 0: Success 102: Secret key incorrect 108: Username length/format incorrect 114: Currency not exist 116: Username does not exist 142: Parameter(s) error 157: ListSet error, up to 5 items is acceptable for each game type 158: Duplicate/Invalid bet limit rules occur 190: Function not for trial account | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <SetAllBetLimitResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </SetAllBetLimitResponse> |
5.1.6.GetUserMaxBalance
Return the user’s maximum balance limit.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetUserMaxBalance" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
MaxBalance | Maximum balance | Decimal | Y |
ErrorMsgId | Error message: 0: Success 100: Username error 108: Username length/format incorrect 116: Username does not exist 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <GetUserMaxBalanceResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <MaxBalance>9999999</MaxBalance> </GetUserMaxBalanceResponse> |
5.1.7.SetUserMaxBalance
Set the maximum balance limit to a user.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "SetUserMaxBalance" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
MaxBalance | Maximum balance | Decimal | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
ErrorMsgId | Error message: 0: Success 116: Username does not exist 142: Parameter(s) error 148: MaxBalance not zero or smaller than user balance 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <SetUserMaxBalanceResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </SetUserMaxBalanceResponse> |
5.1.8.SetUserMaxWinning
Set the user’s maximum daily winning. User cannot place bet if his winning exceed this setting.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "SetUserMaxWinning" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
MaxWinning | Maximum daily winning | Decimal | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
ErrorMsgId | Error message: 0: Success 116: Username does not exist 142: Parameter(s) error | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <SetUserMaxWinningResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </SetUserMaxWinningResponse> |
5.1.9.QueryUserBetLimit
Query all of the bet limit for specified user.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "QueryUserBetLimit" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
Gametype | Game type To query bet limit for all game types, use: Gametype="all" | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
BetLimitList | BetLimit lists | XML Structure | Y |
ErrorMsgId | Error message: 0: Success 108: Username length/format incorrect 116: Username does not exist 155: Incorrect/missing game type | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
RuleID | ID of the bet limit | Int64 | Y |
GameType | The game type of return data | Attribute | Y |
Min | Minimum of the limit | Int | Y |
Max | Maximum of the limit | Int | Y |
BetLimit example
1 2 3 4 5 6 7 8 9 10 11 12 |
<BetLimitList GameType="Baccarat"> <BetLimit> <RuleID>936</RuleID> <Min>5</Min> <Max>500</Max> </BetLimit> <BetLimit> <RuleID>937</RuleID> <Min>30</Min> <Max>3000</Max> </BetLimit> </BetLimitList> |
5.2.Login Access
5.2.1.LoginRequest
It is the function to request the login token. If the username doesn’t exist, it will be created automatically.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be “LoginRequest” | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in “yyyyMMddHHmmss” format | DateTime | Y |
Username | Username | String (48) | Y |
CurrencyType | Currency: USD Refer to Supported currencies | String (16) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Token # | Token for Live game | String | Y |
DisplayName * | Internal assigned username | String (52) | Y |
ErrorMsgId | Error message: 0: Success 129: System under maintenance 130: User account is locked (disabled) 133: Create user failed 135: Game access denied | Byte | Y |
ErrorMsg | Error message detail | String | Y |
# If login request failed, there is no Token node in the response.
* All username will be added a suffix @xxx. The DisplayName will be the actual username in our database.
Output
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <LoginRequestResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Token>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</Token> <DisplayName>satest@xxx</DisplayName> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </LoginRequestResponse> |
5.2.2.LoginRequestForFun
Login to the system in Fun mode. The username will be generated automatically.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be “LoginRequestForFun” | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in “yyyyMMddHHmmss” format | DateTime | Y |
Amount | Initial amount, with upper limit of US$100 or equivalent value for other currencies. If the requested amount exceeds the upper limit, the system will automatically adjust to the upper limit. | Decimal | Y |
CurrencyType | Currency: USD Refer to Supported currencies | String (16) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Token# | Token for Live game | String | Y |
DisplayName | Internal assigned username | String (52) | Y |
ErrorMsgId | Error message: 0: Success 129: System under maintenance 135: Game access denied | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="utf-8"?> <LoginRequestTryToPlayResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Token>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</Token> <DisplayName>sa-test999@xxx</DisplayName> </LoginRequestTryToPlayResponse> |
5.2.3.KickUser
Kick user to offline.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "KickUser" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
ErrorMsgId | Error message: 0: Success 104: Service not available 108: Username length/format incorrect 116: Username does not exist 125: Kick user fail | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <KickUserResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </KickUserResponse> |
5.3.Bet Records Query
5.3.1.GetAllBetDetailsDV
This Web service will fetch bet details for the current lobby of the specified date from 12:00 PM to 11:59:59 AM. If no Date input, the current date will be used. The frequency of the call should be made to this API 10 times per 5 minutes otherwise it will throw an error.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetAllBetDetailsDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | N |
Date | Date for details “yyyy-MM-dd” | Date | N |
Name | Description | Type and Limit | Required? |
---|---|---|---|
NumOfRecord | The number of record(s) returned | Int | Y |
BetDetailList | Bet details structure | XML | Y |
ErrorMsgId | Error message: 0: Success 108: Username length/format incorrect 112: API recently called 116: Username does not exist 142: Parameter(s) error | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Name | Description | Type and Limit | Required? | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BetTime | Bet start time | Date Time | Y | ||||||||||||||||
PayoutTime | Payout time | Date Time | Y | ||||||||||||||||
Username | Username | String (48) | Y | ||||||||||||||||
HostID | Host table ID | Int (16) | Y | ||||||||||||||||
Detail | Reserved | String | N | ||||||||||||||||
GameID | Game ID | String (64) | Y | ||||||||||||||||
Round | Game Round | Int | Y | ||||||||||||||||
Set | Game Set | Int | Y | ||||||||||||||||
BetID | Bet ID | Int (64) | Y | ||||||||||||||||
Currency | Currency: USD Refer to Supported currencies | String (16) | Y | ||||||||||||||||
BetAmount | Bet amount | Decimal | Y | ||||||||||||||||
Rolling | Valid bet amount | Decimal | Y | ||||||||||||||||
ResultAmount | Payout | Decimal | Y | ||||||||||||||||
Balance | Balance after this bet (Not applicable for seamless wallet) | Decimal | Y | ||||||||||||||||
GameType | Game type. For details please click here | String | Y | ||||||||||||||||
BetType | Live game: Bet type of different games | Int | Y | ||||||||||||||||
BetSource |
| Int | Y | ||||||||||||||||
TransactionID | Seamless wallet PlaceBet transaction ID. -1 if not using seamless wallet | Int (64) | Y | ||||||||||||||||
GameResult | The result of the game Baccarat Dragon Tiger Sicbo Roulette Pok Deng Andar Bahar Teen Patti 20-20 Blackjack Xóc Đĩa | XML | Y |
Output:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<?xml version="1.0" encoding="UTF-8"?> <GetAllBetDetailsResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NumOfRecord>1</NumOfRecord> <BetDetailList> <BetDetail> <BetTime>2021-03-19T16:11:47.191</BetTime> <PayoutTime>2021-03-19T16:12:28.877</PayoutTime> <Username>DemoUser001</Username> <HostID>123</HostID> <Detail></Detail> <GameID>1234567890123456</GameID> <Round>10</Round> <Set>34</Set> <BetID>1234567890</BetID> <Currency>USD</Currency> <BetAmount>123.45</BetAmount> <Rolling>123.45</Rolling> <Balance>434456.35</Balance> <ResultAmount>246.90</ResultAmount> <GameType>bac</GameType> <BetType>123</BetType> <BetSource>2</BetSource> <TranactionID>2</TranactionID> <GameResult> <BaccaratResult> <PlayerCard1> <Suit>2</Suit> <Rank>12</Rank> </PlayerCard1> <PlayerCard2> <Suit>1</Suit> <Rank>11</Rank> </PlayerCard2> <PlayerCard3> <Suit>3</Suit> <Rank>9</Rank> </PlayerCard3> <BankerCard1> <Suit>3</Suit> <Rank>5</Rank> </BankerCard1> <BankerCard2> <Suit>1</Suit> <Rank>13</Rank> </BankerCard2> <ResultDetail> <BRTie>false</BRTie> <BRPlayerWin>false</BRPlayerWin> <BRBankerWin>true</BRBankerWin> <BRPlayerPair>false</BRPlayerPair> <BRBankerPair>false</BRBankerPair> <BRSLuckySix>false</BRSLuckySix> <BRSSTie>false</BRSSTie> <BRSSPlayerWin>false</BRSSPlayerWin> <BRSSBankerWin>true</BRSSBankerWin> <BRSSPlayerPair>false</BRSSPlayerPair> <BRSSBankerPair>false</BRSSBankerPair> <BRSSSLuckySix>false</BRSSSLuckySix> <BRPlayerNatural>false</BRPlayerNatural> <BRBankerNatural>false</BRBankerNatural> <BRSSPlayerNatural>false</BRSSPlayerNatural> <BRSSBankerNatural>false</BRSSBankerNatural> </ResultDetail> </BaccaratResult> </GameResult> </BetDetail> </BetDetailList> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </GetAllBetDetailsResponse> |
5.3.2.GetAllBetDetailsForTimeIntervalDV
This web service will fetch bet details of a lobby for a time interval maximum 24 hours. The frequency of the call should be made to this API is 10 times per 5 minutes otherwise it will throw an error.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetAllBetDetailsForTimeIntervalDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | N |
FromTime | Date for details “yyyy-MM-dd HH:mm:ss” | Date Time | Y |
ToTime | Date for details “yyyy-MM-dd HH:mm:ss” | Date Time | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
NumOfRecord | The number of record(s) returned | Int | Y |
BetDetailList | Bet details structure | XML | Y |
ErrorMsgId | Error message: 0: Success 108: Username length/format incorrect 111: Query time range out of limitation 112: API recently called 116: Username does not exist 142: Parameter(s) error | Byte | Y |
ErrorMsg | Error message detail | String | Y |
BetDetails is the same as GetAllBetDetailsDV.
5.3.3.GetAllBetDetailsForTransactionID
This web service is used for seamless wallet to fetch the bet records details of a PlaceBet, PlayerWin or PlayerLost transaction ID. Example:
1. use PlaceBet’s transaction ID will return the related transaction ID’s bet details
2. use PlayerWin or PlayerLost transaction ID will return whole game round result of the related player.
Name | Description | Type and Limit | Required? |
---|---|---|---|
method | must be "GetAllBetDetailsForTransactionID" | String (32) | Y |
Key | secret key | String (32) | Y |
Time | current time in "yyyyMMddHHmmss" format | DateTime | Y |
TransactionID | Transaction ID of a PlayerWin or PlayerLost | String (16) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
NumOfRecord | The number of record(s) returned | Int | Y |
Result | The result of the game Baccarat Dragon Tiger Roulette Sicbo Pok Deng Andar Bahar Teen Patti 20-20 Blackjack Xóc Đĩa | XML | Y |
BetDetailList | Bet details structure | XML | Y |
ErrorMsgId | Error message 0: Success 106: Server not ready 152: Transaction ID not found 160: This API is for seamless wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Name | Description | Type and Limit | Required? | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BetTime | Bet start time | Date Time | Y | ||||||||||||||||
PayoutTime | Payout time | Date Time | Y | ||||||||||||||||
Username | Username | String (48) | Y | ||||||||||||||||
HostID | Host table ID | Int16 | Y | ||||||||||||||||
GameID | Game ID | String | Y | ||||||||||||||||
Round | Game Round | Int | Y | ||||||||||||||||
Set | Game Set | Int | Y | ||||||||||||||||
BetID | Bet ID | Int64 | Y | ||||||||||||||||
Currency | Currency: USD Refer to Supported currencies | String (16) | Y | ||||||||||||||||
BetAmount | Bet amount | Decimal | Y | ||||||||||||||||
Rolling | Valid bet amount | Decimal | Y | ||||||||||||||||
ResultAmount | Payout | Decimal | Y | ||||||||||||||||
Balance | Balance after this bet (Not applicable for seamless wallet) | Decimal | Y | ||||||||||||||||
GameType | Game type. For details please click here | String | Y | ||||||||||||||||
BetType | Live game: Bet type of different games | Int | Y | ||||||||||||||||
BetSource |
| Int | Y | ||||||||||||||||
Detail | Reserved | String | N | ||||||||||||||||
TransactionID | Seamless wallet PlaceBet transaction ID. -1 if not using seamless wallet | Int64 | Y |
Output:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
<?xml version="1.0" encoding="utf-8"?> <GetAllBetDetailsForTransactionIDResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <NumOfRecord>1</NumOfRecord> <Result> <BaccaratResult> <PlayerCard1> <Suit>2</Suit> <Rank>2</Rank> </PlayerCard1> <PlayerCard2> <Suit>4</Suit> <Rank>3</Rank> </PlayerCard2> <PlayerCard3> <Suit>4</Suit> <Rank>5</Rank> </PlayerCard3> <BankerCard1> <Suit>4</Suit> <Rank>1</Rank> </BankerCard1> <BankerCard2> <Suit>1</Suit> <Rank>13</Rank> </BankerCard2> <BankerCard3> <Suit>3</Suit> <Rank>3</Rank> </BankerCard3> <ResultDetail> <BRTie>false</BRTie> <BRPlayerWin>false</BRPlayerWin> <BRBankerWin>true</BRBankerWin> <BRPlayerPair>false</BRPlayerPair> <BRBankerPair>false</BRBankerPair> <BRSLuckySix>false</BRSLuckySix> <BRSSTie>false</BRSSTie> <BRSSPlayerWin>false</BRSSPlayerWin> <BRSSBankerWin>true</BRSSBankerWin> <BRSSPlayerPair>false</BRSSPlayerPair> <BRSSBankerPair>false</BRSSBankerPair> <BRSSSLuckySix>false</BRSSSLuckySix> <BRPlayerNatural>false</BRPlayerNatural> <BRBankerNatural>false</BRBankerNatural> <BRSSPlayerNatural>false</BRSSPlayerNatural> <BRSSBankerNatural>false</BRSSBankerNatural> </ResultDetail> </BaccaratResult> </Result> <BetDetailList> <BetDetail> <BetTime>2021-05-25T10:33:47.897</BetTime> <PayoutTime>2021-05-25T10:34:23.687</PayoutTime> <Username>satest</Username> <HostID>834</HostID> <GameID>25682834104320</GameID> <Round>42</Round> <Set>21</Set> <BetID>15704772288</BetID> <Currency>USD</Currency> <BetAmount>15</BetAmount> <Rolling>15</Rolling> <ResultAmount>15</ResultAmount> <Balance>40</Balance> <GameType>bac</GameType> <BetType>27</BetType> <BetSource>8792</BetSource> <Detail> <TransactionID>5318767948</TransactionID> </Detail> </BetDetail> <BetDetail> <BetTime>2021-05-25T10:33:56.71</BetTime> <PayoutTime>2021-05-25T10:34:23.687</PayoutTime> <Username>satest</Username> <HostID>834</HostID> <GameID>25682834104320</GameID> <Round>42</Round> <Set>21</Set> <BetID>15704773687</BetID> <Currency>USD</Currency> <BetAmount>10</BetAmount> <Rolling>10</Rolling> <ResultAmount>10</ResultAmount> <Balance>50</Balance> <GameType>bac</GameType> <BetType>27</BetType> <BetSource>8792</BetSource> <Detail> <TransactionID>5318768770</TransactionID> </Detail> </BetDetail> </BetDetailList> </GetAllBetDetailsForTransactionIDResponse> |
5.3.4.GetUserBetItemDV
Retrieve a list of bet record of a user within 7 days
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetUserBetItemDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
FromTime | Query start time: “yyyy-MM-dd” or “yyyy-MM-dd HH:mm:ss” | DateTime | Y |
ToTime | Query end time: “yyyy-MM-dd” or “yyyy-MM-dd HH:mm:ss” | DateTime | Y |
Offset | Query offset id. First query input 0. For the next query, using the offset from result | Int64 | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
FromTime | Query start time | DateTime | Y |
ToTime | Query end time | DateTime | Y |
Offset | Offset | Int64 | Y |
More | True: data still existing for query, using the Offset to start again. False: all data has been send | bool | Y |
ItemCount | Number of item queried | Int | Y |
UserBetItemList | List of bet item details UserBetItem | XML | Y |
ErrorMsgId | Error message: 0: Success 111: Query time range out of limitation 116: Username does not exist | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
<?xml version="1.0" encoding="utf-8"?> <GetUserBetItemResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Username>DemoUser001</Username> <FromTime>2021-03-19T00:00:00</FromTime> <ToTime>2021-03-20T00:00:00</ToTime> <Offset>0</Offset> <More>false</More> <ItemCount>2</ItemCount> <UserBetItemList> <UserBetItem> <BetID>1</BetID> <BetTime>2021-03-19T16:11:47.19</BetTime> <PayoutTime>2021-03-19T16:12:28.877</PayoutTime> <GameID>135450624</GameID> <HostID>901</HostID> <HostName>Baccarat D01</HostName> <GameType>bac</GameType> <Set>3</Set> <Round>48</Round> <BetType>2</BetType> <BetAmount>100</BetAmount> <Rolling>100</Rolling> <Detail> <GameResult> <BaccaratResult> <PlayerCard1> <Suit>1</Suit> <Rank>8</Rank> </PlayerCard1> <PlayerCard2> <Suit>3</Suit> <Rank>3</Rank> </PlayerCard2> <PlayerCard3> <Suit>2</Suit> <Rank>7</Rank> </PlayerCard3> <BankerCard1> <Suit>1</Suit> <Rank>12</Rank> </BankerCard1> <BankerCard2> <Suit>2</Suit> <Rank>4</Rank> </BankerCard2> <BankerCard3> <Suit>4</Suit> <Rank>11</Rank> </BankerCard3> <ResultDetail> <BRTie>false</BRTie> <BRPlayerWin>false</BRPlayerWin> <BRBankerWin>true</BRBankerWin> <BRPlayerPair>false</BRPlayerPair> <BRBankerPair>false</BRBankerPair> <BRSLuckySix>false</BRSLuckySix> <BRSSTie>false</BRSSTie> <BRSSPlayerWin>false</BRSSPlayerWin> <BRSSBankerWin>true</BRSSBankerWin> <BRSSPlayerPair>false</BRSSPlayerPair> <BRSSBankerPair>false</BRSSBankerPair> <BRSSSLuckySix>false</BRSSSLuckySix> <BRPlayerNatural>false</BRPlayerNatural> <BRBankerNatural>false</BRBankerNatural> <BRSSPlayerNatural>false</BRSSPlayerNatural> <BRSSBankerNatural>false</BRSSBankerNatural> </ResultDetail> </BaccaratResult> </GameResult> <ResultAmount>-100</ResultAmount> <Balance>0</Balance> </Detail></UserBetItem> <UserBetItem> <BetID>29221310</BetID> <BetTime>2021-03-19T16:12:55.543</BetTime> <PayoutTime>2021-03-19T16:13:31.443</PayoutTime> <GameID>23547430039552</GameID> <HostID>901</HostID> <HostName>Baccarat D01</HostName> <GameType>bac</GameType> <Set>3</Set> <Round>49</Round> <BetType>1</BetType> <BetAmount>100</BetAmount> <Rolling>0</Rolling> <Detail> <GameResult> <BaccaratResult> <PlayerCard1> <Suit>1</Suit> <Rank>10</Rank> </PlayerCard1> <PlayerCard2> <Suit>3</Suit> <Rank>8</Rank> </PlayerCard2> <BankerCard1> <Suit>1</Suit> <Rank>12</Rank> </BankerCard1> <BankerCard2> <suit>2</suit> <rank>7</rank> </BankerCard2> <ResultDetail> <BRTie>false</BRTie> <BRPlayerWin>false</BRPlayerWin> <BRBankerWin>true</BRBankerWin> <BRPlayerPair>false</BRPlayerPair> <BRBankerPair>false</BRBankerPair> <BRSLuckySix>false</BRSLuckySix> <BRSSTie>false</BRSSTie> <BRSSPlayerWin>false</BRSSPlayerWin> <BRSSBankerWin>true</BRSSBankerWin> <BRSSPlayerPair>false</BRSSPlayerPair> <BRSSBankerPair>false</BRSSBankerPair> <BRSSSLuckySix>false</BRSSSLuckySix> <BRPlayerNatural>false</BRPlayerNatural> <BRBankerNatural>false</BRBankerNatural> <BRSSPlayerNatural>false</BRSSPlayerNatural> <BRSSBankerNatural>false</BRSSBankerNatural> </ResultDetail> </BaccaratResult> </GameResult> <ResultAmount>100</ResultAmount> <Balance>26171.38</Balance> </Detail></UserBetItem> </UserBetItemList> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </GetUserBetItemResponse> |
5.3.5.GetUserBetAmountDV
This Web service will fetch the live game stake amount for a lobby.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetUserBetAmountDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | N |
StartDate | Query start date/time: “yyyy-MM-dd” (default time 00:00:00) or “yyyy-MM-dd HH:mm:ss” | DateTime | N |
TimeRange | Range in hour from 0 to 23 (default 0 = 24 hours) | Int | N |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
StakeAmount | Sum of bet amount for all games | Decimal | Y |
ErrorMsgId | Error message: 0: Success 108: Username length/format incorrect 116: Username does not exist 142: Parameter(s) error | Byte | Y |
ErrorMsg | Error message detail | String | Y |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?> <GetUserBetAmountResponse> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <BetAmountDetailList> <BetAmountDetails> <Username>user001</Username> <StakeAmount>1105.45</StakeAmount> </BetAmountDetails> </BetAmountDetailList> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> </GetUserBetAmountResponse> |
5.3.6.GetUserWinLost
This API function is to get a user’s win/loss summary for a period of time with maximum of 31 days.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetUserWinLost" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
FromTime | Date for details “yyyy-MM-dd HH:mm:ss” | DateTime | Y |
ToTime | Date for details “yyyy-MM-dd HH:mm:ss” | DateTime | Y |
Type | 0 - includes win and loss 1 - only includes win 2 - only includes loss | Int | N |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Winlost | Win or loss summary value | Decimal | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready 108: Username length/format incorrect 111: Query time range out of limitation 116: Username does not exist 144: Query type invalid | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <GetUserWinLostResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Winlost>-230.65</Winlost> </GetUserWinLostResponse> |
5.3.7.GetTransactionDetails
This web service will fetch the transaction details of a lobby for a time interval maximum 31 days. You may specify an username to query transaction details of a certain user.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetTransactionDetails" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | N |
FromTime | Date for details “yyyy-MM-dd HH:mm:ss” | DateTime | Y |
ToTime | Date for details “yyyy-MM-dd HH:mm:ss” | DateTime | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
TransactionDetails | Transaction details structure | XML | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready 111: Query time range out of limitation 116: Username does not exist | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
CurrencyName | Currency: USD Refer to Supported currencies | String (16) | Y |
Count | Number of transactions | Int | Y |
Winlose | Win/lose | Decimal | Y |
TotalBet | Total bet amount | Decimal | Y |
TotalRolling | Total valid bet amount | Decimal | Y |
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 |
<?xml version="1.0" encoding="utf-8"?> <GetTransactionDetailsResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Details> <TransactionDetails> <CurrencyName>EUR</CurrencyName> <Count>9</Count> <Winlose>-40</Winlose> <TotalBet>275</TotalBet> <TotalRolling>75</TotalRolling> </TransactionDetails> <TransactionDetails> <CurrencyName>THB</CurrencyName> <Count>1</Count> <Winlose>-20</Winlose> <TotalBet>20</TotalBet> <TotalRolling>20</TotalRolling> </TransactionDetails> <TransactionDetails> <CurrencyName>VND</CurrencyName> <Count>1</Count> <Winlose>-20</Winlose> <TotalBet>20</TotalBet> <TotalRolling>20</TotalRolling> </TransactionDetails> </Details> </GetTransactionDetailsResponse> |
5.3.8.GetActiveHostList
Check the list of active hosts.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetActiveHostList" | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Key | Secret key | String (32) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
HostList | Host list | XML Structure | Y |
ErrorMsgId | Error message: 0: Success | Byte | Y |
ErrorMsg | Error message details | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
HostID | Host ID | Int(16) | Y |
GameType | Game type | String | Y |
HostName | Host name | String | Y |
Enabled | true – Enabled in Backoffice by operator false – Disabled in Backoffice by operator | Bool | Y |
GameStatus | 0 - Table is opened 1 - Table is closed | Int | Y |
HostList example
1 2 3 4 5 6 7 8 9 |
<HostList> <Host> <HostID>901</HostID> <GameType>bac</GameType> <HostName>Baccarat D01</HostName> <Enabled>true</Enabled> <GameStatus>0</GameStatus> </Host> </HostList> |
5.3.9.GetCancelledBetDetails
This web service is used to fetch the cancelled bet records. If date range is not input or is not correct, previous 2 months + current month data will be returned.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetCancelledBetDetails" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | N |
GameID | Game ID | String (64) | N |
FromTime | Date for details “yyyy-MM-dd HH:mm:ss” | Date Time | N |
ToTime | Date for details “yyyy-MM-dd HH:mm:ss” | Date Time | N |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | The input username | String (48) | Y |
GameID | The input GameID | String (64) | Y |
FromTime | The input FromTime | DateTime | Y |
ToTime | The input ToTime | DateTime | Y |
NumOfRecord | The number of record(s) returned | Int | Y |
CancelledBetDetailList | CancelledBetDetail structure | XML | Y |
ErrorMsgId | Error message ID | Byte | Y |
ErrorMsg | Error message description | String | Y |
Name | Description | Type and Limit | Required? | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
StartTime | Game start time | DateTime | Y | ||||||||||||||||
CancelledTime | Game cancelled time | DateTime | Y | ||||||||||||||||
GameID | Game ID | String | Y | ||||||||||||||||
HostID | Host ID | Int16 | Y | ||||||||||||||||
GameType | Game type | String | Y | ||||||||||||||||
Round | Game Round | Int | Y | ||||||||||||||||
Set | Game Set | Int | Y | ||||||||||||||||
BetTime | Bet time | DateTime | Y | ||||||||||||||||
Username | Username | String (48) | Y | ||||||||||||||||
TransactionID | Seamless wallet PlaceBet transaction ID. -1 if not using seamless wallet | Int64 | Y | ||||||||||||||||
BetID | Bet ID | Int64 | Y | ||||||||||||||||
Currency | Currency | String (16) | Y | ||||||||||||||||
BetAmount | Bet amount | Decimal | Y | ||||||||||||||||
BetType | Bet type | Int | Y | ||||||||||||||||
BetSource |
| Int | Y |
Output:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?xml version="1.0" encoding="utf-8"?> <GetCancelledBetDetailsResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <GameID /> <Username /> <FromTime>2023-09-01 00:00:00</FromTime> <ToTime>2023-11-13 14:31:07</ToTime> <NumOfRecord>2</NumOfRecord> <CancelledBetDetailList> <CancelledBetDetail> <StartTime>2023-11-13T11:33:42.86</StartTime> <CancelledTime>2023-11-13T11:34:03.313</CancelledTime> <GameID>674714722304</GameID> <HostID>538</HostID> <GameType>teenpatti2020</GameType> <Round>54</Round> <Set>0</Set> <BetTime>2023-11-13T11:33:51.61</BetTime> <Username>testuser</Username> <TransactionID>-1</TransactionID> <BetID>30892650</BetID> <Currency>USD</Currency> <BetAmount>1</BetAmount> <BetType>1</BetType> <BetSource>2640</BetSource> </CancelledBetDetail> <CancelledBetDetail> <StartTime>2023-11-13T11:33:42.86</StartTime> <CancelledTime>2023-11-13T11:34:03.313</CancelledTime> <GameID>674714722304</GameID> <HostID>538</HostID> <GameType>teenpatti2020</GameType> <Round>54</Round> <Set>0</Set> <BetTime>2023-11-13T11:33:55.33</BetTime> <Username>testuser</Username> <TransactionID>-1</TransactionID> <BetID>30892651</BetID> <Currency>USD</Currency> <BetAmount>1</BetAmount> <BetType>2</BetType> <BetSource>2640</BetSource> </CancelledBetDetail> </CancelledBetDetailList> </GetCancelledBetDetailsResponse> |
5.3.10.GetGameErrorDetail
This web service is used to fetch the game error bet records. If date range is not input or is not correct, previous 2 months + current month data will be returned.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "GetGameErrorDetail" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | N |
GameID | Game ID | String (64) | N |
HostList | Host ID If more than one, please use “,” as a delimiter | List | N |
FromTime | Date for details “yyyy-MM-dd HH:mm:ss” | Date Time | N |
ToTime | Date for details “yyyy-MM-dd HH:mm:ss” | Date Time | N |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | The input username | String (48) | Y |
GameID | The input GameID | String (64) | Y |
HostList | The input HostList | List | Y |
FromTime | The input FromTime | DateTime | Y |
ToTime | The input ToTime | DateTime | Y |
NumOfRecord | The number of game error(s) returned | Int | Y |
GameErrorResultList | GameErrorResult structure | XML | Y |
ErrorMsgId | Error message ID | Byte | Y |
ErrorMsg | Error message description | String | Y |
GameID | Game ID | String | Y |
---|---|---|---|
Round | Game Round | Int | Y |
Set | Game Set | Int | Y |
PayoutTime | Payout time | DateTime | Y |
HostID | Host ID | Int16 | Y |
GameType | Game type | String | Y |
IncorrectResult | Game result (with ResultDetail) | XML | Y |
CorrectResult | Game result (with ResultDetail) | XML | Y |
ImpactedTransactionList | Impacted transaction list | XML | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Count | Number of transactions | Int | Y |
GETransactionDetailList | GETransactionDetail structure | XML | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
BetTime | Bet time | DateTime | Y |
PayoutTime | Payout time | DateTime | Y |
AdjustmentTime | Game error adjustment time | DateTime | Y |
Username | Username | String (48) | Y |
BetID | Bet ID | Int64 | Y |
Currency | Currency | String (16) | Y |
BetType | Bet type | Int | Y |
BetAmount | Bet amount | Decimal | Y |
OriginalWinlose | Original Win/lose amount, before adjustment | Decimal | Y |
AdjustedWinlose | Adjusted Win/lose amount, after adjustment | Decimal | Y |
Output:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<?xml version="1.0" encoding="utf-8"?> <GetGameErrorDetailResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Username /> <GameID /> <HostList /> <FromTime>2023-11-01 00:00:00</FromTime> <ToTime>2024-01-08 16:04:30</ToTime> <NumOfGame>1</NumOfGame> <GameErrorResultList> <GameErrorResult> <GameID>2554903736320</GameID> <Set>0</Set> <Round>91</Round> <PayoutTime>2023-12-07 13:08:28</PayoutTime> <HostID>531</HostID> <GameType>xocdia</GameType> <IncorrectResult> <XocdiaResult> <NoOfRed>3</NoOfRed> </XocdiaResult> </IncorrectResult> <CorrectResult> <XocdiaResult> <NoOfRed>3</NoOfRed> </XocdiaResult> </CorrectResult> <ImpactedTransactionList> <Count>1</Count> <GETransactionDetailList> <GETransactionDetail> <BetTime>2023-12-07 13:08:04</BetTime> <PayoutTime>2023-12-07 13:08:28</PayoutTime> <AdjustmentTime>2023-12-07 18:31:16</AdjustmentTime> <Username>testuser@sa</Username> <BetID>167906573</BetID> <Currency>USD</Currency> <BetType>2</BetType> <BetAmount>5000.00</BetAmount> <OriginalWinlose>-5000.00</OriginalWinlose> <AdjustedWinlose>0.00</AdjustedWinlose> </GETransactionDetail> </GETransactionDetailList> </ImpactedTransactionList> </GameErrorResult> </GameErrorResultList> </GetGameErrorDetailResponse> |
5.4.Transfer Wallet
The Transfer wallet API includes a transfer in, out and order status checking functions.
Throughout those functions, there is an OrderID inside each of them. In case a transfer was failed due to network problem and become unsuccessful, be sure to use the same OrderID to initiate another try. We guarantee the same OrderID will not be processed twice. Using a new OrderID for the same transfer may cause a duplicate transfer. Even you have checked the OrderID not existing by using CheckOrderID, you should still use the same OrderID.
5.4.1.DebitBalanceDV
Transfer from the user’s balance.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "DebitBalanceDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
OrderId | Order ID: OUT+yyyyMMddHHmmss+Username e.g. “OUT20131129130345peter1235” | String (64) | Y |
DebitAmount | Debit amount. Maximum two decimal only. | Decimal | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
Balance | Remained active balance | Decimal | Y |
DebitAmount | Debited amount | Decimal | Y |
OrderId | Order ID | String (64) | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready. Try again later. 108: Username length/format incorrect 116: Username does not exist 120: Amount must be larger than zero 121: Not enough points to credit/debit 122: Order ID already exists 124: Database error 127: Invalid order ID format 142: Error Parameter 145: Parameter decimal point greater than 2 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="utf-8"?> <DebitBalanceResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Username>sauser</Username> <Balance>10000</Balance> <DebitAmount>1000</DebitAmount> <OrderId>OUT20000208099004sauser</OrderId> </DebitBalanceResponse> |
5.4.2.DebitAllBalanceDV
Transfer all amount from the user’s balance.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "DebitAllBalanceDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
OrderId | Order ID: OUT+yyyyMMddHHmmss+Username e.g. “OUT20131129130345peter1235” | String (64) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
DebitAmount | Debited amount | Decimal | Y |
OrderId | Order ID | String (64) | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready. Try again later. 116: Username does not exist 122: Order ID already exists 124: Database error 127: Invalid order ID format 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <DebitAllBalanceResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Username>sauser</Username> <DebitAmount>10000</DebitAmount> <OrderId>OUT20000208099002sauser</OrderId> </DebitAllBalanceResponse> |
5.4.3.CreditBalanceDV
Transfer fund to user’s balance.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "CreditBalanceDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
Username | Username | String (48) | Y |
OrderId | Order ID: IN+yyyyMMddHHmmss+Username e.g. “IN20131129130345peter1235” | String (64) | Y |
CreditAmount | Credit amount | Decimal | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
Username | Username | String (48) | Y |
Balance | Balance after credit | Decimal | Y |
CreditAmount | Credited amount | Decimal | Y |
OrderId | Order ID | String (64) | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready. Try again later. 108: Username length/format incorrect 116: Username does not exist 120: Amount must be larger than zero 121: Not enough points to credit/debit 122: Order ID already exists 124: Database error 127: Invalid order ID format 142: Error Parameter 145: Parameter decimal point greater than 2 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="utf-8"?> <CreditBalanceResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <Username>sauser</Username> <Balance>10000</Balance> <CreditAmount>10000</CreditAmount> <OrderId>IN2000208099001sauser</OrderId> </CreditBalanceResponse> |
5.4.4.CheckOrderId
Check the OrderId that generated in DebitBalanceDV/DebitAllBalanceDV/CreditBalanceDV is existing or not in our system.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "CheckOrderId" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
OrderId | The OrderId used in
| String (64) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
isExist | The OrderId exist or not
| String | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready. Try again later. 124: Database error 127: Invalid order ID format 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Output
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <CheckOrderIdResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <isExist>true</isExist> </CheckOrderIdResponse> |
5.4.5.CheckOrderDetailsDV
Check the OrderId details of fund transfer orders (deposit & withdrawal)
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "CheckOrderDetailsDV" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
OrderId | The OrderId used in
| String (64) | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
isExist | The OrderId exist or not
If true, the Date, Type, Currency, Amount, PreviousBalance and Balance parameter will be returned | String | Y |
ErrorMsgId | Error message: 0: Success 106: Server not ready. Try again later. 124: Database error 127: Invalid order ID format 159: This API is for transfer wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Date | Transaction time | DateTime | N |
Type |
| Byte | N |
Currency | Currency: USD Refer to Supported currencies | String (16) | N |
Amount | Transfer amount (withdraw or deposit) (decimal format and max. 2 decimal places) | Decimal | N |
PreviousBalance | Amount before adjustment (decimal format and max. 2 decimal places) (Not applicable for seamless wallet) | Decimal | N |
Balance | Amount after adjustment (decimal format and max. 2 decimal places) (Not applicable for seamless wallet) | Decimal | N |
Output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="utf-8"?> <CheckOrderDetailsResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <isExist>true</isExist> <Date>2001-03-08T12:03:30.94</Date> <Type>0</Type> <Currency>THB</Currency> <Amount>100000</Amount> <PreviousBalance>1000000</PreviousBalance> <Balance>1100000</Balance> </CheckOrderDetailsResponse> |
5.5.Seamless Wallet
5.5.1.ResendTransaction
For PlayerWin, PlayerLost & PlaceBetCancel request, SA will keep re-sending it until receiving proper response. If SA couldn’t receive proper response after 2 hours, SA will consider it as failed and move it to unsuccessful transaction list.
This Web service can be used for re-sending the requests under unsuccessful transaction list by gameid. The frequency of the call should be made to this API 1 per 5 minutes otherwise it will throw an error.
ParametersName | Description | Type and Limit | Required? |
---|---|---|---|
method | Must be "ResendTransaction" | String (32) | Y |
Key | Secret key | String (32) | Y |
Time | Current time in "yyyyMMddHHmmss" format | DateTime | Y |
GameID | Game ID | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
TransactionDetailList | Transaction ID details structure | XML | Y |
ErrorMsgId | Error message: 0: Success 142: Parameter(s) error 160: This API is for seamless wallet | Byte | Y |
ErrorMsg | Error message detail | String | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
ID | Seamless wallet transaction ID. | Int64 | Y |
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?> <ResendTransactionResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ErrorMsgId>0</ErrorMsgId> <ErrorMsg>Success</ErrorMsg> <TransactionDetailList> <TransactionDetail> <ID>1567164744</ID> </TransactionDetail> <TransactionDetail> <ID>1567164826</ID> </TransactionDetail> </TransactionDetailList> </ResendTransactionResponse> |
6.Seamless Wallet Integration
6.1.Introduction
This section is to illustrate the detail of implementing seamless wallet in external partner system.
SA Gaming platform provides “Test Plan” to assist operators in integration. Please contact our CS for more information.
Important: While probably obvious, it’s worth stating that when Seamless Wallet is in use, the CreditBalanceDV/DebitBalanceDV/DebitAllBalanceDV API should not be used to modify a player’s balance.
6.2.Workflow
Basically the partner system have to provide a set of API functions for our system to call:
- GetUserBalance
- Fund Transfer
GetUserBalance will be called when the user login to our platform or user click refresh balance in the web client.
Fund Transfer function includes four types of transfer:
- PlaceBet
- It is sent to the partner system when the user going to place a bet. The function will be timed out after 3 seconds and PlaceBetCancel will be sent.
- PlayerWin
- When a bet placed before is winning (bet amount + result amount > 0), the total amount (including stakes) will send to partner system.
- PlayerLost
- When a bet placed before is losing, this request will be sent to the partner system. Although it is no amount adjustment, it is still worth to let partner system to update the state of an open transaction.
- PlaceBetCancel
- PlaceBetCancel will only be sent when previous PlaceBet is failed due to timeout or partner system error. Partner system should refund the user if the transaction has been done in the partner system side.
For PlayerWin, PlayerLost & PlaceBetCancel request, SA will keep re-sending it until receiving proper response. If SA couldn’t receive proper response after 2 hours, SA will consider it as failed and move it to unsuccessful transaction list.
For re-sending the requests under unsuccessful transaction list, operator can either visit back office or using API 5.5.1 ResendTransaction.
General Case:
- Received GetUserBalance request: No balance adjustment is required, return error=0 with user’s current balance.
- Received PlaceBet request: Deduct the bet amount, return us error=0 with user’s current balance.
- Received PlayerWin request: Credit balance to user, return us error=0 with user’s current balance.
- Received PlayerLost request: No balance adjustment is required, return us error=0 with user’s current balance.
- Received PlaceBetCancel request: Refund the corresponding PlaceBet bet amount to user, return us error=0 with user’s current balance.
**All above Fund Transfer functions provide a unique transaction ID and partner system should only process once and only once, but must always respond.
Operator should provide these five individual aspx, php, etc. to allow SA Gaming platform to call:
E.g.:
- /GetUserBalance.aspx
- /PlaceBet.aspx
- /PlayerWin.aspx
- /PlayerLost.aspx
- /PlaceBetCancel.aspx
** Operator can only use ONE type of extension, no multiple extension is allowed.
6.3.Seamless Wallet Protocol
SA Gaming platform will use HTTP/HTTPS POST request to communicate with the external wallet. All of the parameters will be encrypted and pass as a text value.
The following is an example of a request string that SA Gaming platform sends to external wallet before encryption:
1 |
username=satest¤cy=EUR |
6.3.1.Encryption procedures
We will use DES CBC encryption. The following are the example of DES Encrypt/Decrypt function:
ASP.Net version
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
protected byte[] EncryptKey = ASCIIEncoding.ASCII.GetBytes("ask_us_for_key"); public string DESEncrypt(string inString) { MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, new DESCryptoServiceProvider().CreateEncryptor(EncryptKey, EncryptKey), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cs); sw.Write(inString); sw.Flush(); cs.FlushFinalBlock(); sw.Flush(); return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); } public string DESDecrypt(string inString) { try { return new StreamReader(new CryptoStream(new MemoryStream( Convert.FromBase64String(inString)), new DESCryptoServiceProvider().CreateDecryptor(EncryptKey, EncryptKey), CryptoStreamMode.Read)).ReadToEnd(); } catch { } return ""; } |
PHP version
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php class DES { var $key; var $iv; function __construct( $key, $iv=0 ) { $this->key = $key; if( $iv == 0 ) { $this->iv = $key; } else { $this->iv = $iv; } } function encrypt($str) { return base64_encode( openssl_encrypt($str, 'DES-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv ) ); } function decrypt($str) { $str = openssl_decrypt(base64_decode($str), 'DES-CBC', $this->key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $this->iv); return rtrim($str, "x01..x1F"); } } ?> |
6.3.2.POST
After encrypted the request string, we will POST the encrypted string with urlencoded as plain text:
1 2 3 4 |
POST / HTTP/1.0 Content-Type: text/plain MDQGx7yYdmaqv8cOcA9dc4fDJocHtaTJnmz7TM4fNvE%3d |
Partner system have to urldecode and decrypt the string by the provided key and perform the requested function.
6.3.3.Response data
Partner system should respond the request in XML format:
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <RequestResponse> <username>satest</username> <currency>EUR</currency> <amount>1532.36</amount> <error>0</error> </RequestResponse> |
6.4.GetUserBalance
This request is sent to the partner system to retrieve the balance of a user.
Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD/EUR. Except mXBT | String (16) | Y |
E.g.
1 |
username=satest&currency=EUR |
Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD/EUR. Except mXBT | String (16) | Y |
amount | Decimal format and max. 2 decimal places | Decimal | Y |
error | Error code | Int | Y |
6.5.Fund Transfer
SA Gaming platform makes different fund transfer request to partner system to modify the balance of the player, either to withdraw funds for a bet, or to deposit funds for a win.
6.5.1.PlaceBet
When a player makes a bet in a game, SA Gaming platform will send this request to partner system. This request must be responded within 3 seconds, otherwise it is defined as timeout and PlaceBetCancel will be sent to cancel/refund the unsuccessful bet.
Please note: Bets on Pok Deng Player 1 to Player 5 will withhold 2 times of the bet amount.
Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD | String (16) | Y |
amount | Amount to bet (decimal format and max. 2 decimal places) | Decimal | Y |
txnid | A unique id for all fund transfer | String (16) | Y |
timestamp | Timestamp in yyyy-MM-dd HH:mm:ss.fff (GMT +8) E.g. 2019-10-22 13:34:45.456 | DateTime | Y |
ip | IP of the user | String | Y |
gametype | Game type | String | Y |
platform | 0 - desktop 1 - mobile | Byte | Y |
hostid | Host ID, please refer to Section 10. | Int | Y |
gameid | Game ID | String | Y |
betdetails | Bet details array type - Bet type amount - Bet amount | JSON | Y |
E.g. :
username=satest¤cy=EUR&amount=200.00&txnid=312355&gametype=bac&platform=0×tamp=2021-03-19 16:11:36.344&gameid=23547362930688&hostid=901&ip=121.122.123.124&betdetails={“details”:[{“type”:2,”amount”:100},{“type”:3,”amount”:100}]}
Response parameters:Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD. Except mXBT | String (16) | Y |
amount | Amount after adjustment (decimal format and max. 2 decimal places) | Decimal | Y |
error | Error code | Int | Y |
6.5.2.PlayerWin
When a game completed and the player win (even bet return when result is Tie in Baccarat) PlayerWin will send to partner system to adjust the balance of the player. This request will keep trying if partner system no response or respond error.
Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD | String (16) | Y |
amount | Amount to add back (decimal format and max. 2 decimal places) | Decimal | Y |
rolling | Valid bet amount | Decimal | Y |
txnid | A unique id for all fund transfer | String (16) | Y |
timestamp | Timestamp in yyyy-MM-dd HH:mm:ss.fff (GMT +8) E.g. 2019-10-22 13:34:45.456 | DateTime | Y |
gametype | Game type | String | Y |
Payouttime | Time of the payout | DateTime | Y |
hostid | Host ID, please refer to Section 10. | Int | Y |
gameid | Game ID | String | Y |
retry | 1st send: retry=0 2nd send: retry=1 | Int | Y |
payoutdetails | BetList - List of bets with details | Structure | Y |
Name | Description | Type and Limit | Required? |
---|---|---|---|
betid | Bet ID | Int64 | Y |
bettype | Bet type | Int | Y |
betamount | Bet amount | Decimal | Y |
resultamount | Payout | Decimal | Y |
txnid | A unique ID for all fund transfer | String (16) | Y |
betsource | Bet source | Int | Y |
rolling | Valid bet amount | Decimal | Y |
E.g. :
username=demo888¤cy=USD&amount=19.50&txnid=1748485&gametype=bac&Payouttime=2023-10-12 12:41:33×tamp=2023-10-12 12:42:01.024&rolling=19.50&gameid=38495191461888&hostid=871&retry=0&payoutdetails={“betlist”:[{“betid”:30862073,”bettype”:2,”betamount”:10,”resultamount”:9.5,”txnid”:1748483,”betsource”:2640,”rolling”:9.5},{“betid”:30862074,”bettype”:4,”betamount”:10,”resultamount”:-10,”txnid”:1748484,”betsource”:2640,”rolling”:10}]}
Response parameters:Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD. Except mXBT | String (16) | Y |
amount | Amount after adjustment (decimal format and max. 2 decimal places) | Decimal | Y |
error | Error code | Int | Y |
6.5.3.PlayerLost
When a game completed and the player lost. (no winning amount,) PlayerLost will be sent to the partner system. Since it is a loss so there is no amount parameter in the request. This request will keep trying if the partner system no response or responding error.
Parameters:Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD | String (3) | Y |
rolling | Valid bet amount | Decimal | Y |
txnid | A unique id for all fund transfer | String (16) | Y |
timestamp | Timestamp in yyyy-MM-dd HH:mm:ss.fff (GMT +8) E.g. 2019-10-22 13:34:45.456 | DateTime | Y |
gametype | Game type | String | Y |
Payouttime | Time of the payout | DateTime | Y |
hostid | Host ID, please refer to Section 10. | Int | Y |
gameid | Game ID | String | Y |
retry | 1st send: retry=0 2nd send: retry=1 | Int | Y |
payoutdetails | BetList - List of bets with details - Refer to "PlayerWin" for details | Structure | Y |
E.g. :
username=satest¤cy=EUR&rolling=200&txnid=312358&gametype=bac&Payouttime=2021-03-19 16:12:28×tamp=2021-03-19 16:12:18.531&gameid=23547362930688&hostid=901&retry=0&payoutdetails=
{“betlist”:[{“betid”:30862073,”bettype”:2,”betamount”:100,”resultamount”:-100,”txnid”:1748483,”betsource”:2640,”rolling”:100},{“betid”:30862074,”bettype”:4,”betamount”:100,”resultamount”:-100,”txnid”:1748484,”betsource”:2640,”rolling”:100}]}
Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD. Except mXBT | String (16) | Y |
amount | Amount after adjustment (decimal format and max. 2 decimal places) | Decimal | Y |
error | Error code | Int | Y |
6.5.4.PlaceBetCancel
If a PlaceBet request timeout or partner system responded an error, a PlaceBetCancel request will send to partner system. SA Gaming platform will treat it as bet failed and report to player that his bet has been failed. Partner system must handle this request once and only once and must respond to our platform. In case you cannot find previous transaction by the txn_reverse_id, you have to send us error = 0, else we will keep sending this request.
Parameters:Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD | String (16) | Y |
amount | Amount to add back (decimal format and max. 2 decimal places) | Decimal | Y |
txnid | A unique id for all fund transfer | String (16) | Y |
timestamp | Timestamp in yyyy-MM-dd HH:mm:ss.fff (GMT +8) E.g. 2019-10-22 13:34:45.456 | DateTime | Y |
gametype | Game type | String | Y |
hostid | Host ID, please refer to Section 10. | Int | Y |
gameid | Game ID | String | Y |
txn_reverse_id | Previous txnid in PlaceBet request which the response was not received within 3 seconds or responded with an error. | String (16) | Y |
retry | 1st send: retry=0 2nd send: retry=1 | Int | Y |
gamecancel | Brief reason for cancellation 1 - Cancellation due to dealer operation problems 0 - other reasons (For example: PlaceBet response timeout or respond with error) | Byte | Y |
E.g. :
username=satest¤cy=EUR&amount=100.00&txnid=312357&gametype=bac&txn_reverse_id=312356×tamp=2021-03-19 16:12:05.312&gameid=23547362930688&hostid=901&retry=0&gamecancel=0
Response parameters:Name | Description | Type and Limit | Required? |
---|---|---|---|
username | Username | String (48) | Y |
currency | ISO 3 characters e.g. USD. Except mXBT | String (16) | Y |
amount | Amount after adjustment (decimal format and max. 2 decimal places) | Decimal | Y |
error | Error code | Int | Y |
6.6.Error code list
Partner system should report to our platform with the following error codes:
ID | Description |
---|---|
0 | Success |
1000 | User account doesn’t exist |
1001 | Invalid currency |
1002 | Invalid amount |
1003 | Locked account |
1004 | Insufficient balance |
1005 | General error |
1006 | Decryption error |
1007 | Session expired error |
9999 | System error |
7.Error message code reference
Common error message code
ID | Description |
---|---|
100 | Username error |
101 | Account locked |
102 | Secret key incorrect |
104 | Service not available |
105 | Client side error |
106 | Server busy. Try again later. |
107 | Username empty |
108 | Username length/format incorrect |
110 | User not online |
111 | Query time range out of limitation |
112 | API recently called |
113 | Username duplicated |
114 | Currency not exist |
116 | Username does not exist |
120 | Amount must greater than zero |
121 | Not enough points to credit/debit/bet |
122 | Order ID already exists |
125 | Kick user fail |
127 | Invalid order ID format |
128 | Decryption error |
129 | System under maintenance |
130 | User account is locked (disabled) |
132 | Sign unmatch |
133 | Create user failed |
135 | Game access denied |
136 | Not enough point to bet |
137 | Bet string error |
138 | Bet time ended or not started |
142 | Parameter(s) error |
144 | Query type invalid |
145 | Parameter decimal point greater than 2 |
146 | API access denied |
148 | MaxBalance not zero or smaller than user balance |
149 | Input amount under minimum value |
150 | Function has been deprecated |
151 | Duplicate login |
152 | Transaction ID not found |
153 | The API does not exist |
154 | Trial Player Not Support |
155 | Incorrect/missing game type |
157 | ListSet error, up to 5 items is acceptable for each game type |
158 | Duplicate/Invalid bet limit rules occur |
160 | This API is for seamless wallet |
190 | Function not for trial account |
8.Game Launching Procedures
8.1.Live Game
The Token is required for each login. Please construct a query string with the following parameters and using GET to send to Game Client Launching URL (e.g. xx.sa-api.net/app.aspx.)
Parameter | Description | Required? |
---|---|---|
username | The username displayed in the client | Y |
token | The token returned from LoginRequest | Y |
lobby | The lobby code we provided, it is to show the correct logo while loading | Y |
lang | Default language to be used in the client. Check in the table below for details | N |
returnurl | Optional parameter The URL will be invoked when the client logs out | N |
mobile | Optional parameter true - Start the client in HTML5 mobile version | N |
options | Optional parameters to enable feature while entering game lobby (URL Encoding will be needed)
Each parameter have to use comma to separate: options=defaulttable=901,hidelogo=1 | N |
Code | Description |
---|---|
ar_001 | Arabic Fosha |
bn | Bengali |
en_US | English |
es | Spanish |
hi | Hindi |
id | Bahasa Indonesia |
jp | Japanese |
ms | Malay |
pt | Portuguese |
pt_BR | Português Brasileiro |
te | Telugu |
th | Thai |
vn | Vietnamese |
zh_CN | Simplified Chinese |
zh_TW | Traditional Chinese |
9.UserBetItem
UserBetItem is a complex structure for the details of a bet per different game type.
Name | Description | Type and Limit | Required? |
---|---|---|---|
BetID | Bet record ID | Int64 | Y |
BetTime | Bet time | DateTime | Y |
PayoutTime | Payout time | DateTime | Y |
GameID | Game ID | String | Y |
HostID | Host table ID | Int16 | Y |
HostName | Table name | String | Y |
GameType | Game type name. Click here for details | String | Y |
Detail | Reserved | String | N |
Set | Game set | Int | Y |
Round | Game round | Int | Y |
BetType | Bet item Baccarat Dragon Tiger Sicbo Roulette Pok Deng Andar Bahar Teen Patti 20-20 Blackjack Xóc Đĩa | Byte | Y |
BetAmount | Bet amount (correct to cent) | Decimal | Y |
Rolling | Rolling (correct to cent) | Decimal | Y |
GameResult | The result of the game (details in another table) Baccarat Dragon Tiger Sicbo Roulette Pok Deng Andar Bahar Teen Patti 20-20 Blackjack Xóc Đĩa | XML | Y |
ResultAmount | Win or Lost amount (correct to cent) | Decimal | Y |
Balance | Remain balances (correct to cent) (Not applicable for seamless wallet) | Decimal | Y |
GameResult sample of Baccarat:
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 34 35 36 37 38 |
<GameResult> <BaccaratResult> <PlayerCard1> <Suit>1</Suit> <Rank>4</Rank> </PlayerCard1> <PlayerCard2> <Suit>3</Suit> <Rank>4</Rank> </PlayerCard2> <BankerCard1> <Suit>2</Suit> <Rank>2</Rank> </BankerCard1> <BankerCard2> <Suit>4</Suit> <Rank>12</Rank> </BankerCard2> <ResultDetail> <BRTie>false</BRTie> <BRPlayerWin>false</BRPlayerWin> <BRBankerWin>true</BRBankerWin> <BRPlayerPair>false</BRPlayerPair> <BRBankerPair>false</BRBankerPair> <BRSLuckySix>false</BRSLuckySix> <BRSSTie>false</BRSSTie> <BRSSPlayerWin>false</BRSSPlayerWin> <BRSSBankerWin>true</BRSSBankerWin> <BRSSPlayerPair>false</BRSSPlayerPair> <BRSSBankerPair>false</BRSSBankerPair> <BRSSSLuckySix>false</BRSSSLuckySix> <BRPlayerNatural>false</BRPlayerNatural> <BRBankerNatural>false</BRBankerNatural> <BRSSPlayerNatural>false</BRSSPlayerNatural> <BRSSBankerNatural>false</BRSSBankerNatural> </ResultDetail> </BaccaratResult> </GameResult> |
GameResult sample of Dragon Tiger:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<GameResult> <DragonTigerResult> <DragonCard> <Suit>4</Suit> <Rank>4</Rank> </DragonCard> <TigerCard> <Suit>2</Suit> <Rank>1</Rank> </TigerCard> <ResultDetail> <DTRTie>false</DTRTie> <DTRDragonWin>true</DTRDragonWin> <DTRTigerWin>false</DTRTigerWin> </ResultDetail> </DragonTigerResult> </GameResult> |
GameResult sample of Sicbo:
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 34 35 36 37 38 39 40 41 42 43 |
<GameResult> <SicBoResult> <Dice1>1</Dice1> <Dice2>2</Dice2> <Dice3>6</Dice3> <TotalPoint>9</TotalPoint> <ResultDetail> <SRBigSmall>2</SRBigSmall> <SROddEven>1</SROddEven> <SRTripleArmyOne>true</SRTripleArmyOne> <SRTripleArmyTwo>true</SRTripleArmyTwo> <SRTripleArmyThree>false</SRTripleArmyThree> <SRTripleArmyFour>false</SRTripleArmyFour> <SRTripleArmyFive>false</SRTripleArmyFive> <SRTripleArmySix>true</SRTripleArmySix> <SRTriple>0</SRTriple> <SRAllTriple>false</SRAllTriple> <SRPoint>9</SRPoint> <SRLongOneTwo>true</SRLongOneTwo> <SRLongOneThree>false</SRLongOneThree> <SRLongOneFour>false</SRLongOneFour> <SRLongOneFive>false</SRLongOneFive> <SRLongOneSix>true</SRLongOneSix> <SRLongTwoThree>false</SRLongTwoThree> <SRLongTwoFour>false</SRLongTwoFour> <SRLongTwoFive>false</SRLongTwoFive> <SRLongTwoSix>true</SRLongTwoSix> <SRLongThreeFour>false</SRLongThreeFour> <SRLongThreeFive>false</SRLongThreeFive> <SRLongThreeSix>false</SRLongThreeSix> <SRLongFourFive>false</SRLongFourFive> <SRLongFourSix>false</SRLongFourSix> <SRLongFiveSix>false</SRLongFiveSix> <SRShort>0</SRShort> <SROddEvenCombination>2</SROddEvenCombination> <SR_1_2_3_4>false</SR_1_2_3_4> <SR_2_3_4_5>false</SR_2_3_4_5> <SR_2_3_5_6>false</SR_2_3_5_6> <SR_3_4_5_6>false</SR_3_4_5_6> <SRCombination>31</SRCombination> </ResultDetail> </SicBoResult> </GameResult> |
GameResult sample of Roulette:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<GameResult> <RouletteResult> <Point>13</Point> <ResultDetail> <RRZero>false</RRZero> <RROne>false</RROne> <RRTwo>false</RRTwo> <RRThree>false</RRThree> <RRFour>false</RRFour> <RRFive>false</RRFive> <RRSix>false</RRSix> <RRSeven>false</RRSeven> <RREight>false</RREight> <RRNine>false</RRNine> <RRTen>false</RRTen> <RREleven>false</RREleven> <RRTwelve>false</RRTwelve> <RRThirteen>true</RRThirteen> <RRForteen>false</RRForteen> <RRFifthteen>false</RRFifthteen> <RRSixteen>false</RRSixteen> <RRSeventeen>false</RRSeventeen> <RREighteen>false</RREighteen> <RRNineteen>false</RRNineteen> <RRTwenty>false</RRTwenty> <RRTwentyOne>false</RRTwentyOne> <RRTwentyTwo>false</RRTwentyTwo> <RRTwentyThree>false</RRTwentyThree> <RRTwentyFour>false</RRTwentyFour> <RRTwentyFive>false</RRTwentyFive> <RRTwentySix>false</RRTwentySix> <RRTwentySeven>false</RRTwentySeven> <RRTwentyEight>false</RRTwentyEight> <RRTwentyNine>false</RRTwentyNine> <RRThirty>false</RRThirty> <RRThirtyOne>false</RRThirtyOne> <RRThirtyTwo>false</RRThirtyTwo> <RRThirtyThree>false</RRThirtyThree> <RRThirtyFour>false</RRThirtyFour> <RRThirtyFive>false</RRThirtyFive> <RRThirtySix>false</RRThirtySix> <RRSet1>false</RRSet1> <RRSet2>true</RRSet2> <RRSet3>false</RRSet3> <RRRow1>true</RRRow1> <RRRow2>false</RRRow2> <RRRow3>false</RRRow3> <RR1To18>true</RR1To18> <RR19To36>false</RR19To36> <RROdd>true</RROdd> <RREven>false</RREven> <RRRed>false</RRRed> <RRBlack>true</RRBlack> </ResultDetail> </RouletteResult> </GameResult> |
GameResult sample of Pok Deng:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<GameResult> <PokDengResult> <Player1Card1> <Suit>3</Suit> <Rank>2</Rank> </Player1Card1> <Player1Card2> <Suit>1</Suit> <Rank>8</Rank> </Player1Card2> <Player2Card1> <Suit>1</Suit> <Rank>7</Rank> </Player2Card1> <Player2Card2> <Suit>1</Suit> <Rank>3</Rank> </Player2Card2> <Player3Card1> <Suit>2</Suit> <Rank>13</Rank> </Player3Card1> <Player3Card2> <Suit>3</Suit> <Rank>13</Rank> </Player3Card2> <Player4Card1> <Suit>4</Suit> <Rank>11</Rank> </Player4Card1> <Player4Card2> <Suit>1</Suit> <Rank>9</Rank> </Player4Card2> <Player5Card1> <Suit>4</Suit> <Rank>2</Rank> </Player5Card1> <Player5Card2> <Suit>3</Suit> <Rank>1</Rank> </Player5Card2> <BankerCard1> <Suit>1</Suit> <Rank>7</Rank> </BankerCard1> <BankerCard2> <Suit>3</Suit> <Rank>6</Rank> </BankerCard2> <ResultDetail> <PDR_BankerPoint>4</PDR_BankerPoint> <PDR_BankerPair>false</PDR_BankerPair> <PDR_Player1Point>1</PDR_Player1Point> <PDR_Player1Result>2</PDR_Player1Result> <PDR_Player1Pair>false</PDR_Player1Pair> <PDR_Player2Point>9</PDR_Player2Point> <PDR_Player2Result>1</PDR_Player2Result> <PDR_Player2Pair>false</PDR_Player2Pair> <PDR_Player3Point>11</PDR_Player3Point> <PDR_Player3Result>1</PDR_Player3Result> <PDR_Player3Pair>true</PDR_Player3Pair> <PDR_Player4Point>15</PDR_Player4Point> <PDR_Player4Result>1</PDR_Player4Result> <PDR_Player4Pair>false</PDR_Player4Pair> <PDR_Player5Point>4</PDR_Player5Point> <PDR_Player5Result>3</PDR_Player5Result> <PDR_Player5Pair>false</PDR_Player5Pair> </ResultDetail> </PokDengResult> </GameResult> |
GameResult sample of Andar Bahar:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<GameResult> <AndarBaharResult> <GameCard> <Suit>1</Suit> <Rank>7</Rank> </GameCard> <Andar> <Card> <Suit>2</Suit> <Rank>4</Rank> </Card> <Card> <Suit>3</Suit> <Rank>6</Rank> </Card> <Card> <Suit>3</Suit> <Rank>11</Rank> </Card> <Card> <Suit>3</Suit> <Rank>7</Rank> </Card> </Andar> <Bahar> <Card> <Suit>4</Suit> <Rank>4</Rank> </Card> <Card> <Suit>4</Suit> <Rank>13</Rank> </Card> <Card> <Suit>4</Suit> <Rank>1</Rank> </Card> </Bahar> <ResultDetail> <ABRAndarWin>true</ABRAndarWin> <ABRBaharWin>false</ABRBaharWin> <ABR1To5>false</ABR1To5> <ABR6To10>true</ABR6To10> <ABR11To15>false</ABR11To15> <ABR16To20>false</ABR16To20> <ABR21To25>false</ABR21To25> <ABR26To30>false</ABR26To30> <ABR31To35>false</ABR31To35> <ABR36To49>false</ABR36To49> <ABR36To40>false</ABR36To40> <ABR41To45>false</ABR41To45> <ABR46To49>false</ABR46To49> <ABRFirst3>0</ABRFirst3> <ABRFirstAndar>false</ABRFirstAndar> <ABRFirstBahar>false</ABRFirstBahar> <ABRNCAndarWin>2</ABRNCAndarWin> <ABRNCBaharWin>false</ABRNCBaharWin> <ABRNC1To5>false</ABRNC1To5> <ABRNC6To10>true</ABRNC6To10> <ABRNC11To15>false</ABRNC11To15> <ABRNC16To20>false</ABRNC16To20> <ABRNC21To25>false</ABRNC21To25> <ABRNC26To30>false</ABRNC26To30> <ABRNC31To35>false</ABRNC31To35> <ABRNC36To40>false</ABRNC36To40> <ABRNC41To45>false</ABRNC41To45> <ABRNC46To49>false</ABRNC46To49> </ResultDetail> </AndarBaharResult> </GameResult> |
GameResult sample of Teen Patti 20-20:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<GameResult> <TeenPatti2020Result> <PlayerACard1> <Suit>1</Suit> <Rank>2</Rank> </PlayerACard1> <PlayerACard2> <Suit>4</Suit> <Rank>9</Rank> </PlayerACard2> <PlayerACard3> <Suit>3</Suit> <Rank>11</Rank> </PlayerACard3> <PlayerBCard1> <Suit>3</Suit> <Rank>9</Rank> </PlayerBCard1> <PlayerBCard2> <Suit>2</Suit> <Rank>10</Rank> </PlayerBCard2> <PlayerBCard3> <Suit>2</Suit> <Rank>7</Rank> </PlayerBCard3> <ResultDetail> <TP20RPlayerA>true</TP20RPlayerA> <TP20RPlayerB>false</TP20RPlayerB> <TP20RTie>false</TP20RTie> <TP20RPlayerAPairPlus>0</TP20RPlayerAPairPlus> <TP20RPlayerBPairPlus>0</TP20RPlayerBPairPlus> <TP20RSixCardBonus>0</TP20RSixCardBonus> <TP20RSixCard1> <Suit>3</Suit> <Rank>11</Rank> </TP20RSixCard1> <TP20RSixCard2> <Suit>2</Suit> <Rank>10</Rank> </TP20RSixCard2> <TP20RSixCard3> <Suit>3</Suit> <Rank>9</Rank> </TP20RSixCard3> <TP20RSixCard4> <Suit>4</Suit> <Rank>9</Rank> </TP20RSixCard4> <TP20RSixCard5> <Suit>2</Suit> <Rank>7</Rank> </TP20RSixCard5> </ResultDetail> </TeenPatti2020Result> </GameResult> |
GameResult sample of Blackjack:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
<GameResult> <BlackjackResult> <Player6> <Card1> <Suit>2</Suit> <Rank>8</Rank> </Card1> <Card2> <Suit>2</Suit> <Rank>2</Rank> </Card2> <Card3> <Suit>1</Suit> <Rank>11</Rank> </Card3> </Player6> <Banker> <Card1> <Suit>1</Suit> <Rank>5</Rank> </Card1> <Card2> <Suit>4</Suit> <Rank>10</Rank> </Card2> <Card3> <Suit>3</Suit> <Rank>10</Rank> </Card3> </Banker> <ResultDetail> <BJR_BankerPoint>22</BJR_BankerPoint> <BJR1_S1>0</BJR1_S1> <BJR1_S1_BJ>false</BJR1_S1_BJ> <BJR1_S1_Refund>false</BJR1_S1_Refund> <BJR1_S2>0</BJR1_S2> <BJR1_S2_BJ>false</BJR1_S2_BJ> <BJR1_S2_Refund>false</BJR1_S2_Refund> <BJR2_S1>0</BJR2_S1> <BJR2_S1_BJ>false</BJR2_S1_BJ> <BJR2_S1_Refund>false</BJR2_S1_Refund> <BJR2_S2>0</BJR2_S2> <BJR2_S2_BJ>false</BJR2_S2_BJ> <BJR2_S2_Refund>false</BJR2_S2_Refund> <BJR3_S1>0</BJR3_S1> <BJR3_S1_BJ>false</BJR3_S1_BJ> <BJR3_S1_Refund>false</BJR3_S1_Refund> <BJR3_S2>0</BJR3_S2> <BJR3_S2_BJ>false</BJR3_S2_BJ> <BJR3_S2_Refund>false</BJR3_S2_Refund> <BJR5_S1>0</BJR5_S1> <BJR5_S1_BJ>false</BJR5_S1_BJ> <BJR5_S1_Refund>false</BJR5_S1_Refund> <BJR5_S2>0</BJR5_S2> <BJR5_S2_BJ>false</BJR5_S2_BJ> <BJR5_S2_Refund>false</BJR5_S2_Refund> <BJR6_S1>1</BJR6_S1> <BJR6_S1_BJ>false</BJR6_S1_BJ> <BJR6_S1_Refund>false</BJR6_S1_Refund> <BJR6_S2>0</BJR6_S2> <BJR6_S2_BJ>false</BJR6_S2_BJ> <BJR6_S2_Refund>false</BJR6_S2_Refund> <BJR7_S1>0</BJR7_S1> <BJR7_S1_BJ>false</BJR7_S1_BJ> <BJR7_S1_Refund>false</BJR7_S1_Refund> <BJR7_S2>0</BJR7_S2> <BJR7_S2_BJ>false</BJR7_S2_BJ> <BJR7_S2_Refund>false</BJR7_S2_Refund> <BJR8_S1>0</BJR8_S1> <BJR8_S1_BJ>false</BJR8_S1_BJ> <BJR8_S1_Refund>false</BJR8_S1_Refund> <BJR8_S2>0</BJR8_S2> <BJR8_S2_BJ>false</BJR8_S2_BJ> <BJR8_S2_Refund>false</BJR8_S2_Refund> </ResultDetail> </BlackjackResult> </GameResult> |
GameResult sample of Xóc Đĩa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<GameResult> <XocDiaResult> <NoOfRed>3</NoOfRed> <ResultDetail> <XDR4r>false</SDR4r> <XDR3r1w>true</SDR3r1w> <XDR2r2w>false</SDR2r2w> <XDR1r3w>false</SDR1r3w> <XDR4w>false</SDR4w> <XDR4ror4w>false</SDR4ror4w> <XDRBig>true</SDRBig> <XDRSmall>false</SDRSmall> <XDROdd>true</SDROdd> <XDREven>false</SDREven> </ResultDetail> </XocDiaResult> </GameResult> |
9.1.GameType
Code name | Description |
---|---|
bac | Baccarat |
dtx | Dragon Tiger |
sicbo | Sic Bo |
rot | Roulette |
pokdeng | Pok Deng |
andarbahar | Andar Bahar |
teenpatti2020 | Teen Patti 20-20 |
blackjack | Blackjack |
xocdia | Xóc Đĩa |
9.2.Baccarat
All baccarat type games share the same structure of section 9.2: GameResult, CardDetail, BetType and ResultDetail of Baccarat.
(Baccarat, Speed Baccarat)
9.2.1.GameResult of Baccarat
Name | Description | Type |
---|---|---|
PlayerCard1 | CardDetail | Structure |
PlayerCard2 | CardDetail | Structure |
PlayerCard3 | CardDetail (may not exist) | Structure |
BankerCard1 | CardDetail | Structure |
BankerCard2 | CardDetail | Structure |
BankerCard3 | CardDetail (may not exist) | Structure |
ResultDetail | Details of the result | Structure |
9.2.2.CardDetail of Baccarat
Name | Description | Type |
---|---|---|
Suit | ♠ = 1 ♥ = 2 ♣ = 3 ♦ = 4 | Byte |
Rank | A = 1 2 = 2 … 10 = 10 J = 11 Q = 12 K = 13 | Byte |
9.2.3.BetType for Baccarat
ID | Description |
---|---|
0 | Tie |
1 | Player |
2 | Banker |
3 | Player Pair |
4 | Banker Pair |
25 | NC. Tie |
26 | NC. Player |
27 | NC. Banker |
28 | NC. Player Pair |
29 | NC. Banker Pair |
36 | Player Natural |
37 | Banker Natural |
40 | NC. Player Natural |
41 | NC. Banker Natural |
53 | NC. Lucky Six |
54 | Lucky Six |
9.2.4.ResultDetail for Baccarat
Name | Description | Type and Limit |
---|---|---|
BRTie | Tie | Bool |
BRPlayerWin | Player | Bool |
BRBankerWin | Banker | Bool |
BRPlayerPair | Player Pair | Bool |
BRBankerPair | Banker Pair | Bool |
BRSLuckySix | Lucky Six | Bool |
BRSSTie | NC. Tie | Bool |
BRSSPlayerWin | NC. Player | Bool |
BRSSBankerWin | NC. Bander | Bool |
BRSSPlayerPair | NC. Player Pair | Bool |
BRSSBankerPair | NC. Banker Pair | Bool |
BRSSSLuckySix | NC. Lucky Six | Bool |
BRPlayerNatural | Player Natural | Bool |
BRBankerNatural | Banker Natural | Bool |
BRSSPlayerNatural | NC. Player Natural | Bool |
BRSSBankerNatural | NC. Banker Natural | Bool |
9.3.Dragon & Tiger
9.3.1.GameResult of Dragon Tiger
Name | Description | Type and Limit |
---|---|---|
DragonCard | CardDetail | Structure |
TigerCard | CardDetail | Structure |
ResultDetail | Details of the result | Structure |
9.3.2.BetType for Dragon Tiger
ID | Description |
---|---|
0 | Tie |
1 | Dragon |
2 | Tiger |
9.3.3.ResultDetail for Dragon Tiger
Name | Description | Type and Limit |
---|---|---|
DTRTie | Tie | Bool |
DTRDragonWin | Dragon | Bool |
DTRTigerWin | Tiger | Bool |
9.4.Sic Bo
9.4.1.GameResult of Sic Bo
Name | Description | Type and Limit |
---|---|---|
Dice1 | Dice 1 | Int |
Dice2 | Dice 2 | Int |
Dice3 | Dice 3 | Int |
ResultDetail | Details of the result | Structure |
9.4.2.BetType for Sic Bo
ID | Description | ID | Description |
---|---|---|---|
0 | Small | 55 | All Even |
1 | Big | 56 | 1234 |
2 | Odd | 57 | 2345 |
3 | Even | 58 | 2356 |
4 | Number 1 | 59 | 3456 |
5 | Number 2 | 60 | 112 |
6 | Number 3 | 61 | 113 |
7 | Number 4 | 62 | 114 |
8 | Number 5 | 63 | 115 |
9 | Number 6 | 64 | 116 |
10 | Triple 1 | 65 | 221 |
11 | Triple 2 | 66 | 223 |
12 | Triple 3 | 67 | 224 |
13 | Triple 4 | 68 | 225 |
14 | Triple 5 | 69 | 226 |
15 | Triple 6 | 70 | 331 |
16 | All same | 71 | 332 |
17 | Point 4 | 72 | 334 |
18 | Point 5 | 73 | 335 |
19 | Point 6 | 74 | 336 |
20 | Point 7 | 75 | 441 |
21 | Point 8 | 76 | 442 |
22 | Point 9 | 77 | 443 |
23 | Point 10 | 78 | 445 |
24 | Point 11 | 79 | 446 |
25 | Point 12 | 80 | 551 |
26 | Point 13 | 81 | 552 |
27 | Point 14 | 82 | 553 |
28 | Point 15 | 83 | 554 |
29 | Point 16 | 84 | 556 |
30 | Point 17 | 85 | 661 |
31 | Specific Double 1,2 | 86 | 662 |
32 | Specific Double 1,3 | 87 | 663 |
33 | Specific Double 1,4 | 88 | 664 |
34 | Specific Double 1,5 | 89 | 665 |
35 | Specific Double 1,6 | 90 | 126 |
36 | Specific Double 2,3 | 91 | 135 |
37 | Specific Double 2,4 | 92 | 234 |
38 | Specific Double 2,5 | 93 | 256 |
39 | Specific Double 2,6 | 94 | 346 |
40 | Specific Double 3,4 | 95 | 123 |
41 | Specific Double 3,5 | 96 | 136 |
42 | Specific Double 3,6 | 97 | 145 |
43 | Specific Double 4,5 | 98 | 235 |
44 | Specific Double 4,6 | 99 | 356 |
45 | Specific Double 5,6 | 100 | 124 |
46 | Pair 1 | 101 | 146 |
47 | Pair 2 | 102 | 236 |
48 | Pair 3 | 103 | 245 |
49 | Pair 4 | 104 | 456 |
50 | Pair 5 | 105 | 125 |
51 | Pair 6 | 106 | 134 |
52 | All Odd | 107 | 156 |
53 | 2 Odd 1 Even | 108 | 246 |
54 | 2 Even 1 Odd | 109 | 345 |
9.4.3.ResultDetail for Sic Bo
Name | Description | Type and Limit |
---|---|---|
SRBigSmall | 0 - Triple 1 - Big 2 - Small | Byte |
SROddEven | 0 - Triple 1 - Odd 2 - Even | Byte |
SRTripleArmyOne | Triple 1 | Bool |
SRTripleArmyTwo | Triple 2 | Bool |
SRTripleArmyThree | Triple 3 | Bool |
SRTripleArmyFour | Triple 4 | Bool |
SRTripleArmyFive | Triple 5 | Bool |
SRTripleArmySix | Triple 6 | Bool |
SRTriple | 0 - NA 1 - Triple 1 2 - Triple 2 3 - Triple 3 4 - Triple 4 5 - Triple 5 6 - Triple 6 | Byte |
SRAllTriple | All Triple | Bool |
SRPoint | 0 - NA 4 - Point 4 5 - Point 5 6 - Point 6 7 - Point 7 8 - Point 8 9 - Point 9 10 - Point 10 11 - Point 11 12 - Point 12 13 - Point 13 14 - Point 14 15 - Point 15 16 - Point 16 17 - Point 17 | Byte |
SRLongOneTwo | Long 1 2 | Bool |
SRLongOneThree | Long 1 3 | Bool |
SRLongOneFour | Long 1 4 | Bool |
SRLongOneFive | Long 1 5 | Bool |
SRLongOneSix | Long 1 6 | Bool |
SRLongTwoThree | Long 2 3 | Bool |
SRLongTwoFour | Long 2 4 | Bool |
SRLongTwoFive | Long 2 5 | Bool |
SRLongTwoSix | Long 2 6 | Bool |
SRLongThreeFour | Long 3 4 | Bool |
SRLongThreeFive | Long 3 5 | Bool |
SRLongThreeSix | Long 3 6 | Bool |
SRLongFourFive | Long 4 5 | Bool |
SRLongFourSix | Long 4 6 | Bool |
SRLongFiveSix | Long 5 6 | Bool |
SRShort | 0 - NA 1 - Short 1 2 - Short 2 3 - Short 3 4 - Short 4 5 - Short 5 6 - Short 6 | Byte |
SROddEvenCombination | 0 - All Odd 1 - 2 Odd 1 Even 2 - 2 Even 1 Odd 3 - All Even | Byte |
SR_1_2_3_4 | 1234 | Bool |
SR_2_3_4_5 | 2345 | Bool |
SR_2_3_5_6 | 2356 | Bool |
SR_3_4_5_6 | 3456 | Bool |
SRCombination | 0 - NA 1 - 112 2 - 113 3 - 114 4 - 115 5 - 116 6 - 221 7 - 223 8 - 224 9 - 225 10 - 226 11 - 331 12 - 332 13 - 334 14 - 335 15 - 336 16 - 441 17 - 442 18 - 443 19 - 445 20 - 446 21 - 551 22 - 552 23 - 553 24 - 554 25 - 556 26 - 661 27 - 662 28 - 663 29 - 664 30 - 665 31 - 126 32 - 135 33 - 234 34 - 256 35 - 346 36 - 123 37 - 136 38 - 145 39 - 235 40 - 356 41 - 124 42 - 146 43 - 236 44 - 245 45 - 456 46 - 125 47 - 134 48 - 156 49 - 246 50 - 345 | Byte |
9.5.Roulette
9.5.1.GameResult of Roulette
Name | Description | Type and Limit |
---|---|---|
Point | 0 to 36 | Int |
ResultDetail | Details of the result | Structure |
9.5.2.BetType for Roulette
ID | Description | ID | Description |
---|---|---|---|
0~36 | 0~36 | 97 | 0,1,2 |
37 | 0,1 | 98 | 0,2,3 |
38 | 0,2 | 99 | 1,2,3 |
39 | 0,3 | 100 | 4,5,6 |
40 | 1,2 | 101 | 7,8,9 |
41 | 1,4 | 102 | 10,11,12 |
42 | 2,3 | 103 | 13,14,15 |
43 | 2,5 | 104 | 16,17,18 |
44 | 3,6 | 105 | 19,20,21 |
45 | 4,5 | 106 | 22,23,24 |
46 | 4,7 | 107 | 25,26,27 |
47 | 5,6 | 108 | 28,29,30 |
48 | 5,8 | 109 | 31,32,33 |
49 | 6,9 | 110 | 34,35,36 |
50 | 7,8 | 111 | 1,2,4,5 |
51 | 7,10 | 112 | 2,3,5,6 |
52 | 8,9 | 113 | 4,5,7,8 |
53 | 8,11 | 114 | 5,6,8,9 |
54 | 9,12 | 115 | 7,8,10,11 |
55 | 10,11 | 116 | 8,9,11,12 |
56 | 10,13 | 117 | 10,11,13,14 |
57 | 11,12 | 118 | 11,12,14,15 |
58 | 11,14 | 119 | 13,14,16,17 |
59 | 12,15 | 120 | 14,15,17,18 |
60 | 13,14 | 121 | 16,17,19,20 |
61 | 13,16 | 122 | 17,18,20,21 |
62 | 14,15 | 123 | 19,20,22,23 |
63 | 14,17 | 124 | 20,21,23,24 |
64 | 15,18 | 125 | 22,23,25,26 |
65 | 16,17 | 126 | 23,24,26,27 |
66 | 16,19 | 127 | 25,26,28,29 |
67 | 17,18 | 128 | 26,27,29,30 |
68 | 17,20 | 129 | 28,29,31,32 |
69 | 18,21 | 130 | 29,30,32,33 |
70 | 19,20 | 131 | 31,32,34,35 |
71 | 19,22 | 132 | 32,33,35,36 |
72 | 20,21 | 133 | 1,2,3,4,5,6 |
73 | 20,23 | 134 | 4,5,6,7,8,9 |
74 | 21,24 | 135 | 7,8,9,10,11,12 |
75 | 22,23 | 136 | 10,11,12,13,14,15 |
76 | 22,25 | 137 | 13,14,15,16,17,18 |
77 | 23,24 | 138 | 16,17,18,19,20,21 |
78 | 23,26 | 139 | 19,20,21,22,23,24 |
79 | 24,27 | 140 | 22,23,24,25,26,27 |
80 | 25,26 | 141 | 25,26,27,28,29,30 |
81 | 25,28 | 142 | 28,29,30,31,32,33 |
82 | 26,27 | 143 | 31,32,33,34,35,36 |
83 | 26,29 | 144 | 1st 12 |
84 | 27,30 | 145 | 2nd 12 |
85 | 28.29 | 146 | 3rd 12 |
86 | 28,31 | 147 | 1st Row |
87 | 29,30 | 148 | 2nd Row |
88 | 29,32 | 149 | 3rd Row |
89 | 30,33 | 150 | 1~18 |
90 | 31,32 | 151 | 19~36 |
91 | 31,34 | 152 | Odd |
92 | 32,33 | 153 | Even |
93 | 32,35 | 154 | Red |
94 | 33,36 | 155 | Black |
95 | 34,35 | 156 | 0,1,2,3 |
96 | 35,36 |
9.5.3.ResultDetail for Roulette
Name | Description | Type and Limit |
---|---|---|
RRZero | 0 | Bool |
RROne | 1 | Bool |
RRTwo | 2 | Bool |
RRThree | 3 | Bool |
RRFour | 4 | Bool |
RRFive | 5 | Bool |
RRSix | 6 | Bool |
RRSeven | 7 | Bool |
RREight | 8 | Bool |
RRNine | 9 | Bool |
RRTen | 10 | Bool |
RREleven | 11 | Bool |
RRTwelve | 12 | Bool |
RRThirteen | 13 | Bool |
RRForteen | 14 | Bool |
RRFifthteen | 15 | Bool |
RRSixteen | 16 | Bool |
RRSeventeen | 17 | Bool |
RREighteen | 18 | Bool |
RRNineteen | 19 | Bool |
RRTwenty | 20 | Bool |
RRTwentyOne | 21 | Bool |
RRTwentyTwo | 22 | Bool |
RRTwentyThree | 23 | Bool |
RRTwentyFour | 24 | Bool |
RRTwentyFive | 25 | Bool |
RRTwentySix | 26 | Bool |
RRTwentySeven | 27 | Bool |
RRTwentyEight | 28 | Bool |
RRTwentyNine | 29 | Bool |
RRThirty | 30 | Bool |
RRThirtyOne | 31 | Bool |
RRThirtyTwo | 32 | Bool |
RRThirtyThree | 33 | Bool |
RRThirtyFour | 34 | Bool |
RRThirtyFive | 35 | Bool |
RRThirtySix | 36 | Bool |
RRSet1 | 1st 12 | Bool |
RRSet2 | 2nd 12 | Bool |
RRSet3 | 3rd 12 | Bool |
RRRow1 | 1st Row | Bool |
RRRow2 | 2nd Row | Bool |
RRRow3 | 3rd Row | Bool |
RR1To18 | 1-18 | Bool |
RR19To36 | 19-36 | Bool |
RROdd | Odd | Bool |
RREven | Even | Bool |
RRRed | Red | Bool |
RRBlack | Black | Bool |
9.6.Pok Deng
9.6.1.GameResult of Pok Deng
Name | Description | Type and Limit |
---|---|---|
Player1Card1 | CardDetail | Structure |
Player1Card2 | CardDetail | Structure |
Player2Card1 | CardDetail | Structure |
Player2Card2 | CardDetail | Structure |
Player3Card1 | CardDetail | Structure |
Player3Card2 | CardDetail | Structure |
Player4Card1 | CardDetail | Structure |
Player4Card2 | CardDetail | Structure |
Player5Card1 | CardDetail | Structure |
Player5Card2 | CardDetail | Structure |
BankerCard1 | CardDetail | Structure |
BankerCard2 | CardDetail | Structure |
9.6.2.BetType for Pok Deng
ID | Description |
---|---|
0 | Player 1 |
1 | Player 2 |
2 | Player 3 |
3 | Player 4 |
4 | Player 5 |
5 | Player 1 Pair |
6 | Player 2 Pair |
7 | Player 3 Pair |
8 | Player 4 Pair |
9 | Player 5 Pair |
9.6.3.ResultDetail for Pok Deng
Name | Description | Type and Limit |
---|---|---|
PDR_BankerPoint | Banker total point | Byte |
PDR_BankerPair | Banker Pair | Bool |
PDR_Player1Point | Player 1 total point | Byte |
PDR_Player1Result | Player 1 result state | Byte |
PDR_Player1Pair | Player 1 Pair | Bool |
PDR_Player2Point | Player 2 total point | Byte |
PDR_Player2Result | Player 2 result state | Byte |
PDR_Player2Pair | Player 2 Pair | Bool |
PDR_Player3Point | Player 3 total point | Byte |
PDR_Player3Result | Player 3 result state | Byte |
PDR_Player3Pair | Player 3 Pair | Bool |
PDR_Player4Point | Player 4 total point | Byte |
PDR_Player4Result | Player 4 result state | Byte |
PDR_Player4Pair | Player 4 Pair | Bool |
PDR_Player5Point | Player 5 total point | Byte |
PDR_Player5Result | Player 5 result state | Byte |
PDR_Player5Pair | Player 5 Pair | Bool |
9.6.4.Result state for Pok Deng
ID | Description |
---|---|
0 | No Result |
1 | Player Win |
2 | Banker Win |
3 | Tie |
9.6.5.Total point for Pok Deng
ID | Description |
---|---|
0 | No Result |
1 | Total point 0 |
2 | Total point 1 |
3 | Total point 2 |
4 | Total point 3 |
5 | Total point 4 |
6 | Total point 5 |
7 | Total point 6 |
8 | Total point 7 |
9 | Total point 7.1 |
10 | Total point 7.2 |
11 | Total point 7.3 |
12 | Total point 7.4 |
13 | Total point 7.5 |
14 | Total point 8 |
15 | Total point 9 |
9.7.Andar Bahar
9.7.1.GameResult of Andar Bahar
Name | Description | Type |
---|---|---|
GameCard | CardDetail | Structure |
Andar | CardDetail (may be more than 1 card) | Structure |
Bahar | CardDetail (may be more than 1 card) | Structure |
9.7.2.BetType for Andar Bahar
ID | Description |
---|---|
0 | Andar |
1 | Bahar |
2 | 1-5 |
3 | 6-10 |
4 | 11-15 |
5 | 16-20 |
6 | 21-25 |
7 | 26-30 |
8 | 31-35 |
9 | 36-49 (Obsolete soon) |
10 | 36-40 |
11 | 41-45 |
12 | 46-49 |
13 | First 3 |
14 | 1st Andar |
15 | 1st Bahar |
16 | NC. Andar |
17 | NC. Bahar |
18 | NC. 1-5 |
19 | NC. 6-10 |
20 | NC. 11-15 |
21 | NC. 16-20 |
22 | NC. 21-25 |
23 | NC. 26-30 |
24 | NC. 31-35 |
25 | NC. 36-40 |
26 | NC. 41-45 |
27 | NC. 46-49 |
9.7.3.ResultDetail for Andar Bahar
Name | Description | Type and Limit |
---|---|---|
ABRAndarWin | Andar | Bool |
ABRBaharWin | Bahar | Bool |
ABR1To5 | 1-5 | Bool |
ABR6To10 | 6-10 | Bool |
ABR11To15 | 11-15 | Bool |
ABR16To20 | 16-20 | Bool |
ABR21To25 | 21-25 | Bool |
ABR26To30 | 26-30 | Bool |
ABR31To35 | 31-35 | Bool |
ABR36To49 | 36-49 (obsolete soon) | Bool |
ABR36To40 | 36-40 | Bool |
ABR41To45 | 41-45 | Bool |
ABR46To49 | 46-49 | Bool |
ABRFirst3 | First 3 card | 0 = No Win 1 = Flush 2 = Straight 3 = Straight Flush |
ABRFirstAndar | First Andar | Bool |
ABRFirstBahar | First Bahar | Bool |
ABRNCAndarWin | No commission Andar | 0 = No win 1 = First Andar 2 = Other |
ABRNCBaharWin | No commission Bahar | Bool |
ABRNC1To5 | No commission 1-5 | Bool |
ABRNC6To10 | No commission 6-10 | Bool |
ABRNC11To15 | No commission 11-15 | Bool |
ABRNC16To20 | No commission 16-20 | Bool |
ABRNC21To25 | No commission 21-25 | Bool |
ABRNC26To30 | No commission 26-30 | Bool |
ABRNC31To35 | No commission 31-35 | Bool |
ABRNC36To40 | No commission 36-40 | Bool |
ABRNC41To45 | No commission 41-45 | Bool |
ABRNC46To49 | No commission 46-49 | Bool |
9.8.Teen Patti 20-20
9.8.1.GameResult of Teen Patti 20-20
Name | Description | Type |
---|---|---|
PlayerACard1 | CardDetail (Player A first card) | Structure |
PlayerACard2 | CardDetail (Player A second card) | Structure |
PlayerACard3 | CardDetail (Player A third card) | Structure |
PlayerBCard1 | CardDetail (Player B first card) | Structure |
PlayerBCard2 | CardDetail (Player B second card) | Structure |
PlayerBCard3 | CardDetail (Player B third card) | Structure |
9.8.2.BetType for Teen Patti 20-20
ID | Description |
---|---|
0 | Tie |
1 | Player A |
2 | Player B |
3 | Player A Pair + |
4 | Player B Pair + |
5 | 6 Card Bonus |
9.8.3.ResultDetail for Teen Patti 20-20
Name | Description | Type and Limit |
---|---|---|
TP20RPlayerA | Player A | Bool |
TP20RPlayerB | Player B | Bool |
TP20RTie | Tie | Bool |
TP20RPlayerAPairPlus | Player A Pair + 0 = No Win 1 = Pair 2 = Flush 3 = Straight 4 = Straight Flush 5 = Three of a Kind (2-K) 6 = Three of a Kind (A) | Integer |
TP20RPlayerBPairPlus | Player B Pair + 0 = No Win 1 = Pair 2 = Flush 3 = Straight 4 = Straight Flush 5 = Three of a Kind (2-K) 6 = Three of a Kind (A) | Integer |
TP20RSixCardBonus | 6 card bonus 0 = No Win 1 = Three of a Kind 2 = Straight 3 = Flush 4 = Full House 5 = Four of a Kind 6 = Straight Flush 7 = Royal Flush | Integer |
TP20RSixCard1 | CardDetail (First card) | Structure |
TP20RSixCard2 | CardDetail (Second card) | Structure |
TP20RSixCard3 | CardDetail (Third card) | Structure |
TP20RSixCard4 | CardDetail (Fourth card) | Structure |
TP20RSixCard5 | CardDetail (Fifth card) | Structure |
9.9.Blackjack
9.9.1.GameResult of Blackjack
Name | Description | Type |
---|---|---|
Player(X) | Player’s position Possible values: Player1 Player2 Player3 Player5 Player6 Player7 Player8 | title |
Card(X) | CardDetail (may be more than 1 card) Examples: Card1 Card2 Card3 | Structure |
Banker | CardDetail (may be more than 1 card) Examples: Card1 Card2 Card3 | Structure |
9.9.2.BetType for Blackjack
ID | Description |
---|---|
0 | Player 1 - Single |
1 | Player 2 - Single |
2 | Player 3 - Single |
3 | Player 5 - Single |
4 | Player 6 - Single |
5 | Player 7 - Single |
6 | Player 8 - Single |
7 | Player 1 - Split |
8 | Player 2 - Split |
9 | Player 3 - Split |
10 | Player 5 - Split |
11 | Player 6 - Split |
12 | Player 7 - Split |
13 | Player 8 - Split |
14 | Player 1 - Double Down |
15 | Player 2 - Double Down |
16 | Player 3 - Double Down |
17 | Player 5 - Double Down |
18 | Player 6 - Double Down |
19 | Player 7 - Double Down |
20 | Player 8 - Double Down |
21 | Player 1 - Pair |
22 | Player 2 - Pair |
23 | Player 3 - Pair |
24 | Player 5 - Pair |
25 | Player 6 - Pair |
26 | Player 7 - Pair |
27 | Player 8 - Pair |
28 | Insurance |
9.9.3.ResultDetail for Blackjack
Name | Description | Type and Limit |
---|---|---|
BJR_BankerPoint | Banker card point | 1-21 = Banker card point 22 = Banker Bush 255 = Banker Blackjack |
BJR1_S1 | Player 1 - Single | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR1_S1_BJ | Player 1 - Single Blackjack | Bool |
BJR1_S1_Refund | Player 1 - Single refund | Bool |
BJR1_S2 | Player 1 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR1_S2_BJ | Player 1 - Split Blackjack | Bool |
BJR1_S2_Refund | Player 1 - Split refund | Bool |
BJR2_S1 | Player 2 - Single | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR2_S1_BJ | Player 2 - Single Blackjack | Bool |
BJR2_S1_Refund | Player 2 - Single refund | Bool |
BJR2_S2 | Player 2 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR2_S2_BJ | Player 2 - Split Blackjack | Bool |
BJR2_S2_Refund | Player 2 - Split refund | Bool |
BJR3_S1 | Player 3 - Single | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR3_S1_BJ | Player 3 - Single Blackjack | Bool |
BJR3_S1_Refund | Player 3 - Single refund | Bool |
BJR3_S2 | Player 3 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR3_S2_BJ | Player 3 - Split Blackjack | Bool |
BJR3_S2_Refund | Player 3 - Split refund | Bool |
BJR5_S1 | Player 5 - Single | 0 = Player no hand 1 = Player win 2 = player lose 3 = Tie |
BJR5_S1_BJ | Player 5 - Single Blackjack | Bool |
BJR5_S1_Refund | Player 5 - Single refund | Bool |
BJR5_S2 | Player 5 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR5_S2_BJ | Player 5 - Split Blackjack | Bool |
BJR5_S2_Refund | Player 5 - Split refund | Bool |
BJR6_S1 | Player 6 - Single | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR6_S1_BJ | Player 6 - Single Blackjack | Bool |
BJR6_S1_Refund | Player 6 - Single refund | Bool |
BJR6_S2 | Player 6 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR6_S2_BJ | Player 6 - Split Blackjack | Bool |
BJR6_S2_Refund | Player 6 - Split refund | Bool |
BJR7_S1 | Player 7 - Single | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR7_S1_BJ | Player 7 - Single Blackjack | Bool |
BJR7_S1_Refund | Player 7 - Single refund | Bool |
BJR7_S2 | Player 7 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR7_S2_BJ | Player 7 - Split Blackjack | Bool |
BJR7_S2_Refund | Player 7 - Split refund | Bool |
BJR8_S1 | Player 8 - Single | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR8_S1_BJ | Player 8 - Single Blackjack | Bool |
BJR8_S1_Refund | Player 8 - Single refund | Bool |
BJR8_S2 | Player 8 - Split | 0 = Player no hand 1 = Player win 2 = Player lose 3 = Tie |
BJR8_S2_BJ | Player 8 - Split Blackjack | Bool |
BJR8_S2_Refund | Player 8 - Split refund | Bool |
9.10.Xóc Đĩa
9.10.1.GameResult of Xóc Đĩa
Name | Description | Type |
---|---|---|
NoOfRed | Number of red token in game outcome (0-4) | Int |
ResultDetail | Details of the result | Structure |
9.10.2.BetType for Xóc Đĩa
ID | Description |
---|---|
0 | 4 Red |
1 | 1 White 3 Red |
2 | 2 White 2 Red |
3 | 3 White 1 Red |
4 | 4 White |
5 | 4 White or 4 Red |
6 | Big |
7 | Small |
8 | Odd |
9 | Even |
9.10.3.ResultDetail for Xóc Đĩa
Name | Description | Type and Limit |
---|---|---|
XDR4r | 4 Red | Bool |
XDR3r1w | 1 White 3 Red | Bool |
XDR2r2w | 2 White 2 Red | Bool |
XDR1r3w | 3 White 1 Red | Bool |
XDR4w | 4 White | Bool |
XDR4ror4w | 4 White or 4 Red | Bool |
XDRBig | Big | Bool |
XDRSmall | Small | Bool |
XDROdd | Odd | Bool |
XDREven | Even | Bool |
10.Host ID to Game mapping
ID | Game |
---|---|
531 | M Xóc Đĩa |
532 | M Sic Bo |
533 | M Roulette |
534 | M Dragon Tiger |
535 | M Pok Deng |
536 | M Blackjack |
537 | M Andar Bahar |
538 | M Teen Patti 20-20 |
861 | C Roulette |
871 | Baccarat C01 |
872 | Baccarat C02 |
873 | Baccarat C03 |
874 | Baccarat C04 |
875 | Baccarat C05 |
876 | Baccarat C06 |
877 | Baccarat C07 |
878 | Speed Baccarat C08 |
901 | Baccarat D01 |
902 | Baccarat D02 |
903 | Baccarat D03 |
904 | Baccarat D04 |
905 | Baccarat D05 |
906 | Baccarat D06 |
907 | Baccarat D07 |
908 | Speed Baccarat D08 |
11.Supported Currencies
This is the list of currencies we support. Please note that the currency has to be enabled to your api account before using it. You may contact our CS for enquiries.
Currency ISO Name (1:1) | Currency |
---|---|
AED | United Arab Emirates Dirham |
AMD | Armenian Dram |
ARS | Argentina Peso |
AUD | Australian Dollar |
AZN | Azerbaijani Manat |
BDT | Bangladeshi Taka |
BND | Bruneian Dollar |
BRL | Brazilian Real |
BYN | Belarusian Ruble |
CAD | Canadian Dollar |
CHF | Swiss Franc |
CLP | Chilean Peso |
CZK | Czech Koruny |
DKK | Danish Krone |
EUR | Euro |
GBP | British Pound |
GEL | Georgian Lari |
GHS | Ghanaian Cedi |
HTG | Haitian Gourde |
HUF | Hungarian Forint |
ILS | Israeli Shekel |
INR | Indian Rupee |
IQD | Iraqi Dinar |
JPY | Japanese yen |
KES | Kenyan Shilling |
KGS | Kyrgyzstani Som |
KZT | Kazakhstani Tenge |
LKR | Sri Lankan Rupee |
MDL | Moldovan Lei |
MXN | Mexican Peso |
MYR | Malaysian Ringgit |
mXBT | milli Bitcoin |
NAD | Namibian Dollar |
NGN | Nigerian Naira |
NOK | Norwegian Krone |
NZD | New Zealand Dollar |
PEN | Peruvian Nuevo Sol |
PHP | Philippine peso |
PKR | Pakistani Rupee |
PLN | Polish Zloty |
RUB | Russian Ruble |
SEK | Swedish Krone |
SGD | Singapore Dollar |
SZL | Swazi Lilangeni |
THB | Thai Baht |
TMT | Turkmenistani Manat |
TND | Tunisian Dinar |
TRY | Turkish Lira |
TWD | Taiwan New Dollar |
UAH | Ukrainian Hryvnia |
USD | US Dollar |
USDT | Tether |
uXBT | Micro-Bitcoins |
VES | Venezuelan Bolivar Soberano |
XAF | Central African CFA Franc |
XOF | West African CFA Franc |
ZAR | South Africa Rand |
ZMW | Zambian Kwacha |
Special Currency Code (1:1) | Currency |
---|---|
CDF2 | Congolese Franc |
COP2 | Colombian Peso |
IDR2 | Indonesian Rupiah |
IRR2 | Iranian Rial |
KHR2 | Cambodian Riel |
LAK2 | Laotian Kip |
MMK2 | Burmese Kyat |
PYG2 | Paraguayan Guarani |
TZS2 | Tanzanian Shilling |
UGX2 | Ugandan Shilling |
UZS2 | Uzbekistani Sum |
VND2 | Vietnamese Dong |
Currency ISO Name (1:1000) | Currency |
---|---|
CDF | Congolese Franc |
COP | Colombian Peso |
IDR | Indonesian Rupiah |
IRR | Iranian Rial |
KHR | Cambodian Riel |
LAK | Laotian Kip |
MMK | Burmese Kyat |
PYG | Paraguayan Guarani |
TZS | Tanzanian Shilling |
UGX | Ugandan Shilling |
UZS | Uzbekistani Sum |
VND | Vietnamese Dong |
Special Currency Code | Currency | Remarks |
---|---|---|
IN5 | Indian Rupee | 0.2 INR |
PK5 | Pakistani Rupee | 0.2 PKR |