0% found this document useful (0 votes)
802 views42 pages

Fundist API OneWallet v128

Document to read before setting up betting options

Uploaded by

Silver Studios
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
802 views42 pages

Fundist API OneWallet v128

Document to read before setting up betting options

Uploaded by

Silver Studios
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

Fundist API OneWallet v128(wr)

Connecting to Fundist.org API – One Wallet

Contents
Contents
Change History
1. Introduction to One Wallet
2. One Wallet Protocol Implementation Test
3. One Wallet Callback URL Prerequisites
4. Holistic Picture
5. Message Authentication
6. Number Format for amount and balance Fields.
7. Message Types
7.1 Ping
7.2 Get Balance
7.3 Debit from user account
7.4 Credit to user account
7.5. Rollback handling
7.6 Round Info
7.7 Win in the promotion
8. Response to Callback Request
8.1 Successful response
8.2. Error response
9. Test Scenarios
Change History
1 10 First official version of Fundist One Wallet protocol
. Feb
00 2014

1 28 Clarified usage of {extra_field} in successful response.


. Feb
01 2014 Added “tid” and “balance” as mandatory response fields for debit and credit.

1 27 Added information-only “i_gameid” and “i_rollback” fields to debit and credit.


. Mar
02 2014 Updated introduction section with paragraph on transaction rollbacks.

1 01 Added information-only “i_extparam” field to debit and credit.


. Apr
03 2014

1 03 Added information-only “i_extparam” field also to balance request


. Apr
04 2014

1 06 Added information-only “i_gamedesc” field to credit, debit and balance requests


. Apr
05 2014

1 03 Added Holistic Picture


. May
06 2014

1 15 Added clarification for error checking of requests with duplicated TID.


. Jul
07 2014 Added hmac field in response examples

Added type of ID fields description.

1 26 Added “roundinfo” request from Lazy Mode spec.


. Nov
08 2014

1 07 Added “i_actionid” field to debit and credit.


. Jan
09 2016

1 1 Documentation improved. SDK added.


. Sept
10 2016

1 4
. Oct
11 2017 Subtype of request is added for transaction cancellation cases. SDK temproraly excluded from the documentation.

1 17 Mandatory prerequisites for one wallet callback URL. Minor erratum corrections.
. Oct
12 2017

1 13 A note added regarding fields, being included for hash generation. Short description added to an “Error response” section
. Nov for case when player has lower balance, than amount on debit callback request. Added code samples for hmac generation
13 2017 on PHP and Java.

1 12 Rollback handling section is introduced.


. Jul
14 2018

1 21 Added request and response examples, successful OW test example and test utility usage manual, CSharp hmac example,
. Jun zero credit and jacpotwin notes, game_extra description, HTTP code for success response.
15 2019
Updated i_gameid, i_actionid and i_gamedesc descriptions.

1 11 Description for HMAC generation for roundinfo callback has been introduced.
. Feb
16 2020
1 03 Additional requirements for callback endpoint are introduced.
. Mar
17 2020

1 06 Added example for generating Hmac in Nodejs.


. Jul
18 2020

1 08 "round_ended" parameter description is added.


. Sep
19 2020

1 25 "round_start" parameter description is added.


. Nov
20 2020

1 15 Verification process for debit and credit requests extended by i_gameid, i_actionid parameters description.
. Feb
21 2021

1 18 Short description: "balance field must contain current value" is updated for debit and credit requests.
. Feb
22 2021

1 22 "i_reference_actionid" parameter description is added.


. Mar
23 2021

1 14 Added promotion win parameter.


. May
24 2021

1 07 Added additional checking note related to the verification process debit and credit requests. The Rollback Handling
. Jul description is extended with i_gameid, i_actionid parameters.
25 2021

1 31 Parameter "tid" in OW test is now sent as longint.


. Mar
26 2022

1 16 8.2. Error response paragraph is updated: parameter "balance" is added as a mandatory to response JSON message
. Aug
27 2022

1 3 Changes in game_extra description, subtypes debit and credit are added


. May
28 2023
1. Introduction to One Wallet
The default separate wallet implementation assumes that Client's system and Fundist.ORG system have two independent wallets. The
Client system is responsible for adding and withdrawing funds from game account.

In One Wallet implementation, there is a single wallet on Client's system side. Fundist.ORG system performs real-time requests to
credit and debit a single user's account in Client's system. Fundist.ORG performs requests to Client's system through HTTPS as JSON-
encoded object in POST data.

There is no concept of transaction rollback on protocol level. Instead, a standard credit request is sent to revert previous debit
operation. Such special credit requests can be identified by presence of “i_rollback” field, which holds “tid” of related debit.

Note: Client's system must never depend on i_extparam for validation of OneWallet requests

Response is expected as JSON-encoded object in HTTP response message body. Note: UTF-8 encoding is assumed, if non-ASCII
symbols are used.

For optimal performance, please configure HTTPS Keep-Alive of 120 seconds and enable SSL session caching.

2. One Wallet Protocol Implementation Test


In order to check if OW protocol implementation is correct there we provide OWClientTest, which you have received together with the
test API setup details. When implementation for OW callback service is ready, please provide 2 user account IDs with currencies for
our tests - this is a mandatory check point before going live. Please note you can also run the test on your side:

Make sure that you have installed Java on your PC

Please rename OWClientTest_vN.M.safext before usage to OWClientTest_vN.M.jar. You can also use any name for JAR, please use this
name when you are going to run test util on command line. Hereinafter we use OWClientTest_v2.12.jar name for JAR file.

Launch example:

export OWTEST_READ_TIMEOUT=2000 (for Windows: set OWTEST_READ_TIMEOUT=2000, then run it)


java -jar OWClientTest_v2.12.jar --host <CALLBACK_URL> --secret <HMAC_SECRET> --users <USER_ID1>=<USER1_CURRENCY>
[=EXTPARAM1] <USER_ID2>=<USER2_CURRENCY>[=EXTPARAM2] ...

By running OWCLientTest without params, you can get list of parameters that might be provided for.

$> java -jar ./OWClientTest_v2.12.jar


Missing required options: h, s, u
usage: OWClientTest
-g,--gamedesc <arg> Value for i_gamedesc
-ge,--game-extra <arg> Value for game_extra field
-h,--host <arg> Callback service URL
-m,--multiplier <arg> Multiplier for base amounts
-s,--secret <arg> HMAC secret
-scc,--skip-credit-cancel Option skips credit cancellation test case
-u,--users <arg> List of user account in format UserID=Currency[=ExtParam]
-ua,--user-agent <arg> Custom user agent
-z,--zero-credit Option enables callback with zero credit, that means lost bet

3. One Wallet Callback URL Prerequisites


To avoid any kind of traffic blocking because of prescriptions from the government authorities on both Fundist.ORG or Client’s hosting
providers sides, callback service should be a separate instance from the main casino website, including domain, IP and SSL certificate.

Example

Main casino website has domain www.superluckycasino.com with IP address 112.34.78.90.

Recommended callback service settings:

separate domain, like callback.route56services.com, that is completely different from the casino domain,
different IP address like 112.34.78.103,
valid SSL certificate for callback service domain. Let's Encrypt free SSL certificate is allowed for use for callback service setup.

Optional points for better risk diversification:

different domain registrars for main casino domain and callback service domain,
different SSL certificate authorities for main casino and callback service certificates.

Client's callback endpoint should respond to HTTP calls with the following types: GET/HEAD/POST. GET/HEAD types are used for initial
setup and monitoring. POST is used to send actual JSON callback messages.

In case endpoint is not available (domain has been expired, SSL certificate has been expired, etc) - it will be removed from
configuration with notification over email and optionally over other communication channel agreed in advance.

HTTPS protocol (HTTP with SSL certifcate) is allowed only when domain name is used with valid SSL certificate.
4. Holistic Picture
Player – user’s web browser

Client – client system with own website

Fundist – eGamings financial system, hidden from Player

Game – one of game product implementations, visible to Player


5. Message Authentication
Every message (request and response) should have a special field “hmac”, which value is generated using HMAC1 with SHA-256
algorithm. HMAC input is generated as:

1. Sort message fields in case-sensitive ascending order.


2. Concatenate value of all fields into single string. In case value is not of plain type, but is an array (like "actions" for callback
with type "roundinfo") - all subsequent JSON objects in array (int the same order as they are on JSON message) should be
sorted by key, and values for each object concatenated recursively.
3. Run HMAC with SHA-256 using secret key shared between Client's and Fundist.ORG system

Note: Client's system must explicitly whitelist all Fundist.ORG IP addresses. All other IPs must be rejected. Please contact
eGamings support for actual list of outgoing IP addresses.

Example

{
"bbb" : "Val1",
"aaa" : "Val2",
"hmac" : "...."
}

hmac = HMAC_SHA256("Val2Val1", SHA256("ASCII_Shared_Secret"))

Example with actions

{
"bbb" : "Val1",
"aaa" : "Val2",
"actions": [
{
"timestamp":"tmstmp1",
"actid":"ctd1",
"type":"tp1",
"i_actionid":"ctnd1",
"amount": "mnt1",
},
{
"timestamp":"tmstmp2",
"actid":"ctd2",
"type":"tp2",
"i_actionid":"ctnd2",
"amount": "mnt2",
}
],
"hmac" : "...."
}

hmac = HMAC_SHA256("Val2ctd1mnt1ctnd1tmstmp1tp1ctd2mnt2ctnd2tmstmp2tp2Val1", SHA256("ASCII_Shared_Secret"))

Important Notes on hmac Field

Hashed value of HMAC secret should be returned in binary format, and not textual.

In order to keep protocol message extension safe, we recommend NOT TO make field list fixed, so in case new fields are introduced,
they are also included in generated hmac value.

The folowing HMAC secret key value is used for all examples
below: iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem

Code Samples for hmac Field Generation


Example in PHP

<?php
...
$hmac_key = hash("sha256", $hmac_secret, true);
ksort($message);
unset($message['hmac']);

if (array_key_exists('actions', $message)) {
$actions = $message['actions'];
$action_value = array();

foreach($actions as &$a) {
ksort($a);
$action_value[] = implode('', array_values($a));
}

unset($a);
$message['actions'] = implode('', $action_value);
}

$hmac_base = implode('', array_values($message));


$hmac = hash_hmac('sha256', $hmac_base, $hmac_key);
...
?>

Example in Java

