---
# System prepended metadata

title: Single wallet API doc (Platform to game provider) (v1.7)

---

# Single wallet API doc (Platform to game provider) (v1.7)


[TOC]


---

## Encrypt and decrypt

### Verification
    Connecting method are all post.
    Body use json format.
    
    Encryption
    AES algorithm, specifically CBC mode, with 256 bits key length and PKCS7 padding.
    
    Encrypt whole data-raw 
    
    iv(base64) + encrypt data-raw(base64) send
    

### Parameter detail
    
| Parameter | Discription        | Remark                |
|:---------:|:------------------ |:--------------------- |
|  domain   | Website IP Address | Please ask personally |
|  api_key  | Encrypt key        | Please ask personally |
|  version  | Version            | Please ask personally |
|   hall    | Code               | Please ask personally |


### PHP encrypt example
    // encrypt:
    
    function encrypt($string)
    {
        $key = base64_decode('MB7j5Nh5GQJsWx6CJS7HEp53YBng0lNZz4u0RHfC83k=');
        $encryptMethod = "AES-256-CBC";
        $iv = openssl_random_pseudo_bytes(16);
        $output = openssl_encrypt($string, $encryptMethod, $key, OPENSSL_RAW_DATA, $iv);
        $output = base64_encode($iv) . base64_encode($output);

        return $output;
    }
    
    
    // decrypt:
    
    function decrypt($string)
    {

        $key = base64_decode('MB7j5Nh5GQJsWx6CJS7HEp53YBng0lNZz4u0RHfC83k=');
        $encryptMethod = "AES-256-CBC";

        $iv = base64_decode(substr($string, 0, 24));
        $string = substr($string, 24);
        $output = openssl_decrypt(base64_decode($string), $encryptMethod, $key, OPENSSL_RAW_DATA, $iv);

        return $output;
    }

    
### PHP collect member limit as an example

    body raw = {"accont":"dome"}    
    
    encrypt =>8JOV5zqPb/FlIbFPmEWaJA==OtQQX9hfLEht9gX2rt26Q0UlVOWDKlKsLoZKznykuXJLW6E9TLehsTeLBbmUdyLP
    
    
    curl --location --request POST
    'http://{{domain}}/balance' \
    --header 'Content-Type: text/plain' \
    --data-raw '8JOV5zqPb/FlIbFPmEWaJA==OtQQX9hfLEht9gX2rt26Q0UlVOWDKlKsLoZKznykuXJLW6E9TLehsTeLBbmUdyLP'


    Response as 
    YxR5y6zine+2Ck+yvksbSg==Bk3krlhPmCVymahPJ26dosmJ2uGT6yXq2CJ+lYuB8ryl5Q9HzOFmHReteXx0eZ\/w
    
    decrypt =>
    {"Code":XX,"Account":"xx","Balance":"999"}



---

## API

### Encrypt test

    Request POST 
    body-raw 'str'

URL

    encrypt/{api_key}  // encrypt  
    decrypt/{api_key}  // decode
    
    Response：
    result


### Player varification
    
    Request POST 
    {domain}/{version}/{hall}/user


Game party send:

| Parameter | Type | Remark                                                    |
|:--------- |:---- |:--------------------------------------------------------- |
| Account   | str  | Support special symbols "\_" (required)                   |
| Time      | int  | Unix timestamp seconds when the request was sent (option) |


Our response:

| Parameter | Discription                                              | Remark                                           |
|:---------:|:-------------------------------------------------------- |:------------------------------------------------ |
|   Code    | Success or not                                           |                                                  |
|  Account  | Member identification                                    | If Code is not 1, Can be ignored                 |
|  Balance  | Player balance                                           | If Code is not 1, Can be ignored                 |
|   Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned |

Code instruction:

| Code | Discription       | Remark |
|:----:|:----------------- |:------ |
|  1   | Success           |        |
|  0   | Undentified error |        |


### Collect member balance

    Request POST 
    {domain}/{version}/{hall}/balance


Game party send:

