API Integration Specification Guide
API Integration Specification Guide
Table of Contents
Table of Contents.........................................................................................................................2
Version Control............................................................................................................................ 4
1. API Overview............................................................................................................................6
1.1 Seamless Wallet API......................................................................................................... 6
1.2 Fund Transfer API..............................................................................................................6
1.3 Integration API................................................................................................................... 7
1.3.1 Free Round Feature Integration API.........................................................................7
1.4 Player ID............................................................................................................................ 8
1.5 Game Session................................................................................................................... 8
1.5.1 Bet and Game Result................................................................................................8
1.5.2 Transaction IDs......................................................................................................... 8
2. Integration API......................................................................................................................... 9
2.1 API Documentation..........................................................................................................10
2.1.1 POST GetGameList................................................................................................ 10
2.1.2 POST GameLogin...................................................................................................11
2.1.3 POST GetTransactionDetails..................................................................................13
2.1.4 POST GetDaySummary..........................................................................................14
2.1.5 POST KickPlayer.................................................................................................... 16
2.1.6 POST GetUnfinishRound........................................................................................17
2.1.7 POST CancelRound............................................................................................... 19
2.1.8 POST GetRoundDetails..........................................................................................20
2.2 Demo Launch Game........................................................................................................22
2.2.1 GetGameList and GameLogin method................................................................... 22
2.2.2 GET GameList........................................................................................................ 22
2.2.3 GET LaunchGame.................................................................................................. 23
2.3 Free Round Feature Integration API................................................................................23
2.3.1 POST CreateFreeRound........................................................................................ 23
2.3.2 POST CancelFreeRound........................................................................................ 25
2.3.3 POST GetFreeRoundInfoByPlayer......................................................................... 26
2.3.4 POST GetFreeRoundGames..................................................................................28
2.3.5 POST GetFreeRoundDetails.................................................................................. 30
3. Seamless Wallet Integration API.......................................................................................... 33
3.1 Game Opening Method................................................................................................... 33
3.2 API Documentation..........................................................................................................34
3.2.1 POST GetBalance.................................................................................................. 34
3.2.2 POST Bet................................................................................................................35
3.2.3 POST GameResult................................................................................................. 37
3.2.4 POST Rollback....................................................................................................... 39
3.2.5 POST CashBonus...................................................................................................41
3.2.7 POST BuyIn............................................................................................................ 43
3.2.8 POST BuyOut......................................................................................................... 45
3.2.9 POST UpdateGameResult......................................................................................47
3.3 Flow of placing bets for seamless....................................................................................50
4. Fund Transfer Wallet Integration API...................................................................................51
4.1 Game Opening Method................................................................................................... 51
4.2 API Documentation..........................................................................................................52
4.2.1 POST CreatePlayer................................................................................................ 52
4.2.2 POST CheckBalance.............................................................................................. 53
4.2.3 POST Deposit......................................................................................................... 54
4.2.4 POST Withdraw...................................................................................................... 55
4.2.5 POST PullLog......................................................................................................... 57
4.2.6 POST FlagLog........................................................................................................ 59
4.2.7 POST PullLogByTimestamp................................................................................... 60
4.3 Transaction Log Pulling Mechanism................................................................................ 64
4.4 Log Pulling by Timestamp Mechanism............................................................................ 65
5. Reconciliation........................................................................................................................ 67
5.1 Bet Transaction................................................................................................................67
5.2 Rollback Transaction....................................................................................................... 67
5.3 Game Result Transaction................................................................................................ 67
5.4 Bonus Transaction........................................................................................................... 67
6. MD5 Hashing.......................................................................................................................... 69
6.1 For C#..............................................................................................................................69
6.2 For Javascript.................................................................................................................. 70
6.3 For PHP........................................................................................................................... 70
6.4 For Python....................................................................................................................... 70
6.5 For Bash.......................................................................................................................... 71
6.6 For Ruby.......................................................................................................................... 71
6.7 For Java...........................................................................................................................72
6.8 For Swift...........................................................................................................................73
6.9 For Kotlin......................................................................................................................... 73
7. Appendix................................................................................................................................ 75
7.1 Supported Language Code..............................................................................................75
7.2 Supported Currency Code............................................................................................... 76
7.3 Status / Error Code.......................................................................................................... 77
7.3.1 Status Code from Provider......................................................................................77
7.3.2 Status Code from Operator.....................................................................................78
7.4 Game Type (Game Category)......................................................................................... 78
7.5 Game Result Type........................................................................................................... 78
7.6 Rollback Type.................................................................................................................. 79
Version Control
Version Description Modified by Date
V3.0 -Combine both seamless and fund transfer into 1 documentation Jack 21/08/2023
-Create section for 3 different purposes API (Generic, Seamless
and Fund Transfer)
-Add missing information about game session behaviour,
transaction id uniqueness, player id requirement, etc.
-Update auth token field in game login, and other seamless
callback request
-Add day summary API
-Add sequence diagram and details step for log pulling
mechanism
-Add reconciliation definition
V3.2.2 -Add 2.2.2 GET GameList, GET request to retrieve demo only All Wallet Jack 29/09/2023
gamelist
-Add 7.5 Game Result Type and 7.6 Rollback Type
V3.3.1 -Add 2.1.5 POST KickPlayer API to kick player from game All Wallet Jack 16/10/2023
-Add 2.1.6 POST GetUnfinishedRound
-Add 2.1.7 POST CancelRound
V3.3.2 -Remove AuthToken request field on Seamless API (GameResult, Seamless WL 03/11/2023
Rollback, and CashBonus)
v3.3.5 -Modify 2.1.6 GetUnfinishRound Response All Wallet Kai Neng 18/12/2023
v3.3.6 -Add 4.2.7 PullLogByTimestamp Transfer Jack 09/01/2024
-Add 4.4 Log Pulling by Timestamp Mechanism
GetBalance This function facilitates the retrieval of a player's current balance. Required
Bet Checks if the player has enough funds and subtracts money from the player's Required
balance. Returns the value of updated balance.
GameResult Completion of a game round, the winning amount is added to the player's Required
balance, reflecting the conclusion of gameplay. The updated balance value is
returned.
Rollback In the event of a bet cancellation due to an unfinished game, this method Required
refunds the player's balance.
CashBonus Implemented in provider campaigns, tournaments, and cash drops, this method Required
informs the operator about a player's bonus winnings, leading to an increase in
the balance.
**REMARK: These APIs are exclusively intended for seamless wallet integration.
CreatePlayer This method allows registering a new player on the provider system. Optional
CheckBalance This method can get the current balance of the player in the provider system. Required
Deposit This method transfers funds into the player's balance within the provider Required
system.
Withdraw This method transfers funds out of the player’s balance within the provider Required
system.
PullLog Using this method, the operator gains the capability to retrieve players betting Optional
logs for fund transfer wallets..
FlagLog Using this method, the operator gains the capability to flag retrieved records, Optional
This action serves to prevent return of identical sets of betting logs when
invoking the PullLog method.
**REMARK: These APIs are exclusively intended for fund transfer wallet integration.
GetGameList Through this method, the operator gains the capability to retrieve a Optional
collection of accessible games from the provider's system.
GameLogin The operator invokes this method to obtain the game launch link. Required
GetTransactionDetails The operator employs this method to procure a report link presenting Optional
comprehensive transaction details by utilising the game result id.
KickPlayer The operator invokes this method to temporary kick player from continuing Optional
playing the game
GetUnfinishRound The operator invokes this method to retrieve list of unfinished game rounds Optional
held by player
CancelRound This method is designed to allow operators to cancel a game round based Optional
on its round ID.
CreateFreeRound Operators may utilise this method to grant players complimentary rounds in Optional
a variety of games.
CancelFreeRound Method that enables operators to revoke or nullify a previously granted free Optional
round.
GetFreeRoundInfoByPlayer This method allows operators to access detailed information about player's Optional
free rounds, aiding in better player management and engagement.
GetFreeRoundGames Retrieve a list of game information that are eligible for free rounds. Optional
GetFreeRoundDetails Retrieve all transaction information for a specific free round. Optional
1.4 Player ID
Player ID (PlayerId parameter) is a unique identifier of the user within the operator system. Before
sending to the provider any gaming related request operator must create it first and store it somewhere
inside the operator system. If a player is new and its account does not exist in the provider system it will
be created automatically on the base of the data sent by the operator server in the (CreatePlayer,
GameLogin) request. If a player account already exists in the provider database it will be updated with the
request data if necessary. Player id received in the provider system will be sent with all subsequent
requests to the operator system.
The provider's system Player Id field has a character limit of 50. It's advised to avoid sending more
characters than the specified limit.
Operator ID, secret key will be provided by provider for both production and test environments
The HTTPs service URL will be furnished by the provider for both production and test
environments. It takes the form of:
- Requests to the service should not be initiated from player browsers (end-users).
- IP addresses must be supplied to the provider for the purpose of whitelisting.
2.1 API Documentation
Through this method, the operator gains the capability to retrieve a collection of accessible games from
the provider's system.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
Game Array Game object array (Object field please refer following table)
GameCode String(50) Unique code of the game within the provider system
ImageUrl String(100 Indicates the URL from which the English version of the game image should be
) retrieved.
HasDemo Bool Indicates that this game is applicable for demo play
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Game": [
{
"GameCode": "10000",
"GameName": "Game name 001",
"GameType": 1,
"ImageUrl": "[Link]
"HasDemo": true
},
{
"GameCode": "10001",
"GameName": "Game name 002",
"GameType": 1,
"ImageUrl": "[Link]
"HasDemo": false
},
…
]
}
The operator invokes this method to obtain the game launch link.
Request parameters
Name Type Description Status
PlayerId String(50) Player’s Username from Operator (alphanumeric, normal symbol only & Required
no space allowed. (A-z, A-Z, 0-9, . _ $ - ?)
Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar Required
(Please refer Currency Code Table)
AuthToken String(500 The AuthToken serves to authenticate and validate a player's game Optional
) session. This token is added to callback requests made to the operator's
system, facilitating seamless execution on GetBalance, Bet and BuyIn
callback operations.
LaunchDemo Bool Indicate this game login should return demo launch URL. Default will be Optional
false
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"Ip": "[Link]",
"GameCode": "10001",
"Currency": "MYR",
"Lang": "en-us",
"RedirectUrl": "[Link]
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub",
"LaunchDemo": false
}
Response parameters
Name Type Description
Status Integer Status code
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Url": "[Link]
}
The operator uses this method to obtain a report link that provides comprehensive transaction details by
utilising the game result id. Launching the URL in any supported browser will display the game's
transaction information.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"TranId": "23250644"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Url": "[Link]
}
This method is designed to furnish a summarised overview of daily transactions, categorised by currency.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"Date": "2023-08-18T00:00:00Z"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
Trans Array Transaction object array (Object field please refer following table)
WinLose Decimal Winlose amount (Payout - Turnover), can be negative value (-ve)
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Trans": [
{
"CurrencyCode": "MYR",
"Turnover": 1.00,
"ValidTurnover": 1.00,
"Payout": 1.80,
"WinLose": 0.80
},
{
"CurrencyCode": "THB",
"Turnover": 1.00,
"ValidTurnover": 1.00,
"Payout": 1.80,
"WinLose": 0.80
},
…
]
}
Operators can utilise the KickPlayer method to temporarily kick players from continuing to play the game.
Please note that players are still able to login and continue playing the game in the next session.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
Operators can utilise the GetUnfinishedRound method to retrieve a list of unfinished rounds held by
players. Unfinished rounds are determined by the absence of a generated result for the particular round.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Rounds": [
{
"RoundId": "100000000",
“GameId” : “10000”,
“GameName” : “GameName 000”,
“Turnover” : 1.00
},
{
"RoundId": "100000001",
“GameId” : “10001”,
“GameName” : “GameName 001”,
“Turnover” : 1.00
},
],
}
Operators can use the CancelRound method to cancel rounds being held by players. Settled rounds
cannot be cancelled.
In the scenario where players may hold rounds to obtain maximum benefits from certain promotions,
operators may integrate these methods to retrieve a list of these held rounds and take necessary actions.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"RoundId": "100000001"
}
Response parameters
Name Type Description
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
Retrieve comprehensive information about a specific round. It provides detailed insights into various
aspects of a round, including the round has settled, has voided and the details of the round.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"RoundId": "100000001"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
RoundDetails Object RoundDetails object (Object field please refer following table)
ResultId Long Unique id for the result Noted: NULL if the round is unsettled or voided.
ResultTranDT String(50) DateTime for the result Noted: NULL if the round is unsettled or voided.
Payout Decimal Total Payout for the round Noted: NULL if the round is unsettled or voided.
{
"HasSettle": true,
"HasVoid": false,
"RoundDetails": {
"RoundId": 109850647,
"RoundTranDT": "2023-11-17 04:07:20",
"ResultId": 109850648,
"ResultTranDT": "2023-11-17 04:07:20",
"PlayerId": "UUDemoGuest3",
"GameCode": "10014",
"BetAmount": -200,
"Payout": 0,
“ProviderTimeZone”: “Singapore Standard Time”,
“ProviderRoundTranDT”: "2023-11-17T12:07:20.000+08:00"
“ProviderResultTranDT”: "2023-11-17T12:07:20.000+08:00"
},
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2023-11-17 04:08:42"
}
Each of these methods offers distinct advantages and may be chosen based on the operator's strategy,
target audience, and technical capabilities. The choice of method can impact user engagement and
accessibility, so it's important for operators to consider their specific goals when implementing demo
game launch options.
By utilising the "HasDemo" Field in the 2.1.1 GetGameList Method, operators can determine whether to
display a demo hyperlink or button that redirects players to the demo game.
To initiate a demo game session, operators can utilise the "LaunchDemo" Boolean Field in the 2.1.2
GameLogin Field to specify that this game login is for a demo session. It will trigger an "Invalid Game"
error if the game does not have a demo version available.
Operators can construct URLs based on the format described above and use them to retrieve supported
gamelist for demo play
Operators can construct URLs based on the format described above and use them to redirect players
directly to demo games.
Currency String(5) Eg: MYR: Malaysia Ringgit, SGD: Singapore Dollar Required
(Please refer Currency Code Table)
GameCode String(50) Unique Code of the game. (Pass 0 will return LobbyURL instead or Required
GameURL)
Operators may utilise this method to grant players complimentary rounds in a variety of games.
Request parameters
Name Type Description Status
GameCode String(50) Unique code of the game, it indicates which game the player will access Required
RoundType Integer Specifies the category or type of the round that is being created. Required
TotalRound Integer Specifies the total number of rounds that the player will receive as part of Required
the free round offer
BetValue Integer The value of a bet or wager associated with each round Required
ReferenceId String Parameter that can be used to reference or link the free round creation Required
request to a specific transaction or event
MaxWinAmount Decimal Specifies the highest total winnings a player can achieve during their Free Required
Round session.
ExpiryInterval Integer Specifies the duration of time in days for which the Free Round session Optional
remains valid and accessible to the player. (Noted: When this parameter is
not provided in the API request, the system will typically apply a default
value as part of its settings)
{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001",
"GameCode": "10001",
"RoundType": 1,
"TotalRound": 10,
"BetValue": 1,
"LineBet": 0.1,
"ReferenceId": "test",
"MaxWinAmount": 100.00,
"ExpiryInterval": 1
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
FreeRoundId Long Identifier associated with the created free round, allowing the operator to reference and
manage it.
ExpiryTimeStamp Long Indicates the Unix timestamp when the free round will expire or become unavailable
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"FreeRoundId": 123,
"ExpiryTimeStamp": 1694023495
}
Method that enables operators to revoke or nullify a previously granted free round.
Request parameters
Name Type Description Status
FreeRoundId Long Identifier associated with the created free round, allowing the operator to Required
reference and manage it.
{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001",
"FreeRoundId": 123
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
This method allows operators to access detailed information about player's free rounds, aiding in better
player management and engagement.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
FreeRoundInfos Array FreeRoundInfo object array (Object field please refer following table)
FreeRoundId Long Identifier associated with the created free round, allowing the operator to reference and
manage it.
GameCode String(50) Unique code of the game, it indicates which game the player will access
ExpiryTimeStamp Long Indicates the Unix timestamp when the free round will expire or become unavailable
RoundType Integer Specifies the category or type of the round that is being created.
BetValue Integer The value of a bet or wager associated with each round
CurrentRound Integer Specifies the current round within the free round gameplay, It indicates how many
rounds have been played.
TotalRound Integer Specifies the total number of rounds that the player will receive as part of the free round
offer
TotalWin Decimal Represents the cumulative winnings amount by the player using this free round.
Register = 0
OnGoing = 1
Completed = 2
Claimed = 3
Cancelled = 400
Expired = 500
{
"FreeRoundInfos": [
{
"FreeRoundId": 123,
"GameCode": "10001",
"ExpiryTimeStamp": 1694023495,
"RoundType": 1,
"BetValue": 1,
"LineBet": 0.1,
"CurrentRound": 0,
"TotalRound": 10,
"TotalWin": 0,
"Status": 0
}
],
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
Retrieve a list of game information that are eligible for free rounds.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
Games Array Game object array (Object field please refer following table)
AvailableRoundType Array AvailableRoundType object array (Object field please refer following table)
AvailableLineBet Array AvailableLineBet object array (Object field please refer following table)
RoundTypeName String(50) Label for the round type, providing a description of what each type represents
{
"Games": [
{
"GameCode": "10050",
"GameName": "Blessing of Tu",
"TotalLine": 40,
"AvailableRoundType": [
{
"RoundType": 1,
"RoundTypeName": "Normal"
}
],
"AvailableBetValue": [
1
],
"AvailableLineBet": [
{
"Currency": "MYR",
"LineBets": [
0.005,
0.01,
0.02,
0.03,
0.04,
0.05
]
}
]
}
],
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2023-09-19 12:27:17"
}
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"Signature": "8d3d050acf123op78a42328215872745",
"RequestDateTime": "2014-09-30 14:16:32",
"PlayerId": "Player001",
"FreeRoundId": 123
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
Trans Array FreeRoundDetailsInfo object array (Object field please refer following table)
MaxWinAmount Decimal Nullable, max win amount for this free round
GameId Integer Game Id of the game played for this free round
GameName String Name of the game played for this free round
RoundType String Type of the Round played (Normal or Buy Free Spin)
ProviderTranDt DateTime Date time of the free round transaction based on ProviderTimeZone
Example of JSON response
JSON
{
"Trans": [
{
"TranDateTime": "2023-09-19T14:25:59.4518465",
"GameId": 10050,
"GameName": “Game Name”,
"Turnover": 40,
"Payout": 0,
"WinLose": 40,
"RoundType": “Normal”,
"TranId": 1223,
"ProviderTimeZone":"Singapore Standard Time",
"ProviderTranDt":""2023-09-19T22:25:59.451+08:00"
}
],
"IsMaxWin": true,
"MaxWinAmount": 50,
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2023-09-30 09:41:37"
}
3. Seamless Wallet Integration API
This collection encompasses a suite of seamless APIs designed for the provider's gaming platform to
establish connections with players' wallets.
Operator ID, secret key will be provided by provider for both production and test environments
The HTTPs service URL should be provided by the Operator for the production and test
environments.
- Service requests originate exclusively from provider servers via multiple proxied machines.
- IP addresses will be furnished for whitelisting purposes.
Please whitelist these IP for according to the specific environment to allow provider outbound API
request to reach operator’s system
UAT
-[Link]
PROD
-[Link]
-[Link]
-[Link]
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.
AuthToken String(500 The AuthToken serves to authenticate and validate a player's game session. This token
) is added when the operator initiates gamelogin with AuthToken.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub"
}
Response parameters
Name Type Description
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
Checks if the player has enough funds and subtracts money from the player's balance. Returns the value
of updated balance.
Important: The call is idempotent, i.e. sending a bet again with the same BetId only creates one transaction. Operator’s
system must not process the same transaction which has the same BetId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.
RoundId Long Unique round id of the game round, multiple players may share the same round id
BetId Long Unique bet transaction id of the game round on provider system
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
AuthToken String(500 The AuthToken serves to authenticate and validate a player's game session. This token
) is added when the operator initiates gamelogin with AuthToken.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"RoundId": 438664,
"BetId": 438665,
"BetAmount": 0.2000,
"ExchangeRate": 1.0000,
"GameCode": "10000",
"GameType": “Slots”,
"TranDateTime": "2014-09-30 14:16:32",
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}
Response parameters
Name Type Description
OldBalance Decimal Player’s balance before deduct bet amount (eg: 1233.5000)
NewBalance Decimal Player’s balance after deducted bet amount (eg: 1233.5000)
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 98.0000
}
Completion of a game round, the winning amount is added to the player's balance, reflecting the
conclusion of gameplay. The updated balance value is returned.
Important: The call is idempotent, i.e. sending the result again with the same ResultId creates only one
[Link]’s system must not process the same transaction which has the same ResultId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
ResultId Long Unique result transaction id of the game round on provider system
RoundId Long Unique round id of the game round, multiple players may share the same round id
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"ResultId": 438666,
"BetId": 438665,
"RoundId": 438664,
"GameCode": "10000",
"GameType": “Slots”,
"GameName": "Game 001",
"ResultType": 0,
"BetAmount": 0.2000,
"ValidBetAmount": 0.2000,
"Payout": 0.0000,
"WinLose": -0.2000,
"ExchangeRate": 1.0000,
"TranDateTime": "2014-09-30 14:16:32",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00",
"RoundType": 0
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 102.0000
}
In the event of a bet cancellation due to an unfinished game, this method refunds the player's balance.
Important: The call is idempotent, i.e. sending the rollback again with the same BetId creates only one
[Link]’s system must not process the same rollback transaction which has the same BetId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.
RoundId Long Unique round id of the game round, multiple players may share the same round id
BetId Long Unique bet transaction id of the game round on provider system
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"RoundId": 438664,
"BetId": 438665,
"BetAmount": 0.2000,
"ExchangeRate": 1.0000,
"GameCode": "10000",
"GameType": “Slots”,
"TranDateTime": "2014-09-30 14:16:32",
"RollbackType": 1,
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
OldBalance Decimal Player’s balance before deduct bet amount (eg: 1233.5000)
NewBalance Decimal Player’s balance after deducted bet amount (eg: 1233.5000)
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 98.0000
}
Implemented in provider campaigns, tournaments, and cash drops, this method informs the operator
about a player's bonus winnings, leading to an increase in the balance.
Important: The call is idempotent, i.e. sending the bonus again with the same TranId creates only one
[Link]’s system must not process the same transaction which has the same TranId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"TranId": 438665,
"BonusId": "TNN2023",
"BonusName": “Tournament 2023”,
"Payout": 200.0000,
"ExchangeRate": 1.0000,
"TranDateTime": "2014-09-30 14:16:32",
"Result": “1st place”,
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
OldBalance Decimal Player’s balance before add payout amount (eg: 1233.5000)
NewBalance Decimal Player’s balance after added payout amount (eg: 1233.5000)
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 200.0000
}
Checks if the player has enough funds and subtracts money from the player's balance. Returns the value
of updated balance.
Important: The call is idempotent, i.e. sending a bet again with the same BetId only creates one transaction. Operator’s
system must not process the same transaction which has the same BetId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5
hashing and validation purposes. Please refrain from utilising it for transactional
records.
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
AuthToken String(500 The AuthToken serves to authenticate and validate a player's game session. This token
) is added when the operator initiates gamelogin with AuthToken.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"SessionId": 438665,
"GameCode": "10000",
"Amount": 0.2000,
"TranDateTime": "2014-09-30 14:16:32",
"AuthToken":
"0rV2LzVUoLKCM3tbLvTkZW6ElA9jFkrhrm18ABouI27aG2gnEusTiMUfTLe0c1UxwWWBbkErK9qTKhCHxU
svCJUKjSywChcIz11Kx2vkdNwsdT1oU3PIUgZ8dyWQUQeiucw9E0odMvXpFYo3ub",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
OldBalance Decimal Player’s balance before deduct bet amount (eg: 1233.5000)
NewBalance Decimal Player’s balance after deducted bet amount (eg: 1233.5000)
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 98.0000
}
Completion of a game round, the winning amount is added to the player's balance, reflecting the
conclusion of gameplay. The updated balance value is returned.
Important: The call is idempotent, i.e. sending the result again with the same ResultId creates only one
[Link]’s system must not process the same transaction which has the same ResultId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
TranId Long Unique result transaction id of the game round on provider system
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"TranId": 438666,
"SessionId": 438665,
"GameCode": "10000",
"Payout": 0.2000,
"TranDateTime": "2014-09-30 14:16:32",
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}
Response parameters
Name Type Description
Status Integer Status code
(Please refer operator Error / Status Code Table)
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"OldBalance": 100.0000,
"NewBalance": 102.0000
}
Completion of a game round, the bet details will be returned and won't affect the player's balance.
Important: The call is idempotent, i.e. sending the result again with the same ResultId creates only one
[Link]’s system must not process the same transaction which has the same ResultId twice.
Request parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
ResultId Long Unique result transaction id of the game round on provider system
TranDateTime DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider system.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
"Currency": "MYR",
"ResultId": 438666,
"SessionId": 438665,
"GameCode": "10000",
"TotalAmount": 0.2000,
"TotalPayout": 0.0000,
"TranDateTime": "2014-09-30 14:16:32",
"isRoundEnd": false,
"ProviderTimeZone": "Singapore Standard Time",
"ProviderTranDt": "2014-09-30T22:16:32.000+08:00"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
3.3 Flow of placing bets for seamless
In the provider's seamless integration system, a bet undergoes a series of steps before generating results
for players. The process begins with the player placing a bet, followed by the provider system initiating the
3.2.1 GetBalance method to verify if the player has sufficient funds. If the player's balance is adequate,
the provider system then triggers the 3.2.2 Bet method. Upon successful deduction of the balance, the
provider system generates the result for the bet round and proceeds to settle with the operator system
using the 3.2.3 GameResult method.
Finally, the player views the outcome of the bet round on their screen.
Throughout the seamless integration process, the operator system carries the responsibility of ensuring
that balances are accurately updated using the fields specified in the respective APIs. Additionally, the
operator system must guarantee that idempotent calls are not processed more than once, to prevent
unintended duplications. Transaction uniqueness can be confirmed using the transaction id defined within
the transactional APIs.
4. Fund Transfer Wallet Integration API
The operator is empowered to leverage this API for facilitating fund transfers to players' balances within
the Game Provider's wallet ecosystem.
Operator ID, secret key will be provided by provider for both production and test environments
The HTTPs service URL will be furnished by the provider for both production and test
environments. It takes the form of:
- Requests to the service should not be initiated from player browsers (end-users).
- IP addresses must be supplied to the provider for the purpose of whitelisting.
The CreatePlayer method for operators to establish new player accounts within the provider's system.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
Operators can utilise the CheckBalance method to ascertain a player's balance within the provider's
system.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001"
}
Response parameters
Name Type Description
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"CurrentBalance": 0.00,
"Currency": "MYR"
}
The Deposit method, provided by the provider, enables operators to add funds to a player's account
within the provider's system.
Request parameters
Name Type Description Status
Amount String(50) Amount to deposit into player’s FundTransfer account (Eg: Required
12345678.1234)
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"Amount": "100.00",
"ReferenceId": "13311511"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"CurrentBalance": 0.00,
"Currency": "MYR"
}
Operators can leverage the Withdraw method to initiate fund withdrawals from a player's account within
the provider's system.
Request parameters
Name Type Description Status
OperatorId String(20) Operator Id Required
Amount String(50) Amount to withdraw from player’s FundTransfer account (Eg: Required
12345678.1234)
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"PlayerId": "Player001",
"Amount": "100.00",
"ReferenceId": "13311511"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"CurrentBalance": 0.00,
"Currency": "MYR"
}
Using this method, the operator gains the capability to retrieve players betting logs for fund transfer
wallets.
**For detailed implementation guidance, please consult section 4.3 Transaction Log Pulling Mechanism of the
documentation.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745"
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
Logs Array Transaction object array (Object field please refer following table)
TranDt DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider side.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
GameCode String(50) Unique code of the game within the provider system
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"Logs": [
{
"TranId": 133133134,
"PlayerId": "DemoPlayer",
"Turnover": 3.60,
"ValidTurnover": 3.60,
"Payout": 1.80,
"WinLose": -1.80,
"TranDt": "2020-10-10 09:30:00",
"TranType": 0,
"GameCode": "1000",
"GameType": 1,
"GameName": "Slots Game Name",
“ProviderTimeZone”: “Singapore Standard Time”,
“ProviderTranDt”: "2024-01-02T14:55:26.1212204+08:00",
“RoundType”: 0
},
…
]
}
Using this method, the operator gains the capability to flag retrieved records, This action serves to
prevent return of identical sets of betting logs when invoking the PullLog method.
**For detailed implementation guidance, please consult section 4.3 Transaction Log Pulling Mechanism of the
documentation.
Request parameters
Name Type Description Status
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"TransactionIds": [133123, 133124, …]
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37"
}
Using this method, the operator gains the capability to retrieve players betting logs for fund transfer
wallets according to utc+0 timestamp.
**For detailed implementation guidance, please consult section 4.4 Log Pulling by Timestamp Mechanism of the
documentation.
Request parameters
Name Type Description Status
**Start with 1
{
"OperatorId": "DemoAccount",
"RequestDateTime": "2014-09-30 14:16:32",
"Signature": "8d3d050acf123op78a42328215872745",
"FromTs": 1691500000,
"Page": 1
}
Response parameters
Name Type Description
**Using current UTC+0 datetime, this field is exclusively intended for MD5 hashing
and validation purposes. Please refrain from utilising it for transactional records.
FromTs Integer Indicate current transaction logs is from and to which timestamp range
ToTs Integer Indicate current transaction logs is from and to which timestamp range
Logs Array Transaction object array (Object field please refer following table)
TranDt DateTime Actual Transaction UTC DateTime (yyyy-MM-dd HH:mm:ss) on Provider side.
**This is the actual date and time when the bets were placed, verified within the
provider's game system.
GameCode String(50) Unique code of the game within the provider system
{
"Status": 200,
"Description": "Success",
"ResponseDateTime": "2016-09-01 09:41:37",
"FromTs": 1691500000,
"ToTs": 1791500000,
"Logs": [
{
"TranId": 133133134,
"PlayerId": "DemoPlayer",
"Turnover": 3.60,
"ValidTurnover": 3.60,
"Payout": 1.80,
"WinLose": -1.80,
"TranDt": "2020-10-10 09:30:00",
"TranType": 0,
"GameCode": "1000",
"GameType": 1,
"GameName": "Slots Game Name",
“ProviderTimeZone”: “Singapore Standard Time”,
“ProviderTranDt”: "2024-01-02T14:55:26.1212204+08:00",
“RoundType”: 0
},
…
]
}
4.3 Transaction Log Pulling Mechanism
The Fund Transfer wallet provides a log-pulling method through the 4.2.5 PullLog and 4.2.6 FlagLog
methods. These methods facilitate the retrieval of players' betting logs. While optional, operators are
mandated to implement them to receive player betting logs. This process involves a series of steps that
must be followed accurately to ensure the correct acquisition of the betting logs.
Step 1:
Operator initiates the process of fetching betting logs by invoking the PullLog API.
Step 2:
Provider's system returns a maximum of 1000 unflagged betting logs.
Step 3:
Operator receives the betting logs and subsequently performs internal processes, which may involve
inserting or summarising transactions.
Step 4:
Operator initiates the FlagLog process to mark transactions within the provider's system as flagged or
processed. This action helps prevent the re-pulling of the same transactions during subsequent retrieval
attempts.
If the operator encounters difficulty in processing certain transactions, they have the option to exclude
those transactions from insertion in the FlagLog method. This choice allows the transactions to be
retrieved once more during the subsequent pull process.
Step 5:
Upon successful execution of the FlagLog method by the provider's system, the operator's system may
proceed to repeat step 1: initiating the PullLog API. This facilitates the retrieval of the next batch of
transactions.
It is recommended that the operator considers waiting for an additional 5-10 seconds before initiating the
next PullLog if the method returns fewer than 1000 betting logs. This practice assists in alleviating the
load on the provider's system.
Step 1:
Operator initiates the process of fetching betting logs by invoking the PullLogByTimestamp API.
Step 2:
Provider's system returns a maximum of 1000 unflagged betting logs.
Step 3:
Operator receives the betting logs and subsequently performs internal processes, which may involve
inserting or summarising transactions.
Step 4:
Operator should check whether the transaction array has more than 0 entries, indicating the possibility of
additional betting logs on subsequent pages. If true, the operator should initiate the API again by
incrementing the Page by 1.
It is recommended that the operator considers waiting for an additional 5-10 seconds before initiating the
next PullLogByTimestamp if the method returns 0 betting logs. This practice assists in alleviating the load
on the provider's system.
5. Reconciliation
If a request times out because of internet connection problems, or contains relevant error code (refer
status / error codes), then the provider system will follow a process described below, to reconcile the
action.
Important: In scenarios where the Operator encounters retry API calls within the reconciliation process, it is imperative to
ensure that transactions with the same reference id or transaction id are not processed more than once. The Operator can
implement the use of appropriate error codes to halt the reconciliation process effectively.
Additionally, the operator system will periodically receive rollback requests once every hour,
autonomously and independently of ongoing game sessions. This periodicity ensures the accurate
delivery of such transactions.
The operator system retains the capability to reply with either a "rollback success" confirmation or an error
message such as "transaction not found," indicating that the provider system has effectively terminated
the transaction.
It's imperative to recognize that settled transactions are irreversible and cannot be cancelled. The
provider's system is equipped with an autonomous job that engages in continuous retry attempts,
happening every hour, to ensure the successful delivery of game result transactions to the operator
system.
using System;
using [Link];
using [Link];
class Program
{
static void Main()
{
string functionName = "GameLogin";
string requestDateTime = "2023-06-09 12:34:56";
string operatorId = "op1";
string secretKey = "ABC123";
string playerId = "player123";
[Link](hash);
}
}
6.2 For Javascript
javascript
[Link](hash);
<?php
$functionName = "GameLogin";
$requestDateTime = "2023-06-09 12:34:56";
$operatorId = "op1";
$secretKey = "ABC123";
$playerId = "player123";
echo $hash;
?>
import hashlib
functionName = "GameLogin"
requestDateTime = "2023-06-09 12:34:56"
operatorId = "op1"
secretKey = "ABC123"
playerId = "player123"
print(hash)
#!/bin/bash
functionName="GameLogin"
requestDateTime="2023-06-09 12:34:56"
operatorId="op1"
secretKey="ABC123"
playerId="player123"
stringToHash="${functionName}${requestDateTime}${operatorId}${secretKey}${playerId}"
echo $hash
require 'digest/md5'
function_name = "GameLogin"
request_date_time = "2023-06-09 12:34:56"
operator_id = "op1"
secret_key = "ABC123"
player_id = "player123"
# Concatenate the values
string_to_hash = function_name + request_date_time + operator_id + secret_key + player_id
puts hash_value
import [Link];
import [Link];
[Link](hashValue);
}
return [Link]();
}
}
6.8 For Swift
swift
import Foundation
import CommonCrypto
_ = [Link] { bytes in
CC_MD5([Link], CC_LONG([Link]), &digest)
}
print(hashValue)
import [Link]
fun main() {
val functionName = "GameLogin"
val requestDateTime = "2023-06-09 12:34:56"
val operatorId = "op1"
val secretKey = "ABC123"
val playerId = "player123"
println(hashValue)
}
7. Appendix
7.1 Supported Language Code
Language Language Code
English en-us
Thai th-th
Vietnamese vi-vn
Indonesian id-id
Malay ml-my
Japanese ja-jp
Korean ko-kr
Nepal ne-ne
Portuguese pt-pt
German de-de
Spanish es-es
Maltese mt-mt
Swedish sv-se
Finnish fi-fl
Norwegian nb-no
Irish ga-ie
Dutch nl-nl
Danish da-dk
7.2 Supported Currency Code
Currency Code Description
RMB RenMinBi
EUR Euro
JPY Japan Yen
200 OK
200 OK
**The operator can employ this error code to signify that a player has attained the maximum
winning limit on the operator's platform.
0 Others
1 Slots
2 Arcade
3 Table
4 Event
5 Mini Game
6 Fish Arcade
0 Normal Round