...
final private synchronized String genHmac( String hmacSecret, JsonObject m ) throws Exception
{
SortedMap< String, JsonValue > kv = new TreeMap< String, JsonValue >();
kv.putAll(m);
final private Charset utf8_charset = Charset.forName( "UTF-8" );

// setup HMAC
MessageDigest md = MessageDigest.getInstance( "SHA-256" );
md.update( hmacSecret.getBytes( utf8_charset ) );
SecretKeySpec key = new SecretKeySpec( md.digest(), "HmacSHA256" );

final private Mac mac_;


mac_ = Mac.getInstance( "HmacSHA256" );
mac_.init( key );

// To make thread safe


final Mac mac = mac_;

for ( Map.Entry< String, JsonValue > v: kv.entrySet() )


{
if ( v.getKey().equals("hmac") ) continue;
mac.update( v.getValue().toString().getBytes( utf8_charset ) );
}

return DatatypeConverter.printHexBinary( mac.doFinal() ).toLowerCase();


}
...
Example in CSharp

...
private static String genHmac(String secret_key, Dictionary<string, dynamic> message)
{
SHA256 hash = new SHA256Managed();
Byte[] hash_secret = hash.ComputeHash(Encoding.UTF8.GetBytes(secret_key));

SortedDictionary<string, dynamic> sorted_message = new SortedDictionary<string, dynamic>(message);

String value = "";


foreach (KeyValuePair<string, dynamic> kvp in sorted_message) {
if (kvp.Key.Equals("hmac")) continue;
value += kvp.Value;
}

HMAC hmac = new HMACSHA256(hash_secret);


byte[] hmac_byte = hmac.ComputeHash(Encoding.UTF8.GetBytes(value));
String hmac_value = "";

foreach (Byte b in hmac_byte) {


hmac_value = String.Concat(hmac_value, b.ToString("x2"));
}

return hmac_value.ToLower();
}
...

Example in Nodejs

...
const crypto = require('crypto');

const base = Object.assign({}, requestBody);

delete base.hmac;

if ('actions' in base) {
let actions = '';
for (const action of base.actions) {
Object.keys(action).sort().forEach(key => actions += action[key]);
}

base.actions = actions;
}

const hash = crypto.createHash('sha256');


const hmac = crypto.createHmac('sha256', hash.update(secretKey).digest('buffer'));

let hmacBase = '';


Object.keys(base).sort().forEach(key => hmacBase += base[key]);

const hmacString = hmac.update(hmacBase).digest('hex');


...
6. Number Format for amount and balance Fields.
Field values for amount and balance, must always have 2 digits after decimal point and at least one digit in integer part. Decimal point
sign must always be a period (“.”). No other symbols are allowed. JSON field type - string.

Examples:

"0.00"

"0.01"

"1.00"

"2.19"
7. Message Types

7.1 Ping
This request is used to check Client's system availability.

Request params:

Parameter name Parameter type (JSON) Description Mandatory/Optional

type String External action (ping) M

hmac String Hash generated from request params M

Response params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

hmac String Hash generated from response params M

Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem

Example

Request:
{
"type":"ping",
"hmac":"855c54693a59a28a1039328ac5a12e9bcafab9f906fc935313e3a76db6376c56"
}
Response:
{
"status":"OK",
"hmac":"e969bada202f1735fedd074a5b1097e48080ef22d83fcbe74d86b0ceaa91bb63"
}

7.2 Get Balance


Retrieve current available balance of specific user in Client's system.

Note: Fundist.ORG uses this information is only for in-game display and basic bet amount check.

Request params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

type String External action (balance) M

userid String User/AuthHTML Login parameter M

currency String User/Add Currency parameter M

i_extparam String External parameter, passed to User/AuthHTML M

i_gamedesc String {SystemID}:{GameType} M


hmac String Hash generated from request params M

Response params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

balance String User balance in decimal format M

hmac String Hash generated from response params M

Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem

Example

Request:
{
"type":"balance",
"userid":"qauser_151238785931919_EUR",
"currency":"EUR",
"i_gamedesc":"998:roulette",
"i_extparam":"TestExtParam123",
"hmac":"173a74d4a43142426e05171465ef61668adeb14b1f9767e071296f3db994a299"
}
Response:
{
"status":"OK",
"balance":"2.87",
"hmac":"f2c90ef1954552707f160bd954e04b597cd22f6f60d61c3841ab9e272a9d4968"
}

Response must contain extra "balance" field.


7.3 Debit from user account
Request params:

Note: Parameter "tid" sent as Integer in JSON by default. In case you would like TID to be sent as String in test and production
environments, please inform integration team and they will add necessary setting to your project`s API.

Parameter Parameter Description Mandatory


name type /Optional
(JSON)

type String Response status (debit) M

tid Integer/String Unique Transaction ID (can never be duplicated) – alphanumeric maxlen 32 M

userid String User/AuthHTML Login parameter M

currency String User/Add Currency parameter M

amount String Amount that will be debited from user account M

i_gameid String Game round ID. Can be used to identify related transactions (credit+debit) – alphanumeric M
maxlen 32, there could be: several bets, several wins, no bets just win in one round

i_extparam String External parameter, passed to User/AuthHTML M

i_gamedesc String {SystemID}:{GameType} – alphanumeric maxlen 64 M

i_actionid String Game event reference ID (bet, win), technically can be duplicated among providers M

round_start* Boolean Sent with first transaction of the round O

round_ended* Boolean Marks that the round has ended O

game_extra String Additional game information, like PageCode for Evolution O

subtype String Used for transaction cancellation cases with “cancel” value or for specific games enter with O
“debit” value

hmac String Hash generated from request params M

*Overrides sending zero credits for losing bet. The param is disabled by default. For enabling contact Integration Team.

Response params:

Note: In response, parameter "tid" must be always sent as String in JSON.

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

tid String Original request tid M

balance String User balance M

hmac String Hash generated from response params M


Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem

Example

Request:
{
"type":"debit",
"userid":"qauser_151238785931919_EUR",
"currency":"EUR",
"tid":"1tid1566565638671",
"amount":"2.87",
"i_gameid":"1gm1566565638671",
"i_gamedesc":"998:roulette",
"i_actionid":"D11566565638920",
"i_extparam":"TestExtParam123",
"hmac":"3630609dad8806547985b6a88f49c0ed11101e064ac29c712e33a19f31da1d89"
}
Response:
{
"status":"OK",
"tid":"1tid1566565638671",
"balance":"0.00",
"hmac":"ad807d9e05ed238279766f33ec847b20e166fefae5e08d1237100f426bfc40d0"
}

1. Client's system must check, if request with the same "tid" has been performed before:
a. if any of essential fields ("type", "tid", "userid", "currency", "amount") mismatch:
return error "Transaction parameter mismatch"
b. if yes and response is known, return original response.
Note: "balance" field must contain current value, balance should not be debited by this transaction.
c. if yes and response is NOT known, fail with HTTP error “408 Request Timeout”
d. otherwise, continue
2. Client's system must check, if request with the same "i_gameid" and 'i_actionid' has been performed before:
a. if any of essential fields ("userid", "currency", "amount") mismatch:
return error "Transaction parameter mismatch
Note: type field can be different for requests with "subtype": "cancel"
b. if yes and response is known, return original response.
Note: "balance" field must contain current value, balance should not be debited by this transaction.
c. if yes and response is NOT known, fail with HTTP error “408 Request Timeout”
d. otherwise, continue
3. Check if currency matches user balance currency
a. Respond with error, if not
4. Perform in single DB transaction:
a. Check if user balance is greater or equal to requested amount
b. If the check is passed, decrease user balance by requested amount
c. If the check is NOT passed, fail with error
d. Store request and response in DB
e. Commit DB transaction
5. Send response message
a. Response must contain extra "tid" field of original request and current "balance" field.

Note: Client system must additionally check i_gameid and i_actionid parameters on rollback handling to avoid rollback
for the whole round instead of a single event.
7.4 Credit to user account
Request params:

Note: Parameter "tid" sent as Integer in JSON by default. In case you would like TID to be sent as String in test and production
environments, please inform integration team and they will add necessary setting to your project`s API.

Parameter Parameter Description Mandatory


name type (JSON) /Optional

type String External action (credit) M

tid Integer/String Unique Transaction ID – alphanumeric maxlen 32 M

userid String User/AuthHTML Login parameter M

currency String User/Add Currency parameter M

amount String Amount that will be credited to user account M

i_gameid String Game round ID. Can be used to identify related transactions – alphanumeric maxlen 32, there M
could be: several bets, several wins, no bets just win in one round

i_extparam String External parameter, passed to User/AuthHTML M

i_rollback String Can be used to link related debit request. O

i_gamedesc String {SystemID}:{GameType} – alphanumeric maxlen 64 M

i_actionid String Action reference number M

i_reference_ac String i_actionid of the initiating bet - O


tionid*
action reference number for bonus credit transactions

game_extra String PageCode for Evo or FREEROUNDS_XXX(marks freeround win where XXX – TID of Freeround O
/Add transaction)

subtype String Used for transaction cancellation cases with "cancel" value or for specific games exit with O
“credit” value

round_start* Boolean Sent with first transaction of the round O

round_ended* Boolean Marks that the round has ended O

jackpot_win Integer Possible value 1 - in case particular credit is connected with jackpot win, credit request will have O
extra parameter

hmac String Hash generated from request params M


*The param is disabled by default. For enabling contact Integration Team.

Respose params:

Note: In response, parameter "tid" must be always sent as String in JSON.

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

tid String Original request tid M

balance String User balance M

hmac String Hash generated from response params M

Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem

Example

Request:
{
"type":"credit",
"userid":"qauser_151238785931919_EUR",
"currency":"EUR",
"tid":"1tid1566565638672",
"amount":"3.00",
"i_gameid":"1gm1566565638671",
"i_gamedesc":"998:roulette",
"i_actionid":"C11566565638920",
"i_extparam":"TestExtParam123",
"hmac":"66266a7c732b47f260087501a2e16327804d94ec0d7e15c36b812b26540298ef"
}
Response:
{
"status":"OK",
"tid":"1tid1566565638672",
"balance":"3.00",
"hmac":"834d81739bed3619df2abb958b0e918e712868b0792d38bd6db780a87a2b4947"
}