| Parameter | Type | Remark                                                    |
|:---------:|:---- |:--------------------------------------------------------- |
|  Account  | str  | (Required)                                                |
|   Time    | int  | Unix timestamp seconds when the request was sent (option) |


Our response:

| Parameter | Discription                                              | Remark                                           |
|:---------:|:-------------------------------------------------------- |:------------------------------------------------ |
|   Code    | Success or not                                           |                                                  |
|  Account  | Member identification                                    | If Code is not 1, Can be ignored                 |
|  Balance  | Player balance                                           | If Code is not 1, Can be ignored                 |
|  IsLock   | Balance lock or not                                      | true or false                                    |
|   Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned |


Code instruction:

| code | Discription       | Remark |
|:----:|:----------------- |:------ |
|  1   | Success           |        |
|  0   | Undentified error |        |


### Transfer (Can immediate know payout type, also use to cancel bet sheet and compensate balance)

    Request POST 
    {domain}/{version}/{hall}/transfer


Game party send:

| Parameter  | Type         | Remark                                                                                                              |
|:----------:|:------------ |:------------------------------------------------------------------------------------------------------------------- |
|  Account   | str          | (required)                                                                                                          |
|    Type    | str          | · add: Add amount<br> · reduce: Reduce amount                                                                       |
|   Amount   | number(18,2) | Change balance                                                                                                      |
|   BetId    | str          | Bet ID Unique value (required)                                                                                      |
| TransferId | str          | Transfer ID unique value (required)<br>Onces resend at internet timeout, please makesure same TransferId at resend |
|    Time    | int          | Unix timestamp seconds when the request was sent (option)                                                           |

P.S. If player lost reduce, if player win, add amount


Our response:

| Parameter  | Discription                                              | Remark                                                                         |
|:----------:|:-------------------------------------------------------- |:------------------------------------------------------------------------------ |
|    Code    | Success or not                                           |                                                                                |
|  Account   | Member identification                                    | If Code is not 1, Can be ignored                                               |
|  Balance   | Player balance                                           | Balance after calculation<br>If Code is not 1, Can be ignored                  |
| TransferId | Transfer ID unique value (required)                      | The unique value of the same BetId can be<br> If Code is not 1, Can be ignored |
|   BetId    | Bet ID Unique value (required)                           | Bet Unique value<br> If Code is not 1, Can be ignored                          |
|    Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned                               |


Type instruction:

|  Type  | Discription   | Remark        |
|:------:|:------------- |:------------- |
|  add   | Add amount    | During payout |
| reduce | Reduce amount | Betting       |


Code instruction:

| code | Discription          | Remark |
|:----:|:-------------------- |:------ |
|  1   | Success              |        |
|  0   | Undentified error    |        |
|  -2  | Insufficient balance |        |


### Bet (When can't know the payout result immediately)

    Request POST 
    {domain}/{version}/{hall}/bet


Game party send:

| Parameter  | Type         | Remark                                                                                                             |
|:----------:|:------------ |:------------------------------------------------------------------------------------------------------------------ |
|  Account   | str          | (required)                                                                                                         |
| TransferId | str          | Transfer ID unique value (required)<br>Onces resend at internet timeout, please makesure same TransferId at resend |
|   BetId    | str          | Bet ID unique value (required)                                                                                     |
|   Amount   | number(18,2) | Change balance                                                                                                     |
|    Time    | int          | Unix timestamp seconds when the request was sent (option)                                                          |


Our response:

| Parameter  | Discription                                              | Remark                                                        |
|:----------:|:-------------------------------------------------------- |:------------------------------------------------------------- |
|    Code    | Success or not                                           |                                                               |
|  Account   | Member identification                                    | If Code is not 1, Can be ignored                              |
|  Balance   | Player balance                                           | Balance after calculation<br>If Code is not 1, Can be ignored |
| TransferId | Transfer ID unique value (required)                      | If Code is not 1, Can be ignored                              |
|   BetId    | Bet ID unique value (required)                           | If Code is not 1, Can be ignored                              |
|    Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned              |


