Standard Wallet Integration

What is the Standard Wallet?

The Standard Wallet is a REST API definition (designed by ThrillTech) which an operator needs to implement support for. The ThrillGate service uses the Standard Wallet API (as a client) to communicate with the operator's wallet to perform the following actions:

  • Player token authentication
  • Debit / Credit transactions (single)
  • Credit transaction batches
  • Transaction cancellation

Standard Wallet Sequence flows

Below is a sequence diagram of the expected data flow between ThrillGate and the operator wallet API:

Configuring a Standard Wallet Integration in ThrillGate

To configure the ThrillGate Service to connect to your Standard Wallet API compliant service, you need to configure a Wallet resource.

To configure a wallet:

  • URL: POST http://localhost:8100/admin/wallets
  • Headers:
    • Authorization: Thrill ID Bearer token
  • Body:
{
    "id": "Brand1Wallet",
    "operator_id": "thrilltech",
    "brand_id": "brand1",
    "wallet_type": "StandardWallet",
    "connection_details": {
        "protocol": "http",
        "host": "host.docker.internal",
        "port": 8201
    },
    "endpoints": {
        "auth": {
            "POST": "/wallet/authenticate"
        },
        "balance": {
            "GET": "/wallet/balance"
        },
        "cancel_bet": {
            "DELETE": "/wallet/cancel"
        },
        "transaction": {
            "POST": "/wallet/transaction"
        },
        "transaction_batch": {
            "POST": "/wallet/transaction/batch"
        },
        "cancel_batch": {
            "DELETE": "/wallet/transaction/batch"
        }
    },
    "config": {
        "secret_key": "12345",
        "accept_zero_value_credits": true,
        "must_close_gamerounds": false
    }
}
PropertyDescription
idThe ID you want to assign to the wallet. This is a unique identifier
operator_idThe operator ID that this wallet is for
brand_idThe brand ID that this wallet is for
wallet_typeThis must be set to StandardWallet
connection_details.protocolThe protocol of the url. Usually http or https depending on your setup
connection_details.hostThe hostname for your server. While using the AIO container, it is recommended you keep this set to host.docker.internal
connection_details.portThe port that your server is listening on
endpointsThis is an object that describes the required endpoints for the Standard Wallet API
endpoints.authThis describes the endpoint that ThrillGate will make player authentication calls to
endpoints.balanceThis describes the endpoint that ThrillGate will make player balance requests to
endpoints.transactionThis describes the endpoint that ThrillGate will call to perform transactions
endpoints.cancel_betThis describes the endpoint that ThrillGate will make to cancel transactions
endpoints.transaction_batchThis describes the endpoint that ThrillGate will make for transaction batch calls
endpoints.cancel_batchThis describes the endpoint that ThrillGate will make to cancel transaction batches
configAn object that contains specific configuration elements for the Standard Wallet
config.secret_keyThis is the key that will be used to generate the HMAC value that is sent on each wallet request in the x-server-authorization header
config.accept_zero_value_creditsThis defines whether the external wallet supports Credit transactions which have a value of zero (0)
config.must_close_gameroundsThis defines whether the external wallet requires gamerounds to be closed

NOTE: If you need to change the definition of the endpoints, feel free to do so. Make sure that you use the correct HTTP verb and specify the endpoints as needed by your system.

Next Steps

Once you have understood the purpose of each of the Standard Wallet API calls as well as the flows around transaction and transaction batch handling, you are ready to start integrating the Standard Wallet API into your system. Refer to the provided API reference documentation and OpenAPI specs that have been provided to you.