1. Client's system must check, if request with the same "tid" has been performed before:
a. if any of essential fields ( "type", "tid", "userid", "currency", "amount") mismatch:
return error "Transaction parameter mismatch"
b. if yes and response is known, return original response
Note: "balance" field must contain current value, balance should not be credited by this transaction.
c. if yes and response is NOT known, fail with HTTP error “408 Request Timeout”
d. otherwise, continue
2. Client's system must check, if request with the same "i_gameid" and 'i_actionid' has been performed before:
a. if any of essential fields ("userid", "currency", "amount") mismatch:
return error "Transaction parameter mismatch
Note: type field can be different for requests with "subtype": "cancel"
b.
2.

b. if yes and response is known, return original response.


Note: "balance" field must contain current value, balance should not be credited by this transaction.
c. if yes and response is NOT known, fail with HTTP error “408 Request Timeout”
d. otherwise, continue
3. Check if currency matches user balance currency
a. Respond with error, if not
4. Perform in single DB transaction:
a. Increase user balance by requested amount
b. Store request and response in DB
c. Commit DB transaction
5. Send response message
a. Response must contain extra "tid" field of original request and current "balance" field.

Note: Client system must additionally check i_gameid and i_actionid parameters on rollback handling to avoid rollback
for the whole round instead of a single event.

Optional feature: zero credit transactions can be turned on for your API, but please note that not all providers support this feature.

Optional feature: game_extra field is not sent by default, this could be enabled for your API.
7.5. Rollback handling
There are two types of rollback requests. Any rollback call should be performed for a single event related to the i_gameid and
i_actionid parameters.

1. In case of slow responses, duplicate request might be sent for example for bet in a game. When duplicate request is identified,
rollback call will be preformed. Type of such call is credit. JSON message will contain i_rollback field, that will contain a tid of
transaction, that should be rolled back and according player balance changes should be made.

Example:

debit call is sent with tid=124, that is being processed with timeout and/or proper response is not served.
debit call is sent with tid=124 for the same bet, this time request is processed quickly, correct response is served.
credit call will be sent with tid=125, and i_rollback=124.

Request params:

Note: Parameter "tid" sent as Integer in JSON by default. In case you would like TID to be sent as String in test and production
environments, please inform integration team and they will add necessary setting to your project`s API.

Parameter Parameter type Description Mandatory


name (JSON) /Optional

type String External action (debit or credit) M

tid Integer/String Unique Transaction ID – alphanumeric maxlen 32 M

userid String User/AuthHTML Login parameter M

currency String User/Add Currency parameter M

amount String Decimal number, 2 digits after decimal sign M

i_gameid String Game ID. Can be used to identify related transactions – alphanumeric M
maxlen 32

i_extparam String External parameter, passed to User/AuthHTML M

i_rollback String Can be used to link related debit request M

i_gamedesc String {SystemID}:{GameType} M

i_actionid String Action reference number M

hmac String Hash generated from request params M

Response params:

Note: In response, parameter "tid" must be always sent as String in JSON.

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

tid String Original request tid M

balance String User balance M

hmac String Hash generated from response params M

Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem


Example

Debit
Request:
{
"type":"debit",
"userid":"qauser_151238785931919_EUR",
"currency":"EUR",
"tid":"1tid1566565638688",
"amount":"0.03",
"i_gameid":"1gm1566565638674",
"i_gamedesc":"998:roulette",
"i_actionid":"D11566565645651",
"i_extparam":"TestExtParam123",
"hmac":"4321ddfd27f6d72cd2804834429a3111b4f7ad236d3f55aa4dce46f4fb215fa9"
}
Response:
{
"status":"OK",
"tid":"1tid1566565638688",
"balance":"2.87",
"hmac":"9b5a8a86996ceb3364c463d2abbb3c32958dd8e46f73a00a24a17f2523d152a0"
}

Credit with rollback


Request:
{
"type":"credit",
"userid":"qauser_151238787931919_EUR",
"currency":"EUR",
"tid":"2tid1566565638688",
"amount":"0.03",
"i_gameid":"1gm1566565638674",
"i_gamedesc":"998:roulette",
"i_actionid":"C21566565645651",
"i_extparam":"TestExtParam123",
"i_rollback":"1tid1566565638688",
"hmac":"a63c659f6fdc710a0c17e391d5a8eca0ad975034ee2e5979057d42a02091dd99"
}
Response:
{
"status":"OK",
"balance":"2.90",
"hmac":"d02d6aa4d6c0ee500c80186364de0393a4213775f7667359bcbed90794925433"
}

2. In case of slow responses game server might refuse bet settlement or winning for some reason and send cancellation request. Type
of such request also might be debit or credit. JSON message will contain “subtype” field with value “cancel”.

Request example:

Note: Parameter "tid" sent as Integer in JSON by default. In case you would like TID to be sent as String in test and production
environments, please inform integration team and they will add necessary setting to your project`s API.

Parameter Parameter type Description Mandatory


name (JSON) /Optional

type String External action (debit or credit) M

tid Integer/String Unique Transaction ID – alphanumeric maxlen 32 M

userid String User/AuthHTML Login parameter M

currency String User/Add Currency parameter M

amount String Decimal number, 2 digits after decimal sign M

i_gameid String Game ID. Can be used to identify related transactions – alphanumeric M
maxlen 32

i_extparam String External parameter, passed to User/AuthHTML M


i_gamedesc String {SystemID}:{GameType} M

i_actionid String Action reference number M

subtype String Used for transaction cancellation cases with "cancel" value M

hmac String Hash generated from request params M

Response params:

Note: In response, parameter "tid" must be always sent as String in JSON.

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

tid String Original request tid M

balance String User balance M

hmac String Hash generated from response params M

Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem


Example

Debit
Request:
{
"type":"debit",
"userid":"qauser_151238785931919_EUR",
"currency":"EUR",
"tid":"1tid1566565638694",
"amount":"0.25",
"i_gameid":"1gm1566565638674",
"i_gamedesc":"998:roulette",
"i_actionid":"D11566565645654",
"i_extparam":"TestExtParam123",
"hmac":"6b48a65e7f0cba1991df002f852e4c75b70da1565254c8cbf3eddb993d7765b5"
}
Response:
{
"status":"OK",
"tid":"1tid1566565638694",
"balance":"2.50",
"hmac":"0ba3811977f974d8dd65187b9801a4f5b6f10c8ecbd6d54eda23d99e908af3c1"
}

Debit cancellation
Request:
{
"type":"credit",
"userid":"qauser_151238785931919_EUR",
"currency":"EUR",
"tid":"1tid1566565638695",
"amount":"0.25",
"i_gameid":"1gm1566565638674",
"i_gamedesc":"998:roulette",
"subtype":"cancel",
"i_actionid":"D11566565645654",
"i_extparam":"TestExtParam123",
"hmac":"563c5e7aa25e35132f30d559671b1766d5a639b35eef4b2ecc854cbf73df97d9"
}
Response:
{
"status":"OK",
"tid":"1tid1566565638695",
"balance":"2.75",
"hmac":"7a9e9b42429df4400f2573517abf372efa843e6ecb7bb51fbc05919dd4db563f"
}
7.6 Round Info
Provide real-time round information after round is over (game name, user, activity, ext_param). Useful for bonus & loyalty analytics.

This request is re-sent until Client system responds with successful reply.

Note: This is a configurable option for backward compatibility purposes.

Request params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

type String External action (roundinfo) M

gameid String Unique Game ID M

userid String User/AuthHTML Login parameter M

actions Array List of game actions M

i_gamedesc String {SystemID}:{GameType} M

hmac String Hash generated from request params M

Actions params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

actid String Unique Action ID M

type String Action type (bet or win) M

amount String Action amount M

timestamp String YYYY-MM-DD hh:mm:ss M

Response params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

hmac String Hash generated from response params M

Example:

Note: HMAC secret used in below example - iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem


Request JSON message

Request:
{
"type":"roundinfo",
"gameid":"15963851167",
"userid":"qauser_151238785931919_EUR",
"actions":[
{
"actid":"20445259420",
"type":"bet",
"amount":"10.00",
"timestamp":"2019-09-04 14:06:26"
}
],
"i_gamedesc":"998:roulette",
"hmac":"4dec9cd5a3f96cb83dff6104e841386d32e82b555de278c609ed1cfef0544be1"
}
Response:
{
"status":"OK",
"hmac":"e969bada202f1735fedd074a5b1097e48080ef22d83fcbe74d86b0ceaa91bb63"
}
7.7 Win in the promotion
Note: This information is relevant in case you have promotion module enabled.

Provide real-time win result information after promotion ends.

This request is re-sent until Client system responds with successful reply.

Request params:

Parameter name Parameter type Description Mandatory/Optional


(JSON)

type String External action (credit) M

tid Integer/String Unique Transaction ID – alphanumeric maxlen 32 M

userid String User/AuthHTML Login parameter M

currency String User/Add Currency parameter M

amount String Amount that will be credited to user account M

subtype String External subtype (promotion) M

i_bonusid String Promotion ID M

i_bonusdesc String {SystemID}:{PromotionName} M

hmac String Hash generated from request params M

Respose params:

Note: In response, parameter "tid" must be always sent as String in JSON.

Parameter name Parameter type Description Mandatory/Optional


(JSON)

status String Response status (OK) M

tid String Original request tid M

balance String User balance M

hmac String Hash generated from response params M

Example:
Request JSON message

Request:
{
"subtype":"promotion",
"i_bonusid":"2433",
"i_bonusdesc":"2783: promo test",
"type":"credit",
"tid":"64010",
"userid":"837",
"currency":"EUR",
"amount":"111.00",
"hmac":"306d729637b9fc7aa57dd1cfbe88516f78b6609c87ea8005976bf3b15425eddf"
}

Response:
{
"status":"OK",
"tid":"64010",
"balance":"211.00",
"hmac":"306d729637b9fc7aa57dd1cfbe88516f78b6609c87ea8005976bf3b15425eddf"
}
8. Response to Callback Request

8.1 Successful response

Simple response

{
"status":"OK"
"hmac":"..."
}

Extended response

{
"error":"<specific_error_code>|Human readable description",
"balance":"..."
"hmac":"..."
}

Note: Only HTTP code 200 is assumed as positive, for all other HTTP response codes, even with JSON messsage, that contains
{"status":"OK",...} backend assumes, that request has failed and no positive response is received.
8.2. Error response

Response JSON message