Code instruction:

| code | Discription          | Remark |
|:----:|:-------------------- |:------ |
|  1   | Success              |        |
|  0   | Undentified error    |        |
|  -3  | Insufficient balance |        |


### Payout (When can't know the payout result immediately)
If payout amount is 0 no need to pay
    
    Request POST 
    {domain}/{version}/{hall}/payout


Game party send:

| Parameter  | Type         | Remark                                                                                           |
|:----------:|:------------ |:------------------------------------------------------------------------------------------------ |
|  Account   | str          | (Required)                                                                                       |
| TransferId | str          | Transfer ID unique value (required)<br>Onces resend at internet timeout, please makesure same TransferId at resend |
|   BetId    | str          | Bet ID unique value (required)                                                                      |
|   Amount   | number(18,2) | Change balance                                                                                   |
|    Time    | int          | Unix timestamp seconds when the request was sent (option)                                        |


Our response:

| Parameter  | Discription                                              | Remark                                                        |
|:----------:|:-------------------------------------------------------- |:------------------------------------------------------------- |
|    Code    | Success or not                                           |                                                               |
|  Account   | Member identification                                    | If Code is not 1, Can be ignored                              |
|  Balance   | Player balance                                           | Balance after calculation<br>If Code is not 1, Can be ignored |
| TransferId | Transfer ID unique value (required)                         | If Code is not 1, Can be ignored                              |
|   BetId    | Bet ID unique value (required)                              | If Code is not 1, Can be ignored                              |
|    Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned              |


Code instruction:

| code | Discription       | Remark |
|:----:|:----------------- |:------ |
|  1   | Success           |        |
|  0   | Undentified error |        |


### Lock player wallet (optional)
    
    Request POST 
    {domain}/{version}/{hall}/auth


Game party send:

| Parameter | Type | Remark                                                    |
|:---------:|:---- |:--------------------------------------------------------- |
|  Account  | str  | Support special symbols "\_" (required)                   |
|   Time    | int  | Unix timestamp seconds when the request was sent (option) |

Our response:

| Parameter | Discription                                              | Remark                                           |
|:---------:|:-------------------------------------------------------- |:------------------------------------------------ |
|   Code    | Success or not                                           |                                                  |
|  Account  | Member identification                                    | If Code is not 1, Can be ignored                 |
|   Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned |


Code instruction:

| code | Discription       | Remark |
|:----:|:----------------- |:------ |
|  1   | Success           |        |
|  0   | Undentified error |        |


### Cancel lock (optional)
    
    Request POST 
    {domain}/{version}/{hall}/release


Game party send:

| Parameter | Type | Remark                                                    |
|:---------:|:---- |:--------------------------------------------------------- |
|  Account  | str  | Support special symbols "\_" (required)                   |
|   Time    | int  | Unix timestamp seconds when the request was sent (option) |


Our response:

| Parameter | Discription                                              | Remark                                           |
|:---------:|:-------------------------------------------------------- |:------------------------------------------------ |
|   Code    | Success or not                                           |                                                  |
|  Account  | Member identification                                    | If Code is not 1, Can be ignored                 |
|   Time    | Unix timestamp seconds when our processing was completed | If Time is not null, this value will be returned |


Code instruction:

| code | Discription       | Remark |
|:----:|:----------------- |:------ |
|  1   | Success           |        |
|  0   | Undentified error |        |


### Error code instruction

| code | Discription                 | Remark                       |
|:----:|:--------------------------- |:---------------------------- |
|  0   | Undentified error           | Result will not be encrypted |
|  -1  | api decode failed           | Result will not be encrypted |
|  -2  | raw format error            | Result will not be encrypted |
|  -3  | Member verification failed  | Result will not be encrypted |
|  -4  | Player Insufficient balance | Result will be encrypted     |
|  -5  | Missing required parameters | Result will not be encrypted |
|  -6  | Bet amount format error     | Result will not be encrypted |
|  -7  | Wallet is locked            | Result will not be encrypted |



