MAL0147-1-Transparent Account Integration Manual
MAL0147-1-Transparent Account Integration Manual
MAL0147-1-Transparent Account Integration Manual
TRANSPARENT ACCOUNT
INTEGRATION MANUAL
Play’n GO
Transparent Account Page 2 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Table of Contents
1 Introduction ....................................................................................................... 4
2 Important Information ........................................................................................ 4
3 Integration overview .......................................................................................... 5
3.1 Conceptual Integration Overview .................................................................. 5
3.2 Integration Instructions ................................................................................. 5
3.3 Test Cases ................................................................................................... 6
3.4 Authentication ............................................................................................... 6
3.5 Session handling .......................................................................................... 7
3.6 Common Game Session ................................................................................... 8
4 Services .......................................................................................................... 11
4.1 Authenticate ............................................................................................... 11
4.1.1 Authenticate Service Details .................................................................................12
www.playngo.com | info@playngo.com
Transparent Account Page 3 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
6 Supplement ..................................................................................................... 34
6.1 Status Codes .............................................................................................. 34
6.2 Status Message .......................................................................................... 35
6.3 Session States............................................................................................ 36
6.4 Transaction Types ...................................................................................... 36
www.playngo.com | info@playngo.com
Transparent Account Page 4 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
1 Introduction
The objective of this manual is to provide the reader with the information necessary
to integrate with a Play'n GO Game system. The typical reader is a technical
manager and / or staff that will carry out the integration work.
Using the transparent account, the integration is done via POX/XML as transport
format.
2 Important Information
Below is stated important information that the reader must keep in mind during the
rest of the integration work. Please refer back to this section to avoid “simple” errors
in the integration.
- Play’n GO is responsible to keep the APIs backwards compatible as far as
possible. If backwards compatibility isn’t possible when creating a new
feature, consumers will be informed in appropriate time.
o The definition of backwards compatibility is that Play’n GO must be
able to do “passive changes” e.g. add non-mandatory parameters in
requests or null-able properties in the response and this should not
interrupt the service.
- Operator Account System must allow that a game session is initiated by a
Release call. Please see section 3.5 for more information.
- The DateTime is specified in UTC 24h and is handled as a String with the
format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
- Money is in general transferred using strings with two-decimal accuracy. The
monetary amounts are always truncated and not rounded. The exception is
for jackpotLoss in release call which can be configured to be transferred using
strings with four-decimal accuracy. Money must always be in the range
between -922,337,203,685,477.58 to 922,337,203,685,477.58.
- Any error messages that should be displayed for the player should be
returned in the language that the language parameter specify to give the user
the best possible experience.
- When settling monthly gaming between Operator and Play’n GO it must be
considered that Play’n GO Settlement report is based on finished rounds
while many back-office systems are based on finished sessions. To be able to
get an appropriate comparison, the ‘real’ parameter send in Reserve and
Release services must be stored by Operator Account System.
www.playngo.com | info@playngo.com
Transparent Account Page 5 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
3 Integration overview
3.1 Conceptual Integration Overview
See the below overview of the calls being made between all parts throughout the
entire system.
www.playngo.com | info@playngo.com
Transparent Account Page 6 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
3.4 Authentication
The Authenticate call makes a request to the Operator Account System to validate
the user information upon start of a new game.
The Authenticate call validates the information sent in the ‘username’ or ‘ticket’
parameter, as it was received when starting the game. It can be a token, session or
reference depending on what the Operator Account System supports. For security
reasons, this random token created by the Operator Account System must not have
a “lifetime” of more than 5 minutes.
All calls between the Game, Game Server and the Operator Account System
contains a parameter called ‘AccessToken’. The AccessToken is static and
negotiated between Play’n GO and the Operator at integration setup.
The AccessToken should be a unique string validated in the Operator Account
System on each call from the Game or Game Server. The reason is to ensure that
the call comes from Play’n GO.
1. Player logs on to Operator portal.
2. Player starts a game. Operator Account System generates and stores an
Authentication token.
3. Operator portal redirect and launch a game, passing the token from the
Operator Account System as a parameter (“username” for desktop, “ticket” for
mobile).
4. Server Communication is initiated.
5. Game asks server to validate the token, the game server ask Operator
Account System to validate the token.
6. Game loads when the authentication is validated.
www.playngo.com | info@playngo.com
Transparent Account Page 7 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
If the ticket is valid Operator Account System returns a response similar as below.
<authenticate>
<externalId>554433</externalId>
<statusCode>0</statusCode>
<statusMessage>ok</statusMessage>
<userCurrency>EUR</userCurrency>
<nickname>testUser</nickname>
<country>SE</country>
<birthdate>1970-01-01</birthdate>
<registration>2010-05-05</registration>
<language>en</language>
<affiliateId></affiliateId>
<real>1234.56</real>
</authenticate>
Since the External ID is the common player identifier between the game, game
server and the Operator Account System it must be included in all calls between the
system. For instance, when a player launches a game and then another one the
same External ID must be sent
Player A starts a game using ticket ZXY
Operator Account System returns ExternalID 10
Player A starts a game using ticket YZA
Operator Account System return ExternalID
Important note: ExternalID is case sensitive and must be the same in all calls.
www.playngo.com | info@playngo.com
Transparent Account Page 8 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Please note that for some games, a game round can be initiated by a release call
without a preceding reserve call. Operator Account System must support this
scenario. An example of this scenario is the game Tower Quest were the player
collects items in order to activate free spins. When the free spin is activated a release
call is sent to the Operator Account System with the result without a preceding
reserve call. This can also happen if a Free Game Offer is received by the Player but
not started, in this case a release call can be sent without a reserve when trying to
close the game session.
When game session is open the session will have state=0. And game session will be
active for more gameplay. Note that if a game session has Free Games, the session
will not be closed until all Free Games are used, this is to keep track of the progress
of the Free Games.
The game session is ended with a separate Release call that specify a status that the
session is closed (see section 4.3). Parameters real and roundId are always 0 for this
Release call which also includes summarized game session data in the parameters:
- totalGain
- totalLoss
- numRounds
- freegameGain
- freegameLoss
The Operator Account System can connect an own game session reference in the
externalGameSessionId parameter.
If no game rounds where played in the game session, the session is closed by a
Release call sending state=1 and numRounds =0.
The Operator Account System need to respond in up to 10 seconds to our requests
until the call will timeout.
As well, the Player idle is 5 minutes at default, during which, if no activity is taking
place in the game, Play'n GO will close the session.
Play’n GO will close game sessions once the correct parameters are sent by the
Operator to ensure correct session handling. However, when this is not possible due
to Operator system not resolving such requests, a 90-day counter will initiate from
the last time the session was active and once elapsed, sessions will be voided
automatically by the system.
www.playngo.com | info@playngo.com
Transparent Account Page 9 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Also, in introducing this feature, additional fields to the integration was added to the
Reserve, Release and Cancel Reserve calls. These are marked in the tables below
in yellow.
If your integration hasn’t been updated yet to have Common Game Session activated
these fields will not be sent. Please refer to your Play’n GO representative for any
questions.
3.7 Jurisdiction
A player’s Jurisdiction is based on the Country field that the Operator sends in the
Authentication response. This decides which Jurisdiction the player will be in and
also which configurations in that particular Jurisdiction will apply.
It is also important to note that any Open Game Sessions are locked to the
Jurisdiction that they started with initially.
www.playngo.com | info@playngo.com
Transparent Account Page 10 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com
Transparent Account Page 11 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
3.7.2 Reconciliation
If any transaction fails to receive a response in a number of retries it is held open to
be reconciled at a later time. Each call is performed with a unique state to provide full
security in case of an extended failure in communication or hardware.
Transaction Reconciliation
4 Services
Below are the integration services described in detail.
4.1 Authenticate
When a player logs in to a product the username should be a session token
generated by the receiving party since the information is only tunneled. If such a
session token is used it should be generated to be completely random, valid only
once and for no more than 5 minutes.
Any error messages should be returned in the language that the language parameter
specify to give the user the best possible experience. Please find language codes in
Currency, Country & Language Appendix.
www.playngo.com | info@playngo.com
Transparent Account Page 12 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example
<authenticate>
<username>CAA13F18-713C-443C-AEFD-0AE52D29A3CF</username>
<productId>1</productId>
<clientIP>100.101.102.103</clientIP>
<contextId>VIP</contextId>
<accessToken>secrettoken</accessToken>
<language>en_GB</language>
<gameId>53</gameId>
<channel>1</channel>
</authenticate>
www.playngo.com | info@playngo.com
Transparent Account Page 13 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Response
The following table describes the parameters returned when responding to the
Authenticate service request.
www.playngo.com | info@playngo.com
Transparent Account Page 14 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example
<authenticate>
<externalId>554433</externalId >
<statusCode>0</statusCode>
<statusMessage>ok</statusMessage>
<userCurrency>EUR</userCurrency>
<nickname>MaxPower</nickname>
<country>SE</country>
<birthdate>1970-01-01</birthdate>
<registration>2010-05-05</registration>
<language>EN</language>
<affiliateId></affiliateId>
<real>1234.56</real>
<externalGameSessionId></externalGameSessionId>
<region>3</region>
</authenticate>
4.2 Reserve
Transfer money from provider to be used in game sessions. Please see section 2 for
more information. If a game supports additional bets within the same game round,
additional Reserve calls can be included in game round. All additional bets are added
as a new transaction. Example, where additional bets occur is in Black Jack and
Video Bingo games.
www.playngo.com | info@playngo.com
Transparent Account Page 15 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example – Reserve
www.playngo.com | info@playngo.com
Transparent Account Page 16 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com
Transparent Account Page 17 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
jackpots Optional
Tag contains one or more
jackpot tags.
jackpots/jackpot Optional
Tag contains information
about the jackpot.
Example
<reserve>
<externalId>554433</externalId>
<productId>1</productId>
<transactionId>43210</transactionId>
<real>15.00</real>
<currency>EUR</currency>
<gameId>53</gameId>
<gameSessionId>237842347</gameSessionId>
<contextId>VIP</contextId>
<accessToken>secrettoken</accessToken>
<roundId>87654321</roundId>
<externalGameSessionId></externalGameSessionId>
<channel>1</channel>
<freegameExternalId>123</freegameExternalId>
<actualValue>0.10</actualValue>
<jackpots>
<jackpot>
<id>1</id>
<loss>0.10</loss>
</jackpot>
<jackpot>
<id>2</id>
<loss>0.20</loss>
</jackpot>
</jackpots>
www.playngo.com | info@playngo.com
Transparent Account Page 18 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
</reserve>
Response
Example
<reserve>
<externalTransactionId>56789</externalTransactionId>
<real>1219.56</real>
<statusCode>0</statusCode>
<statusMessage>ok</statusMessage>
</reserve>
www.playngo.com | info@playngo.com
Transparent Account Page 19 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
4.3 Release
This is the way the Gaming System transfer back money to the Operator Account
System together with the associated game session data.
Note that at game session close, a separate Release call is made that sends a
summary of the additional parameters totalGain, totalLoss, numRounds,
freegameGain and freegameLoss. This Release call will always get state=1.
Example Release
www.playngo.com | info@playngo.com
Transparent Account Page 20 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
sent if
integration.corexternal.sendretryflag
config is set.
www.playngo.com | info@playngo.com
Transparent Account Page 21 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com
Transparent Account Page 22 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
1 = Desktop
2 = Mobile
3 = Mini Game
5 = Embedded in Native app
jackpots Optional
Tag contains one or more jackpot
tags.
jackpots/jackpot Optional
Tag contains information about the
jackpot.
Example
<release>
<externalId>554433</externalId>
<productId>1</productId>
<transactionId>543210</transactionId>
<real>200.00</real>
<currency>EUR</currency>
<gameSessionId>237842347</gameSessionId>
<contextId>VIP</contextId>
<state>1</state>
<totalLoss>150.00</totalLoss>
<totalGain>246.90</totalGain>
<numRounds>10</numRounds>
<type>0</type>
<gameId>53</gameId>
<accessToken>secrettoken</accessToken>
<roundId>87654321</roundId>
<jackpotGain>200.00</jackpotGain>
<jackpotLoss>12.34</jackpotLoss>
<jackpotGainSeed>25.00</jackpotGainSeed>
<jackpotGainId>5623</jackpotGainId>
www.playngo.com | info@playngo.com
Transparent Account Page 23 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
<freegameExternalId>abc123</freegameExternalId>
<turnover>1</turnover>
<freegameFinished>1</freegameFinisihed>
<freegameGain>2.34</freegameGain>
<freegameLoss>0.00</freegameLoss>
<externalGameSessionId></externalGameSessionId>
<channel>1</channel>
<freegameTotalGain>1.50</freegameTotalGain>
<jackpots>
<jackpot>
<id>1</id>
<win>1000.00</win>
<seed>0.50</seed>
</jackpot>
<jackpot>
<id>2</id>
<win>500.00</win>
<seed>0.50</seed>
</jackpot>
</jackpots>
</release>
Response
www.playngo.com | info@playngo.com
Transparent Account Page 24 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example
<release>
<externalTransactionId>567890</externalTransactionId>
<real>1331.46</real>
<statusCode>0</statusCode>
</release>
4.4 Balance
Get current account balances available to transfer to specified provider. This is made
by game and occurs at no specific time. This call is events made by game, example
when the game is loaded or the balance is running low.
Example
<balance>
www.playngo.com | info@playngo.com
Transparent Account Page 25 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
<externalId>554433</externalId>
<productId>1</productId>
<currency>EUR</currency>
<gameId>54</gameId>
<accessToken>secrettoken</accessToken>
<externalGameSessionId></externalGameSessionId>
</balance>
Response
Example
<balance>
<real>1331.46</real>
<statusCode>0</statusCode>
</balance>
www.playngo.com | info@playngo.com
Transparent Account Page 26 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
When a call fails or times out, we keep retrying during 10 seconds (usually two
retries). If this is reserve failing, then SessionMaintenance will call the
CancelReserve. If then the CancelReserve fails, it will also retry during 10 seconds.
After that SessionMaintenance might call the CancelReserve again, while the
session is active.
When the session is inactive and the user tries to resume (log in), CancelReserve
will be called again. This is because the User cannot resume the game session until
CancelReserve is resolved.
Example – CancelReserve
www.playngo.com | info@playngo.com
Transparent Account Page 27 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com
Transparent Account Page 28 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
jackpots Optional
Tag contains one or more jackpot
tags.
jackpots/jackpot Optional
Tag contains information about the
jackpot.
Example
<cancelReserve>
<externalId>554433</externalId>
<productId>1</productId>
<transactionId>43210</transactionId>
<real>123.45</real>
<currency>EUR</currency>
<accessToken>secrettoken</accessToken>
<roundId>4324243</roundId>
<gameId>54</gameId>
<externalGameSessionId></externalGameSessionId>
<channel>1</channel>
<freegameExternalId>123</freegameExternalId>
<actualValue>0.10</actualValue>
<jackpots>
<jackpot>
<id>1</id>
<loss>0.10</loss>
</jackpot>
<jackpot>
<id>2</id>
<loss>0.50</loss>
</jackpot>
</jackpots>
</cancelReserve>
Response
Parameter Type Description
www.playngo.com | info@playngo.com
Transparent Account Page 29 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example
<cancelReserve>
<externalTransactionId>56789</externalTransactionId>
<statusCode>0</statusCode>
</cancelReserve>
4.6 GetUnfinishedGames
If there is a need for information about a players’ unfinished games i.e. game rounds
that are not finished by the player, this call can be used. Note that player can
reconnect to an unfinished game and continue play the round.
There exists a built-in method that closes unfinished games. When this happens, the
bet is ‘voided’ and send from the gaming system to the Operator Account System.
This is configured in the gaming system and executed after the configured amount of
days.
Example –Unfinished game play continue
www.playngo.com | info@playngo.com
Transparent Account Page 30 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com
Transparent Account Page 31 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://playngo.com/v1">
<soapenv:Header/>
<soapenv:Body>
<v1:GetUnfinishedGames>
<v1:ExternalId>TestUser</v1:ExternalId>
</v1:GetUnfinishedGames>
</soapenv:Body>
</soapenv:Envelope>
Response
www.playngo.com | info@playngo.com
Transparent Account Page 32 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
Example
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetUnfinishedGamesResponse xmlns="http://playngo.com/v1">
<OpenGameIds xmlns:i="http://www.w3.org/2001/XMLSchema-
instance">
<OpenGameId>
<GameId>307</GameId>
<Gid>firejoker</Gid>
<Serialized>true</Serialized>
<MobileGame>false</MobileGame>
<Bet>
<Value>1425.0000</Value>
<Currency>EUR</Currency>
</Bet>
<GameName>Fire Joker</GameName>
<GameType>casino</GameType>
</OpenGameId>
</OpenGameIds>
</GetUnfinishedGamesResponse>
</s:Body>
</s:Envelope>
5 Reload Functionality
There are two scenarios where a game needs to be reloaded. When a player
receives multiple free games in the same game or if a player receives a free game
during an ongoing session in the same game e.g. as an Achievement prize. A
reloadgame function is available for Desktop games while a reloadgame URL
parameter can be used for mobile games. The reloadgame function and the
reloadgame URL destination is responsible for getting new login tokens needed to
reload the same game.
In both multiple free games and ongoing session scenarios the player will be
prompted with an option in the game to activate the free game or not. In the case of
multiple free games this option will appear when the first free game has ended. If the
player chooses to activate the free game offer the game will be reloaded using the
reloadgame function / URL.
IMPORTANT: Make sure to contact your Play’n GO representative in order to
activate the reload functionality in Play’n GO internal system.
www.playngo.com | info@playngo.com
Transparent Account Page 33 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com
Transparent Account Page 34 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
6 Supplement
6.1 Status Codes
Status codes are used to indicate success or additional information for unsuccessful
requests. In the Response, the Status Code is sent as an enum.
Example:
<balance>
<real>1331.46</real>
<statusCode>0</statusCode>
</balance>
0 OK Request successful.
www.playngo.com | info@playngo.com
Transparent Account Page 35 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
This can be used to show a custom message to player in case the response is not
“OK”, for example it could be like this:
<reserve>
<externalTransactionId>56789</externalTransactionId>
<real>12.56</real>
<statusCode>9</statusCode>
<statusMessage>Responsible Gaming Limit
exceeded</statusMessage>
</reserve>
Then “Responsible Gaming Limit exceeded” will be shown to the player instead of
the standard text.
Note that this can be used for all Status Code / Messages except for Status Code 7
(NOTENOUGHMONEY).
www.playngo.com | info@playngo.com
Transparent Account Page 36 (36)
Integration Manual
Date Document id
2021-01-21 MAL0147
www.playngo.com | info@playngo.com