{
"error":"<specific_error_code>|Human readable description",
"balance":"..."
"hmac":"..."
}

Several specific error codes could be passed into a game in reply to one wallet debit callback. Licensee endpoint should reply with
JSON message {“error”:”<specific_code>”, "balance":"...", “hmac”: …} as described below.

Value for “error” field Message, displayed for player


(<specific_code>)

INSUFFICIENT_FUNDS You do not have sufficient funds to place this bet.

SESSION_EXPIRED There has been a problem with the Live Casino. User authentication failed or your session may be
expired, please close the browser and try again.

TURNOVER_LIMIT_EXCEED This bet amount would exceed your personal limit within the specified period of time.
ED

SESSION_TIME_LIMIT_EXC Your play time exceeds your personal limit of time that may be played in a session.
EEDED

BET_LIMIT_EXCEEDED This bet amount would exceed your personal limit within the specified period of time.

LOSS_LIMIT_EXCEEDED This bet amount would exceed your personal limit within the specified period of time.

In other cases you can send any human readable description.


9. Test Scenarios
Note: In OW test, parameter "tid" will be sent as longint. If you would like parameter "tid" to be sent as string, please add
additional parameter --string-tid=y

OWClientTest is performing standard test cases in 2 runs. All test cases are titled in square brackets. HMAC secret, used for these
examples: iexoocaquaenogoob7xoosaingeofoh9ighoh4eevoshaiNaN2gahHieYaix7iem

======= RUN #1 =======


---- Request:ping ----
> Sent:{"type":"ping","hmac":"855c54693a59a28a1039328ac5a12e9bcafab9f906fc935313e3a76db6376c56"}
> Recv:{"status":"OK","hmac":"e969bada202f1735fedd074a5b1097e48080ef22d83fcbe74d86b0ceaa91bb63"}
> Time spent: 313ms

[ Preparing balance amount of 3.00 ]


