Seamless Wallet Setup & Security
This guide will help you set up and configure Seamless Wallet integration with EvenBet Gaming.
What is Seamless Wallet?
In Seamless Wallet integrations, the EvenBet system does not store player funds. Your system remains the single source of truth for player balances. Whenever money needs to be withdrawn or deposited, our system makes a callback request to your server, and you handle the actual balance changes.
Prerequisites
Before you begin integration, the following configuration is required:
SEAMLESS_KEY
- A secure key used to sign and verify all requests
- We provide this key to you during setup
- Must be different for test and production environments
- Keep this key secure and never expose it in client-side code
If your seamless key is compromised, immediately notify EvenBet support. For better security, we recommend periodic key rotations.
Communication Protocol
All communication between EvenBet and your system follows these rules:
Request Format
- Method: HTTP POST
- Content Type: JSON
- Authentication: Signature-based (see Security section below)
Response Format
- Content Type: JSON
- Required fields: Vary by request type (see individual API references)
- Error handling: Return appropriate error codes (see Error Reference)
Security
All requests are secured using signature-based authentication to ensure data integrity and prevent unauthorized access.
Request Signature
Every request from EvenBet includes a signature in the HTTP header that you must validate.
Header name: sign
How the signature is generated:
- The complete JSON request body is converted to a string
- Your
SEAMLESS_KEYis appended to this string - SHA256 hash is applied to the combined string
- The resulting hash is sent in the
signheader
Signature Validation Example (PHP)
<?php
// Step 1: Get the incoming request data
$jsonMessage = file_get_contents('php://input'); // Raw JSON string
$sign = $_SERVER['HTTP_SIGN']; // Signature from header
$SEAMLESS_KEY = 'your_seamless_key_here'; // Your seamless key
// Step 2: Calculate expected signature
$expectedSign = hash('sha256', $jsonMessage . $SEAMLESS_KEY);
// Step 3: Validate signature
if ($sign !== $expectedSign) {
// Invalid signature - return error
http_response_code(200);
header('Content-Type: application/json');
echo json_encode([
'errorCode' => 1,
'errorDescription' => 'Invalid signature'
]);
exit;
}
// Step 4: If valid, parse and process the request
$request = json_decode($jsonMessage, true);
// ... continue with your business logic
?>
Signature Validation Example (Node.js)
const crypto = require('crypto');
function validateSignature(req, SEAMLESS_KEY) {
// Get the raw body and signature
const jsonMessage = JSON.stringify(req.body);
const receivedSign = req.headers['sign'];
// Calculate expected signature
const expectedSign = crypto
.createHash('sha256')
.update(jsonMessage + SEAMLESS_KEY)
.digest('hex');
// Validate
if (receivedSign !== expectedSign) {
return false;
}
return true;
}
// Usage in Express.js
app.post('/api/evenbet/wallet', (req, res) => {
if (!validateSignature(req, process.env.SEAMLESS_KEY)) {
return res.json({
errorCode: 1,
errorDescription: 'Invalid signature'
});
}
// Continue processing...
});
- The signature is calculated using the exact raw JSON string as received
- Do not parse the JSON before validating the signature
- The
SEAMLESS_KEYis not sent in the request - only you and EvenBet know it - Different
SEAMLESS_KEYvalues should be used for test and production environments
IP Whitelisting
For production environments, IP whitelisting is required for both sides:
EvenBet side:
- Our specialists will configure IP whitelisting on our servers
- Only requests from your whitelisted IPs will be accepted
Your side:
- You must whitelist EvenBet's IP addresses
- Only accept requests from EvenBet's IPs
- We will provide you with the IP addresses to whitelist
To request IP whitelist changes:
- Contact your EvenBet account manager
- Provide your server IP addresses
IP whitelisting is not required for test/staging environments, but is mandatory for production.