---- Request:balance ----
> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"2.50","hmac":"
b390053b9c0fbf614c2783adb559ed93bf19b3ed7bf79dc6a5dc97269954a475"}
> Time spent: 154ms
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"2.50","tid":11648727951745,"
i_gameid":"1gm1648727951745","i_gamedesc":"998:roulette","i_actionid":"D11648727952406","i_extparam":"
TestExtParam123","hmac":"6a1ace6fb1695eb138910df53301d0189355649ee6b2469cb946a655ab66f381"}
> Recv:{"status":"OK","tid":11648727951745,"balance":"0.00","hmac":"
b4940390496e1219355a0e19b5fc028bc7e73fb7cffb11cbec9c4345509672e1"}
> Time spent: 377ms
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"3.00","tid":11648727951746,"
i_gameid":"1gm1648727951745","i_gamedesc":"998:roulette","i_actionid":"C11648727952406","i_extparam":"
TestExtParam123","hmac":"0f5a985ff4a972ac187d5d7c155bfdb4e1d57817381e56ff144cc2e372215212"}
> Recv:{"status":"OK","tid":11648727951746,"balance":"3.00","hmac":"
3e12362797591e9ff5cee80ab37675ab5edd774060e178b2299b981a4fbec633"}
> Time spent: 247ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"2.50","hmac":"
b390053b9c0fbf614c2783adb559ed93bf19b3ed7bf79dc6a5dc97269954a475"}
> Time spent: 107ms
---- Request:debit ----
> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"2.50","tid":21648727951745,"
i_gameid":"2gm1648727951745","i_gamedesc":"998:roulette","i_actionid":"D21648727952406","i_extparam":"
TestExtParam123","hmac":"3263d23da817dc2fb66553fca07feba728842291ee21ef0f88e114a6f188dc9f"}
> Recv:{"status":"OK","tid":21648727951745,"balance":"0.00","hmac":"
436fcaadce750e3c5beccc8c2338102bfe8279018b6ac52354c965568534bf6b"}
> Time spent: 224ms
---- Request:credit ----
> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"3.00","tid":21648727951746,"
i_gameid":"2gm1648727951745","i_gamedesc":"998:roulette","i_actionid":"C21648727952406","i_extparam":"
TestExtParam123","hmac":"05148f3c212a80375bc84d58b218533daad2ac25a474945374773742e7b7e4c0"}
> Recv:{"status":"OK","tid":21648727951746,"balance":"3.00","hmac":"
0c46e3e0a91aeb5bd016e8b56bae8446a975577fbaeec9ddc83e0b2a00bb2225"}
> Time spent: 236ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"3.00","hmac":"
109ac35e2dc899706c75e1e3647075588012e613c0ebd4af86b5841d58b7adc8"}
> Time spent: 119ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"3.00","hmac":"
109ac35e2dc899706c75e1e3647075588012e613c0ebd4af86b5841d58b7adc8"}
> Time spent: 95ms

[ Debit 0.10 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951747,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952407","i_extparam":"
TestExtParam123","hmac":"d17c4c06f33b199f3b4a3efc6e35e9c9ffec34de267f1010bcf2a2dfa0f486ff"}
> Recv:{"status":"OK","tid":11648727951747,"balance":"2.90","hmac":"
84a566d9e98c2686cb9c48fc5b02d0a2bbf899361042fb34350162ba316a389c"}
> Time spent: 202ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951747,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952407","i_extparam":"
TestExtParam123","hmac":"e6911315bf3ce4136ccd279b76fe7b1499e4bb86ac3f265484141931289f4567"}
> Recv:{"status":"OK","tid":21648727951747,"balance":"2.90","hmac":"
d802060fb0e5f80f2d401add25d9f95247a581f02c565f256a34822333ddee1e"}
> Time spent: 263ms

[ Debit 0.10 (repeat) ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951747,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952407","i_extparam":"
TestExtParam123","hmac":"d17c4c06f33b199f3b4a3efc6e35e9c9ffec34de267f1010bcf2a2dfa0f486ff"}
> Recv:{"status":"OK","tid":11648727951747,"balance":"2.90","hmac":"
84a566d9e98c2686cb9c48fc5b02d0a2bbf899361042fb34350162ba316a389c"}
> Time spent: 141ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951747,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952407","i_extparam":"
TestExtParam123","hmac":"e6911315bf3ce4136ccd279b76fe7b1499e4bb86ac3f265484141931289f4567"}
> Recv:{"status":"OK","tid":21648727951747,"balance":"2.90","hmac":"
d802060fb0e5f80f2d401add25d9f95247a581f02c565f256a34822333ddee1e"}
> Time spent: 136ms

[ Debit 0.10 (repeat with new tid and the same game_id + i_actionid) ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951748,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952407","i_extparam":"
TestExtParam123","hmac":"79fe2946fcd5d09153617843ed269d5cddf65f3145e1b00eaee5c120acfee694"}
> Recv:{"status":"OK","tid":11648727951748,"balance":"2.90","hmac":"
e73901c939ba130251d6bac78c3fc79355fa58fd88d4d5dbfd8352c34624119f"}
> Time spent: 178ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951748,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952407","i_extparam":"
TestExtParam123","hmac":"3b8f7f94a26a9296c3d4271635bb9f13383f0011dd8cbaae80939bcb017e7072"}
> Recv:{"status":"OK","tid":21648727951748,"balance":"2.90","hmac":"
1b2072034d021fdb10aa13ff8db23a2a3e926d9b62c448d4a906a4b8a74274b4"}
> Time spent: 194ms

[ Debit 0.10 (one more repeat with new tid and the same game_id + i_actionid) ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951749,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952407","i_extparam":"
TestExtParam123","hmac":"9c76269ad960b4a34ceef3fd983ec3fefad4b9799864d4908ed55834b436c432"}
> Recv:{"status":"OK","tid":11648727951749,"balance":"2.90","hmac":"
03643aef77d9edfeaec77e6d3721ab2248f3e74099d3977dd8aa0f87dca9336d"}
> Time spent: 203ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951749,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952407","i_extparam":"
TestExtParam123","hmac":"ef30e09155e0f57a6aa9d9b68c914cffca0f9020421e0cbeb40fa24209f59018"}
> Recv:{"status":"OK","tid":21648727951749,"balance":"2.90","hmac":"
c67330fc878cdd4cc595c3edf825e69c1e8a75c55f8080b40f8842b6b57dbccc"}
> Time spent: 176ms

[ Debit another amount + same tid ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951749,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952407","i_extparam":"
TestExtParam123","hmac":"080be79f1204b2cd67a4d1738688acc31367eb4133efbf70e4b638f282fa1471"}
> Recv:{"error":"Transaction Failed","balance":"2.90","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 117ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951749,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952407","i_extparam":"
TestExtParam123","hmac":"2eca2c9af979a365157adf91b35b96634bf6337e46134ac84b3c7048d65cc9f5"}
> Recv:{"error":"Transaction Failed","balance":"2.90","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 133ms

[ Debit other amount + other tid ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951750,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952408","i_extparam":"
TestExtParam123","hmac":"a9854a16760187fbc06c1f77a9e42fbd52292a596197286eafa64e99deba4eb1"}
> Recv:{"status":"OK","tid":11648727951750,"balance":"2.85","hmac":"
6915ebe6093ca3640caec8702c78b40e14ec67d2be3ad247492c4548f468efda"}
> Time spent: 227ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951750,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952408","i_extparam":"
TestExtParam123","hmac":"d6b7a7934e421222bf382f6442e077b45e6b9445de1451a1c3c1e11fc31a0d4e"}
> Recv:{"status":"OK","tid":21648727951750,"balance":"2.85","hmac":"
611a1b5e9eeeb6b8197f191b251aa540833c7c011a4d2ff378a069813ab71326"}
> Time spent: 222ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"2.85","hmac":"
c67d55b9674481e444bd011932d6af6dbc093bea9189dbadb9e4de0f54e25776"}
> Time spent: 108ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"2.85","hmac":"
c67d55b9674481e444bd011932d6af6dbc093bea9189dbadb9e4de0f54e25776"}
> Time spent: 93ms

[ Credit + debit tid (fail) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951750,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952408","i_extparam":"
TestExtParam123","hmac":"4eb829320be68464ceb86b5de49ae4bb4a83b26fda618386cb3ea9142e3ab638"}
> Recv:{"error":"Transaction Failed","balance":"2.85","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 162ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951750,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952408","i_extparam":"
TestExtParam123","hmac":"903178e9d6a75afe17616544b9b7c7d7c96ab0c2cd21bd31db2f69ee770a5357"}
> Recv:{"error":"Transaction Failed","balance":"2.85","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 196ms

[ Bet cancel by sending Credit + new tid with i_rollback ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951751,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_rollback":11648727951750,"i_actionid":"
C11648727952408","i_extparam":"TestExtParam123","hmac":"
efa6610db1c09f192813aef6774b22fd66b905aa1155fc29be79e31af47a26d6"}
> Recv:{"status":"OK","tid":11648727951751,"balance":"2.90","hmac":"
fc1cbcdf1fde121c460e93d3d25fdeb336e66fe44c45bd0c3aaaf984c2e6adf3"}
> Time spent: 181ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951751,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_rollback":21648727951750,"i_actionid":"
C21648727952408","i_extparam":"TestExtParam123","hmac":"
f21f9879ff0b5b1171d4dff322cb525ad20a1e17a61dd18899d124d08356f2f8"}
> Recv:{"status":"OK","tid":21648727951751,"balance":"2.90","hmac":"
a7dee97be20d0534d2d0cc005e34b790a8150415b3e131c5db54896aae163d74"}
> Time spent: 190ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"2.90","hmac":"
d02d6aa4d6c0ee500c80186364de0393a4213775f7667359bcbed90794925433"}
> Time spent: 130ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"2.90","hmac":"
d02d6aa4d6c0ee500c80186364de0393a4213775f7667359bcbed90794925433"}
> Time spent: 100ms

[ Credit 0.50 (for debit of 0.10) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951752,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952407","i_extparam":"
TestExtParam123","hmac":"3b8db2d6e94aa8d89f45e0976710c6455014ea8390be193fb5886e607e98fdfd"}
> Recv:{"status":"OK","tid":11648727951752,"balance":"3.40","hmac":"
49f7caf675a61f3d74c5398728e13ed771c50a63dd73ab18fd453644b2e56e1e"}
> Time spent: 238ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951752,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952407","i_extparam":"
TestExtParam123","hmac":"fb78a86244324511441cbfe20f1dd0afd5fcec4de279d6840766e3580d08b466"}
> Recv:{"status":"OK","tid":21648727951752,"balance":"3.40","hmac":"
2c33efbaee454825fdb1eaf3d971b6ff6d5dcf0c67eed178ad5feff18397992b"}
> Time spent: 222ms

[ Credit 0.50 (repeat) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951752,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952407","i_extparam":"
TestExtParam123","hmac":"3b8db2d6e94aa8d89f45e0976710c6455014ea8390be193fb5886e607e98fdfd"}
> Recv:{"status":"OK","tid":11648727951752,"balance":"3.40","hmac":"
49f7caf675a61f3d74c5398728e13ed771c50a63dd73ab18fd453644b2e56e1e"}
> Time spent: 122ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951752,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952407","i_extparam":"
TestExtParam123","hmac":"fb78a86244324511441cbfe20f1dd0afd5fcec4de279d6840766e3580d08b466"}
> Recv:{"status":"OK","tid":21648727951752,"balance":"3.40","hmac":"
2c33efbaee454825fdb1eaf3d971b6ff6d5dcf0c67eed178ad5feff18397992b"}
> Time spent: 135ms

[ Credit 0.50 + wrong user ID ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621f","currency":"EUR","amount":"0.50","tid":11648727951752,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952407","i_extparam":"
TestExtParam123","hmac":"23dd42f8f3cc39b89c129fadd836f55cceafe0043d1838b444940ec5dca0ef20"}
> Recv:{"error":"Invalid userid","hmac":"8d0093157cd4af2a6cb5a5a92fe97ba611e7beab8ed28e1c1397006bfbfd8975"}
> Time spent: 105ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851f","currency":"USD","amount":"0.50","tid":21648727951752,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952407","i_extparam":"
TestExtParam123","hmac":"9e1f1dbb5d0f5f4d9cdf532b4535686710b1e5557520135f4c50ad03862ecb37"}
> Recv:{"error":"Invalid userid","hmac":"8d0093157cd4af2a6cb5a5a92fe97ba611e7beab8ed28e1c1397006bfbfd8975"}
> Time spent: 133ms

[ Credit 0.50 + wrong currency ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"USD","amount":"0.50","tid":11648727951752,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952407","i_extparam":"
TestExtParam123","hmac":"383ed1062a12cbb372f43fe57ba51730d26cf58f17cf5cf74c1f95282d95648e"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 118ms
---- Request:balance ----
> Sent:{"type":"balance","userid":"62447203ee621","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"8486bd562aa3c900a9e2e4d525c06e0cdaaa98b9a94ade0eceb176b67a880d97"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 91ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"EUR","amount":"0.50","tid":21648727951752,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952407","i_extparam":"
TestExtParam123","hmac":"2dc63625f3a2cc57c13184976c4d1ab93f3fa6f1924b89e12357dde79be990ab"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 91ms
---- Request:balance ----
> Sent:{"type":"balance","userid":"6244721467851","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"3af28a226c617fa1ae5b3f7ca6738875e328415bef14278974214f98d885e6a5"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 91ms

[ Credit 0.51 (same TID) + wrong amount ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.51","tid":11648727951752,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952407","i_extparam":"
TestExtParam123","hmac":"5d4a91d3354fdbf2e8059c0ce649c7bad3d3a05b0d0ca58a116f604274d43074"}
> Recv:{"error":"Transaction Failed","balance":"3.40","hmac":"
55c7a53d511f487bce468254b668df76a89ed6950dbe7376ab48cde7eef05b04"}
> Time spent: 118ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.51","tid":21648727951752,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952407","i_extparam":"
TestExtParam123","hmac":"bf9d3ff6b4e061beacf7568916c8e942f548004b07d0f5f3b07a7959f0d451b2"}
> Recv:{"error":"Transaction Failed","balance":"3.40","hmac":"
55c7a53d511f487bce468254b668df76a89ed6950dbe7376ab48cde7eef05b04"}
> Time spent: 119ms

[ Credit 0.50 (for debit of 0.10) with new tid, i_gameid and i_actionid - are the same ]
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951753,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C11648727952407","i_extparam":"
TestExtParam123","hmac":"0b6a3fd78f85352fa0a908a1269f230d9296391cd459905ff3864d459b980e5c"}
> Recv:{"status":"OK","tid":11648727951753,"balance":"3.40","hmac":"
cde977fdfe49353a3efbda0c8ab0cddf23c8d6d9244e8a8f28a1510611e4b345"}
> Time spent: 176ms
---- Request:credit ----
> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951753,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"C21648727952407","i_extparam":"
TestExtParam123","hmac":"e107509a3d869fd72bee9d5240665293d5afca6e7a523c83a40b3bd438c00b1f"}
> Recv:{"status":"OK","tid":21648727951753,"balance":"3.40","hmac":"
7893024e29551d183ff2eaf5b5d7bb015c38c52cd9ef999d8704eb4d8c1f164f"}
> Time spent: 202ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"3.40","hmac":"
4215661ba7df5542753befdbe7c1c0bfbed46a3d9356298c3fa9e58ff1903889"}
> Time spent: 115ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"3.40","hmac":"
4215661ba7df5542753befdbe7c1c0bfbed46a3d9356298c3fa9e58ff1903889"}
> Time spent: 94ms

[ Debit 0.15 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.15","tid":11648727951754,"
i_gameid":"1gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D11648727952409","i_extparam":"
TestExtParam123","hmac":"a55b2a86eb474ea43348478a29c74b8b56c0604ecdd70d8b99d0e060638f9601"}
> Recv:{"status":"OK","tid":11648727951754,"balance":"3.25","hmac":"
d075740ec8a51add79dd5f1ea4f124befa4a12d883e020828fb37c37038f60b6"}
> Time spent: 209ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.15","tid":21648727951754,"
i_gameid":"2gm1648727951746","i_gamedesc":"998:roulette","i_actionid":"D21648727952409","i_extparam":"
TestExtParam123","hmac":"808bc537f4c5e5d6e7bc789f0f7ba0f8ec366b5bb80bebab5cb16fa8a7569bfc"}
> Recv:{"status":"OK","tid":21648727951754,"balance":"3.25","hmac":"
b8273400e86ba601e62fec358f4000c1ccf1ee34da5d662580babafd1740ec80"}
> Time spent: 255ms

[ Debit 0.50 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951755,"
i_gameid":"1gm1648727951747","i_gamedesc":"998:roulette","i_actionid":"D11648727952410","i_extparam":"
TestExtParam123","hmac":"8078fe988183e4f4f61bafc78b377f5067b3929017fa1d612d37dd9c9d12beea"}
> Recv:{"status":"OK","tid":11648727951755,"balance":"2.75","hmac":"
3303596c1f3bf28e78f2be53f5a0e4a5f32619c650736c646da31a6503f96ff7"}
> Time spent: 227ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951755,"
i_gameid":"2gm1648727951747","i_gamedesc":"998:roulette","i_actionid":"D21648727952410","i_extparam":"
TestExtParam123","hmac":"85918bb312e949bbbee4794c6d28fa9bab887f259431ed7cf6b009860aa2a89c"}
> Recv:{"status":"OK","tid":21648727951755,"balance":"2.75","hmac":"
a9b64ec331b0bab542e599c84ac2c09a7fd1dfc43a9d943038bbfa24c23e988a"}
> Time spent: 232ms

[ Credit -0.50 (wrong amount) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"-0.50","tid":11648727951756,"
i_gameid":"1gm1648727951747","i_gamedesc":"998:roulette","i_actionid":"C11648727952410","i_extparam":"
TestExtParam123","hmac":"be3e4a6558c0efd084114d0f0595ebb3873fbe5a37a4c6e6e6a9727ff5f88a94"}
> Recv:{"error":"Invalid parameters","hmac":"b73765c580d9699bb58079d2f33378c4e9aa36dedc241ac76abc1a0f859c9c52"}
> Time spent: 116ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"-0.50","tid":21648727951756,"
i_gameid":"2gm1648727951747","i_gamedesc":"998:roulette","i_actionid":"C21648727952410","i_extparam":"
TestExtParam123","hmac":"9622d4076fe4b12efbf0f51fe59d988f477d36799850c370c62f825e57957a8e"}
> Recv:{"error":"Invalid parameters","hmac":"b73765c580d9699bb58079d2f33378c4e9aa36dedc241ac76abc1a0f859c9c52"}
> Time spent: 91ms

[ Debit 0.25 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.25","tid":11648727951757,"
i_gameid":"1gm1648727951748","i_gamedesc":"998:roulette","i_actionid":"D11648727952411","i_extparam":"
TestExtParam123","hmac":"a147e60fb2374c4d585f8751930ac03a4b65971a3b342599251b5cb0bfd089d1"}
> Recv:{"status":"OK","tid":11648727951757,"balance":"2.50","hmac":"
03c2ba8eed04d7646351ade08fb829afd98f977360dca785b7073c287531f0ba"}
> Time spent: 246ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.25","tid":21648727951757,"
i_gameid":"2gm1648727951748","i_gamedesc":"998:roulette","i_actionid":"D21648727952411","i_extparam":"
TestExtParam123","hmac":"cc44a1e8a9dd67df476dac1af0d85776e67448023a376f6d89f20bf89d1f1d12"}
> Recv:{"status":"OK","tid":21648727951757,"balance":"2.50","hmac":"
027407c8b4a008ec29bfb91c57c52b39aa272d7c7b26997240371ea924d5c232"}
> Time spent: 264ms

[ Debit cancellation 0.25 ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.25","tid":11648727951758,"
i_gameid":"1gm1648727951748","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"D11648727952411","
i_extparam":"TestExtParam123","hmac":"0629f0702ea06b8959c48250385deeaba7c9e8e80418318c8e51cf05b2d4c109"}
> Recv:{"status":"OK","tid":11648727951758,"balance":"2.75","hmac":"
193f3cbb7d070aea5a0116ebee6fdd1ead92049dd03e209f17037006128a50ad"}
> Time spent: 232ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.25","tid":21648727951758,"
i_gameid":"2gm1648727951748","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"D21648727952411","
i_extparam":"TestExtParam123","hmac":"82dce3c978a43cf2d5d525918b4215e9e727d5e1f91965c79232d6688a87cee7"}
> Recv:{"status":"OK","tid":21648727951758,"balance":"2.75","hmac":"
e982dc706e899299e87534e1754f1e8ba70fc04d341cb448d2c5229a4185bc94"}
> Time spent: 225ms

[ Debit 0.25 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.25","tid":11648727951759,"
i_gameid":"1gm1648727951749","i_gamedesc":"998:roulette","i_actionid":"D11648727952412","i_extparam":"
TestExtParam123","hmac":"dd2112c5615260cfc257d63754c1d2e79c3c7a927bffc6ecc80abbe8a9f08a84"}
> Recv:{"status":"OK","tid":11648727951759,"balance":"2.50","hmac":"
565d7a78fc5ebb447aa31ba7ec6a65d0eaea748080daca4a1b5507817f0f652b"}
> Time spent: 218ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.25","tid":21648727951759,"
i_gameid":"2gm1648727951749","i_gamedesc":"998:roulette","i_actionid":"D21648727952412","i_extparam":"
TestExtParam123","hmac":"41a9d0330280715f481c58d34e1a54c32588dd9c94e392cf105a42195e2f7a0c"}
> Recv:{"status":"OK","tid":21648727951759,"balance":"2.50","hmac":"
346e61933c5870e333ecc7586ca0f94efc3101141b591cc5bb68c3f03e9b3781"}
> Time spent: 232ms

[ Credit 0.50 ]
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951760,"
i_gameid":"1gm1648727951749","i_gamedesc":"998:roulette","i_actionid":"C11648727952412","i_extparam":"
TestExtParam123","hmac":"091953001c3afb325c3968e92de9cf00cfce115d8dc135d04de6b123972b06ac"}
> Recv:{"status":"OK","tid":11648727951760,"balance":"3.00","hmac":"
6f1e8f4f57a53fa5b05206cf1d77e82751b35891204d41d752a67a27b677c4d7"}
> Time spent: 238ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951760,"
i_gameid":"2gm1648727951749","i_gamedesc":"998:roulette","i_actionid":"C21648727952412","i_extparam":"
TestExtParam123","hmac":"f994dec1f015f87529aba2eda3aaa6574bfa66759bb4bd6e453c2bb4bd91f442"}
> Recv:{"status":"OK","tid":21648727951760,"balance":"3.00","hmac":"
42c185ddd4983f6d72110bb67c20282ddc6b670139d04a21391108436d994179"}
> Time spent: 214ms

[ Credit cancellation 0.50 ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951761,"
i_gameid":"1gm1648727951749","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"C11648727952412","
i_extparam":"TestExtParam123","hmac":"959e1c07d4f3660301647226f75103f5a4944b30e062ae9e5cf73984635ca878"}
> Recv:{"status":"OK","tid":11648727951761,"balance":"2.50","hmac":"
6e0dd15caa35d341128da037fd057e8557eec9ed1ae296ff26585740f87fe304"}
> Time spent: 222ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951761,"
i_gameid":"2gm1648727951749","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"C21648727952412","
i_extparam":"TestExtParam123","hmac":"b4381d526ae49106fb24b31249191774985e66bdc31eea40ebbee5817d730cf5"}
> Recv:{"status":"OK","tid":21648727951761,"balance":"2.50","hmac":"
778c4c2834ae21c59d7df154eef227c7a1c3ccd0320dad249a7d7ae216ba5bbb"}
> Time spent: 256ms

======= RUN #2 =======


---- Request:ping ----
> Sent:{"type":"ping","hmac":"855c54693a59a28a1039328ac5a12e9bcafab9f906fc935313e3a76db6376c56"}
> Recv:{"status":"OK","hmac":"e969bada202f1735fedd074a5b1097e48080ef22d83fcbe74d86b0ceaa91bb63"}
> Time spent: 103ms

[ Preparing balance amount of 3.00 ]


---- Request:balance ----
> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"2.50","hmac":"
b390053b9c0fbf614c2783adb559ed93bf19b3ed7bf79dc6a5dc97269954a475"}
> Time spent: 96ms
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"2.50","tid":11648727951762,"
i_gameid":"1gm1648727951750","i_gamedesc":"998:roulette","i_actionid":"D11648727963271","i_extparam":"
TestExtParam123","hmac":"96c8b61b037bb31a40d72796b343630479e1397841b4d66dbbfc005ef453de33"}
> Recv:{"status":"OK","tid":11648727951762,"balance":"0.00","hmac":"
be05d5258993b7862969f0b8cc6436db86ddcc00aee80a82d46846e88d09f1d7"}
> Time spent: 235ms
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"3.00","tid":11648727951763,"
i_gameid":"1gm1648727951750","i_gamedesc":"998:roulette","i_actionid":"C11648727963271","i_extparam":"
TestExtParam123","hmac":"f2661516e987db31a06104bdfdbe00c3388cadbcae85ff6658e94f3714ecf839"}
> Recv:{"status":"OK","tid":11648727951763,"balance":"3.00","hmac":"
135e503c6b0d40e21148f4c5f4e7819ac9ae8dc4b8480277ea3f5beb57430259"}
> Time spent: 230ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"2.50","hmac":"
b390053b9c0fbf614c2783adb559ed93bf19b3ed7bf79dc6a5dc97269954a475"}
> Time spent: 97ms
---- Request:debit ----
> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"2.50","tid":21648727951762,"
i_gameid":"2gm1648727951750","i_gamedesc":"998:roulette","i_actionid":"D21648727963271","i_extparam":"
TestExtParam123","hmac":"a7db18255b89be2a843f1a6678899088953ec6efabd1f63f4fd483d1b5f44576"}
> Recv:{"status":"OK","tid":21648727951762,"balance":"0.00","hmac":"
da48380eee16ee4e18c5c0cc6306c20dd1942b3c0de5377c800d6ccc63636c65"}
> Time spent: 201ms
---- Request:credit ----
> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"3.00","tid":21648727951763,"
i_gameid":"2gm1648727951750","i_gamedesc":"998:roulette","i_actionid":"C21648727963271","i_extparam":"
TestExtParam123","hmac":"4b34c47323bdf397c98f9bde2626ece865d45c5c0a03112589b101954b676d4f"}
> Recv:{"status":"OK","tid":21648727951763,"balance":"3.00","hmac":"
41c6fc9d8fb528b871681ba82000515975da14b9c122f11cd26d3082e578d0f0"}
> Time spent: 206ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"3.00","hmac":"
109ac35e2dc899706c75e1e3647075588012e613c0ebd4af86b5841d58b7adc8"}
> Time spent: 110ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"3.00","hmac":"
109ac35e2dc899706c75e1e3647075588012e613c0ebd4af86b5841d58b7adc8"}
> Time spent: 96ms

[ Debit 0.10 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951764,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963272","i_extparam":"
TestExtParam123","hmac":"d9d7bd952ddc6e9a24e948669fe9f1ad3003fedaf5550622d81e31ef61e35a07"}
> Recv:{"status":"OK","tid":11648727951764,"balance":"2.90","hmac":"
6e4229b941274a325a22aab011ff1ecd6737c6d81636e551b4d0d8d5e180d38a"}
> Time spent: 215ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951764,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963272","i_extparam":"
TestExtParam123","hmac":"eff295644df274c3b96f7c637fbdc95447368e0068afafe732a4c9810eade824"}
> Recv:{"status":"OK","tid":21648727951764,"balance":"2.90","hmac":"
b5cffe92623349613df4531af671354369d6761bb19d3bc0c314e17b9bff2a31"}
> Time spent: 267ms

[ Debit 0.10 (repeat) ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951764,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963272","i_extparam":"
TestExtParam123","hmac":"d9d7bd952ddc6e9a24e948669fe9f1ad3003fedaf5550622d81e31ef61e35a07"}
> Recv:{"status":"OK","tid":11648727951764,"balance":"2.90","hmac":"
6e4229b941274a325a22aab011ff1ecd6737c6d81636e551b4d0d8d5e180d38a"}
> Time spent: 165ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951764,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963272","i_extparam":"
TestExtParam123","hmac":"eff295644df274c3b96f7c637fbdc95447368e0068afafe732a4c9810eade824"}
> Recv:{"status":"OK","tid":21648727951764,"balance":"2.90","hmac":"
b5cffe92623349613df4531af671354369d6761bb19d3bc0c314e17b9bff2a31"}
> Time spent: 152ms

[ Debit 0.10 (repeat with new tid and the same game_id + i_actionid) ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951765,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963272","i_extparam":"
TestExtParam123","hmac":"ee580358fc12b3b83791c8993df94de8b57cc23516349971f15ab20cda7e8792"}
> Recv:{"status":"OK","tid":11648727951765,"balance":"2.90","hmac":"
7d58aaa76e8b7abec408714694a87968227f79772f822b872bbf0393be80fdce"}
> Time spent: 181ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951765,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963272","i_extparam":"
TestExtParam123","hmac":"cb11af25f49c41b7acc8805b271acff8b287ce2a3231ce21d5544d7c14c8e4c3"}
> Recv:{"status":"OK","tid":21648727951765,"balance":"2.90","hmac":"
7cf5bebbdaa0dc7767b215295ac1cf83f91cd75f1ab3cbed4984abf94bdf38ce"}
> Time spent: 193ms
[ Debit 0.10 (one more repeat with new tid and the same game_id + i_actionid) ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.10","tid":11648727951766,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963272","i_extparam":"
TestExtParam123","hmac":"d173ea2e88178c2c719e713324de044f9f70047808c33e8bae678e6342e21733"}
> Recv:{"status":"OK","tid":11648727951766,"balance":"2.90","hmac":"
5e9b8ef6ef9c54f6135c36cf46c9ee296e46ecd568af993dc325a42084fb4e96"}
> Time spent: 196ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.10","tid":21648727951766,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963272","i_extparam":"
TestExtParam123","hmac":"98d6acf510e12a954e2df64837046b459fd8e2821e272944447dcd58a581474d"}
> Recv:{"status":"OK","tid":21648727951766,"balance":"2.90","hmac":"
90142e147c026cb83fc8c9f668969f27c71d55909c596d33dabe30b4232561ac"}
> Time spent: 185ms

[ Debit another amount + same tid ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951766,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963272","i_extparam":"
TestExtParam123","hmac":"78f311925578b9ec0c809393516e0768abd5e012c11f9b968919296a3d4f9515"}
> Recv:{"error":"Transaction Failed","balance":"2.90","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 115ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951766,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963272","i_extparam":"
TestExtParam123","hmac":"bafd5e950262e76855dda8c35349d623798d5629cd7cab51af9f7d60227fbdca"}
> Recv:{"error":"Transaction Failed","balance":"2.90","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 116ms

[ Debit other amount + other tid ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951767,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963273","i_extparam":"
TestExtParam123","hmac":"81f5c67dfecdefb77c7299322da7d3a91c479580ce8bac40be5dbe720cc63c36"}
> Recv:{"status":"OK","tid":11648727951767,"balance":"2.85","hmac":"
9ac5bb7679f04ed19ea0093a0d059369d3d3aa24328230655aa3f13f503338e7"}
> Time spent: 202ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951767,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963273","i_extparam":"
TestExtParam123","hmac":"ee0f7b4a9d5db7785f42666436d0d592033f2ef625bb634f18655043556a1611"}
> Recv:{"status":"OK","tid":21648727951767,"balance":"2.85","hmac":"
b06afa58a579d4ba436a20c2f110e6d4a0aaff32e6af46bad616246037eea84a"}
> Time spent: 492ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"2.85","hmac":"
c67d55b9674481e444bd011932d6af6dbc093bea9189dbadb9e4de0f54e25776"}
> Time spent: 120ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"2.85","hmac":"
c67d55b9674481e444bd011932d6af6dbc093bea9189dbadb9e4de0f54e25776"}
> Time spent: 119ms

[ Credit + debit tid (fail) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951767,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963273","i_extparam":"
TestExtParam123","hmac":"bf190a293482749bcb1bfe643307db1b71281828a53240e84a5886aa7076d1fb"}
> Recv:{"error":"Transaction Failed","balance":"2.85","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 166ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951767,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963273","i_extparam":"
TestExtParam123","hmac":"95bd8f64d176caf20f43f97599e67bb040fd3cdd51e5799988b7592c9e5ca7c7"}
> Recv:{"error":"Transaction Failed","balance":"2.85","hmac":"
759e1564bbac113f0b7cf04387403056428f550901ed99ba4d8583da1ef61252"}
> Time spent: 162ms

[ Bet cancel by sending Credit + new tid with i_rollback ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.05","tid":11648727951768,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_rollback":11648727951767,"i_actionid":"
C11648727963273","i_extparam":"TestExtParam123","hmac":"
eb395b313ec9d97ea34b0aa48a74295fc9f5ac1838ad84990620e0e9e3230d43"}
> Recv:{"status":"OK","tid":11648727951768,"balance":"2.90","hmac":"
2966c89da9df671948fefda210df2163ea63c24d48567476eb1f5d82b20019bb"}
> Time spent: 176ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.05","tid":21648727951768,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_rollback":21648727951767,"i_actionid":"
C21648727963273","i_extparam":"TestExtParam123","hmac":"
1af3056bf00138ac3d17732f828a70586a205a4268e1cbcbcb825b7f181f5003"}
> Recv:{"status":"OK","tid":21648727951768,"balance":"2.90","hmac":"
4ada64cb66fb81245af204745ad0cb2e54acb16ffb7423727d1b3616c6be6411"}
> Time spent: 238ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"2.90","hmac":"
d02d6aa4d6c0ee500c80186364de0393a4213775f7667359bcbed90794925433"}
> Time spent: 98ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"2.90","hmac":"
d02d6aa4d6c0ee500c80186364de0393a4213775f7667359bcbed90794925433"}
> Time spent: 102ms

[ Credit 0.50 (for debit of 0.10) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951769,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963272","i_extparam":"
TestExtParam123","hmac":"ed9216a38e0907961daabb1e2220c6fa27a2ab0386b4e84eb464571bb9275f06"}
> Recv:{"status":"OK","tid":11648727951769,"balance":"3.40","hmac":"
b158f5e162447476ce78ff27a44919ac9d7f29bab442a178bbaabe4d76e394a2"}
> Time spent: 233ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951769,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963272","i_extparam":"
TestExtParam123","hmac":"ac3e56b2a34be30287a1fa4d57e0434185b1cfa4be34dcfd816373a0fd28f0c7"}
> Recv:{"status":"OK","tid":21648727951769,"balance":"3.40","hmac":"
e34aa2030d68749300aac12036c77d80e928f5c7a944f91f45862a79eb12b83f"}
> Time spent: 207ms

[ Credit 0.50 (repeat) ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951769,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963272","i_extparam":"
TestExtParam123","hmac":"ed9216a38e0907961daabb1e2220c6fa27a2ab0386b4e84eb464571bb9275f06"}
> Recv:{"status":"OK","tid":11648727951769,"balance":"3.40","hmac":"
b158f5e162447476ce78ff27a44919ac9d7f29bab442a178bbaabe4d76e394a2"}
> Time spent: 161ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951769,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963272","i_extparam":"
TestExtParam123","hmac":"ac3e56b2a34be30287a1fa4d57e0434185b1cfa4be34dcfd816373a0fd28f0c7"}
> Recv:{"status":"OK","tid":21648727951769,"balance":"3.40","hmac":"
e34aa2030d68749300aac12036c77d80e928f5c7a944f91f45862a79eb12b83f"}
> Time spent: 122ms

[ Credit 0.50 + wrong user ID ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621f","currency":"EUR","amount":"0.50","tid":11648727951769,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963272","i_extparam":"
TestExtParam123","hmac":"84f6e83eb5388e2a62645eb24a53d9de3685c1ebfc7123effa26c2ac6b0e0819"}
> Recv:{"error":"Invalid userid","hmac":"8d0093157cd4af2a6cb5a5a92fe97ba611e7beab8ed28e1c1397006bfbfd8975"}
> Time spent: 113ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851f","currency":"USD","amount":"0.50","tid":21648727951769,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963272","i_extparam":"
TestExtParam123","hmac":"37cd9cd0a55b7c00011dd0364d9bd0fb5e38e061518d002864232c2c3eb8e71c"}
> Recv:{"error":"Invalid userid","hmac":"8d0093157cd4af2a6cb5a5a92fe97ba611e7beab8ed28e1c1397006bfbfd8975"}
> Time spent: 103ms

[ Credit 0.50 + wrong currency ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"USD","amount":"0.50","tid":11648727951769,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963272","i_extparam":"
TestExtParam123","hmac":"6762c66612ec27c13c6537a04e43da7a4fd1d77f0139dad7a8fdf9a027cc7a76"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 93ms
---- Request:balance ----
> Sent:{"type":"balance","userid":"62447203ee621","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"8486bd562aa3c900a9e2e4d525c06e0cdaaa98b9a94ade0eceb176b67a880d97"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 116ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"EUR","amount":"0.50","tid":21648727951769,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963272","i_extparam":"
TestExtParam123","hmac":"9491759e74e1a948fee4236b14726c077249b3f7ce7e0cbcc490aad90dda5337"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 99ms
---- Request:balance ----
> Sent:{"type":"balance","userid":"6244721467851","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"3af28a226c617fa1ae5b3f7ca6738875e328415bef14278974214f98d885e6a5"}
> Recv:{"error":"Invalid currency","hmac":"370f66d7e0db3abcd96a055643bfca4ffee3cd74616bc7264aa74a0ebb24180e"}
> Time spent: 93ms

[ Credit 0.51 (same TID) + wrong amount ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.51","tid":11648727951769,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963272","i_extparam":"
TestExtParam123","hmac":"5ad40e548c4119cee3513f4e1f9676f98bf577a02850eaccddb04f58a7f02b6c"}
> Recv:{"error":"Transaction Failed","balance":"3.40","hmac":"
55c7a53d511f487bce468254b668df76a89ed6950dbe7376ab48cde7eef05b04"}
> Time spent: 127ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.51","tid":21648727951769,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963272","i_extparam":"
TestExtParam123","hmac":"4f5cf04f0d6f71247da944f372ddb917cc864b8ffeebb6298eaddaeaee1952a4"}
> Recv:{"error":"Transaction Failed","balance":"3.40","hmac":"
55c7a53d511f487bce468254b668df76a89ed6950dbe7376ab48cde7eef05b04"}
> Time spent: 121ms

[ Credit 0.50 (for debit of 0.10) with new tid, i_gameid and i_actionid - are the same ]
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951770,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C11648727963272","i_extparam":"
TestExtParam123","hmac":"95d78d94b2a349a256364771f589399d4ce205242a2c24fc285a953cdf9e149a"}
> Recv:{"status":"OK","tid":11648727951770,"balance":"3.40","hmac":"
3f131cd4220b5baeee0555fd6a37a8a815425c7b2bb0b4ff2e20df4ad51bc461"}
> Time spent: 167ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951770,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"C21648727963272","i_extparam":"
TestExtParam123","hmac":"b3928ae5001df645159bba8372042052fe145f4c5b141d064096e22d1cc2ce91"}
> Recv:{"status":"OK","tid":21648727951770,"balance":"3.40","hmac":"
8240121db01742a4af19ab93edb2c03d654e752742c5b1653f245dd5e72aff3b"}
> Time spent: 183ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"62447203ee621","currency":"EUR","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"c62ae1ff243b0369fd6c5d5a263447f4cb782e5112e07293c22a3b8800b8dfa2"}
> Recv:{"status":"OK","balance":"3.40","hmac":"
4215661ba7df5542753befdbe7c1c0bfbed46a3d9356298c3fa9e58ff1903889"}
> Time spent: 96ms

---- Request:balance ----


> Sent:{"type":"balance","userid":"6244721467851","currency":"USD","i_gamedesc":"998:roulette","i_extparam":"
TestExtParam123","hmac":"2a91dbde95a9d4dde92eca75dd8e7428d0a8a0cf8a743fcaf9f11d1c03b7d323"}
> Recv:{"status":"OK","balance":"3.40","hmac":"
4215661ba7df5542753befdbe7c1c0bfbed46a3d9356298c3fa9e58ff1903889"}
> Time spent: 102ms

[ Debit 0.15 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.15","tid":11648727951771,"
i_gameid":"1gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D11648727963274","i_extparam":"
TestExtParam123","hmac":"56f5329e1be606afd8f2315c1e1cbe56e3c2c7f4bb2d7707061eb857de11e6fc"}
> Recv:{"status":"OK","tid":11648727951771,"balance":"3.25","hmac":"
df12c02f9a87baa67e83d524b104e16d09e34c7cc7cbebc6f90ebca209866171"}
> Time spent: 205ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.15","tid":21648727951771,"
i_gameid":"2gm1648727951751","i_gamedesc":"998:roulette","i_actionid":"D21648727963274","i_extparam":"
TestExtParam123","hmac":"34a2545f3ee117c278d269e0c91b69c3701bbdd4915fee8fe04751236b2e4c68"}
> Recv:{"status":"OK","tid":21648727951771,"balance":"3.25","hmac":"
813f5d1ec055f71caf26c489a85c722e226f46faffbdf425386af2180ffd1511"}
> Time spent: 229ms

[ Debit 0.50 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951772,"
i_gameid":"1gm1648727951752","i_gamedesc":"998:roulette","i_actionid":"D11648727963275","i_extparam":"
TestExtParam123","hmac":"979271b0a112fbaa9885f5958b719c6dec541606d8d27e9ffdb06ad69a257289"}
> Recv:{"status":"OK","tid":11648727951772,"balance":"2.75","hmac":"
dcee00ef0e1d303e7bc64db237df9c81674a93ecc2dc78f99256484af7f0bb98"}
> Time spent: 226ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951772,"
i_gameid":"2gm1648727951752","i_gamedesc":"998:roulette","i_actionid":"D21648727963275","i_extparam":"
TestExtParam123","hmac":"678c6d6314b107a6b0e3d11ed93a97ac7a0cabb04c6a43401decda8c316d4e63"}
> Recv:{"status":"OK","tid":21648727951772,"balance":"2.75","hmac":"
af23471c9ecc3d12902fc0ba2a64ac8eda276d4efa186a83f6d4c62dc1d9de29"}
> Time spent: 218ms
[ Credit -0.50 (wrong amount) ]
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"-0.50","tid":11648727951773,"
i_gameid":"1gm1648727951752","i_gamedesc":"998:roulette","i_actionid":"C11648727963275","i_extparam":"
TestExtParam123","hmac":"0f138f4d2d8e2d5d1a89bf5f788cd0a8ad93afedc6a947c59367c63aec8ab38a"}
> Recv:{"error":"Invalid parameters","hmac":"b73765c580d9699bb58079d2f33378c4e9aa36dedc241ac76abc1a0f859c9c52"}
> Time spent: 102ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"-0.50","tid":21648727951773,"
i_gameid":"2gm1648727951752","i_gamedesc":"998:roulette","i_actionid":"C21648727963275","i_extparam":"
TestExtParam123","hmac":"7528acec1bcba139c7a0a269badd6681ecf2f900e0e22f3700520bda245ee46c"}
> Recv:{"error":"Invalid parameters","hmac":"b73765c580d9699bb58079d2f33378c4e9aa36dedc241ac76abc1a0f859c9c52"}
> Time spent: 91ms

[ Debit 0.25 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.25","tid":11648727951774,"
i_gameid":"1gm1648727951753","i_gamedesc":"998:roulette","i_actionid":"D11648727963276","i_extparam":"
TestExtParam123","hmac":"068dddcc3b060d80cfa302bb33b5506678bf2909eed9c624da5b2a309824c317"}
> Recv:{"status":"OK","tid":11648727951774,"balance":"2.50","hmac":"
62181b1997ea6d4c8133fb3ecfd75273e78ad96702428373cecbe6fc28d2759e"}
> Time spent: 229ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.25","tid":21648727951774,"
i_gameid":"2gm1648727951753","i_gamedesc":"998:roulette","i_actionid":"D21648727963276","i_extparam":"
TestExtParam123","hmac":"31cfe540c290846240e8c41e213f1fc95f79bcc42b38aa50b2cbb87cd1e41a6e"}
> Recv:{"status":"OK","tid":21648727951774,"balance":"2.50","hmac":"
d8a8d5001676228730c3561f12b128e5d775f3a5e4589fef8ad5544403da5f3b"}
> Time spent: 259ms

[ Debit cancellation 0.25 ]


---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.25","tid":11648727951775,"
i_gameid":"1gm1648727951753","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"D11648727963276","
i_extparam":"TestExtParam123","hmac":"8e1bf20da589fe730ef8512e2dc2b645fd4f6ac7a7458c619a43854f6f05f878"}
> Recv:{"status":"OK","tid":11648727951775,"balance":"2.75","hmac":"
0e4dfce05e3bc3706e02786da272b00cb0bfec207f1b37b1be00f00d061b0930"}
> Time spent: 210ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.25","tid":21648727951775,"
i_gameid":"2gm1648727951753","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"D21648727963276","
i_extparam":"TestExtParam123","hmac":"7dfb49e35c009655511c44f969e8810feb2d9c045633dcc421c7a1c1d7d37477"}
> Recv:{"status":"OK","tid":21648727951775,"balance":"2.75","hmac":"
e63820c7442d8d0d7fc6ee4e007323ddc2223fbd47cccf3165438baccaac6f9a"}
> Time spent: 257ms

[ Debit 0.25 ]
---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.25","tid":11648727951776,"
i_gameid":"1gm1648727951754","i_gamedesc":"998:roulette","i_actionid":"D11648727963277","i_extparam":"
TestExtParam123","hmac":"e5049d1420ba66e522891ea42b34021f2c9cd5edd6a91ea36edd9ec46a0beec2"}
> Recv:{"status":"OK","tid":11648727951776,"balance":"2.50","hmac":"
06e13b63a8058bc49a3e68c16f9c306fe3803aa98897f04544d3f72e39d0592c"}
> Time spent: 243ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.25","tid":21648727951776,"
i_gameid":"2gm1648727951754","i_gamedesc":"998:roulette","i_actionid":"D21648727963277","i_extparam":"
TestExtParam123","hmac":"2f8c6ca73bcf243b9d278b5e2d06b86252c38f4f9694814658a45436f27374d0"}
> Recv:{"status":"OK","tid":21648727951776,"balance":"2.50","hmac":"
2d793c8dd6ed25bcd0a51497826c1dd73af1a5747ee897de6f0880b8fc0c8c43"}
> Time spent: 238ms

[ Credit 0.50 ]
---- Request:credit ----
> Sent:{"type":"credit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951777,"
i_gameid":"1gm1648727951754","i_gamedesc":"998:roulette","i_actionid":"C11648727963277","i_extparam":"
TestExtParam123","hmac":"eee58264fd7369f711a83a039aea132fc81c9020c553b013220859e26f1c048a"}
> Recv:{"status":"OK","tid":11648727951777,"balance":"3.00","hmac":"
b4f1bd65b6ece784514c73a2d5e5247803f22127cec9bd2f218d6e96ed22e6be"}
> Time spent: 205ms

---- Request:credit ----


> Sent:{"type":"credit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951777,"
i_gameid":"2gm1648727951754","i_gamedesc":"998:roulette","i_actionid":"C21648727963277","i_extparam":"
TestExtParam123","hmac":"4e9b8a9f83a058e27065f3a415a703c7fb3db89e7708f9e3d2b850125e05ac04"}
> Recv:{"status":"OK","tid":21648727951777,"balance":"3.00","hmac":"
55982de21a5ffefba60a38fe24b5db89357d45207389346bef28a040cdbc49a1"}
> Time spent: 202ms

[ Credit cancellation 0.50 ]


---- Request:debit ----
> Sent:{"type":"debit","userid":"62447203ee621","currency":"EUR","amount":"0.50","tid":11648727951778,"
i_gameid":"1gm1648727951754","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"C11648727963277","
i_extparam":"TestExtParam123","hmac":"1f2b0bf855d5ed1c0ecac4b78e92d57b9063c1f9d1ff91dd0e11a0ee773b1c32"}
> Recv:{"status":"OK","tid":11648727951778,"balance":"2.50","hmac":"
954aa73268418d4043a9cda2dfa2412acdf9daae9355ce30f0e3fc96100355ca"}
> Time spent: 255ms

---- Request:debit ----


> Sent:{"type":"debit","userid":"6244721467851","currency":"USD","amount":"0.50","tid":21648727951778,"
i_gameid":"2gm1648727951754","i_gamedesc":"998:roulette","subtype":"cancel","i_actionid":"C21648727963277","
i_extparam":"TestExtParam123","hmac":"743f0c42b5a2bf256e749bcf2bbb1d403802a7c5828bb554158217786996ce03"}
> Recv:{"status":"OK","tid":21648727951778,"balance":"2.50","hmac":"
b6bd5b62c13184f706c893b02782a02523c3e40acf1309dc4d2f24b29e0410ab"}
> Time spent: 229ms

==============
===== OK =====

You might also like