Sandbox
Ambiente de testes integrado ao Portal Admin para validar sua integração antes do go-live
Visão Geral
O Sandbox FourPlay está integrado ao Portal Admin em https://admin.fourplay.studio. Ele permite que você:
- Crie sessões de teste sem usar credenciais de produção
- Simule chamadas de balance, debit, credit e rollback para o seu servidor
- Visualize os logs de callbacks em tempo real
- Verifique se sua validação HMAC está funcionando corretamente
Não existe um ambiente separado em sandbox.fourplay.studio. Todo o ferramental de teste está disponível no painel admin.
Acessando o Sandbox
- Acesse
https://admin.fourplay.studiocom as suas credenciais de operador - No menu lateral, acesse a seção Sandbox ou Testes
- Configure a URL de callback do seu servidor de desenvolvimento
Testar com Servidor Local (ngrok)
Para testar callbacks recebidos pelo seu servidor local, use um túnel HTTPS como o ngrok:
Instale e execute o ngrok
# Instalar (macOS/Linux)
brew install ngrok
# ou baixar em https://ngrok.com/download
# Iniciar túnel para sua porta local (ex: 3000)
ngrok http 3000O ngrok exibirá uma URL HTTPS pública, por exemplo: https://a1b2c3d4.ngrok.io
Configure a URL de callback no Sandbox
Use a URL gerada pelo ngrok como base do callback:
https://a1b2c3d4.ngrok.io/walletOs callbacks serão enviados para:
POST https://a1b2c3d4.ngrok.io/wallet/balancePOST https://a1b2c3d4.ngrok.io/wallet/debitPOST https://a1b2c3d4.ngrok.io/wallet/creditPOST https://a1b2c3d4.ngrok.io/wallet/rollback
Inicie seu servidor local
# Node.js (Express)
node server.js
# PHP
php -S localhost:3000
# Python
python app.py
# .NET
dotnet runExecute o fluxo de teste no Sandbox
No Portal Admin, use o Sandbox para:
- Criar uma sessão de teste com um
externalPlayerIdfictício - Abrir o jogo em modo de teste
- Fazer apostas e verificar os logs de callback no painel
Sandbox Wallet Endpoints
O próprio FourPlay Admin expõe endpoints de sandbox que simulam callbacks de wallet. Você pode usar esses endpoints para testar sua lógica de integração:
POST https://admin.fourplay.studio/sandbox/wallet/balance
POST https://admin.fourplay.studio/sandbox/wallet/debit
POST https://admin.fourplay.studio/sandbox/wallet/credit
POST https://admin.fourplay.studio/sandbox/wallet/rollbackEsses endpoints são autenticados com os mesmos headers HMAC da produção (X-Operator-Id, X-Timestamp, X-Signature). Use suas credenciais de operador.
Exemplo: Testando o callback de balance
#!/bin/bash
API_KEY="op_live_..."
SECRET_KEY="sk_live_..."
BODY='{"externalPlayerId":"test_player_001"}'
TIMESTAMP=$(date +%s%3N)
DATA="${API_KEY}${TIMESTAMP}${BODY}"
SIGNATURE=$(echo -n "$DATA" | openssl dgst -sha256 -hmac "$SECRET_KEY" | cut -d' ' -f2)
curl -s -X POST "https://admin.fourplay.studio/sandbox/wallet/balance" \
-H "Content-Type: application/json" \
-H "X-Operator-Id: $API_KEY" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Signature: $SIGNATURE" \
-d "$BODY"Checklist de Testes no Sandbox
Antes do go-live, valide cada um dos cenários abaixo:
Callbacks Básicos
-
/wallet/balanceretorna 200 com{ "balance": number } -
/wallet/debitdebita corretamente e retorna saldo atualizado -
/wallet/creditcredita corretamente e retorna saldo atualizado -
/wallet/rollbackreverte o debit e retorna 200
Segurança
- Callback com assinatura inválida é rejeitado com 401
- Callback com timestamp expirado (> 5 min) é rejeitado com 401
- Callback sem headers obrigatórios é rejeitado com 401
Idempotência
- Mesmo
gameIdno/debitretorna 200 sem debitar duas vezes - Mesmo
gameIdno/creditretorna 200 sem creditar duas vezes - Mesmo
gameIdno/rollbackretorna 200 sem reverter duas vezes
Casos de Erro
-
/debitcom saldo insuficiente retorna 422 - Qualquer endpoint com jogador inexistente retorna 404
- Rollback para
gameIdinexistente retorna 404
Performance
- Todos os callbacks respondem em menos de 5 segundos sob carga normal
Boas Práticas para Testes
Use IDs de jogadores fictícios:
test_player_001, test_player_002, ...Monitore os logs no terminal:
# Node.js com morgan
app.use(morgan('combined'));
# Python Flask
app.run(debug=True)Verifique o cálculo HMAC manualmente:
// Script de diagnóstico
const crypto = require('crypto');
const body = '{"externalPlayerId":"test_player_001"}';
const ts = Date.now().toString();
const data = API_KEY + ts + body;
const sig = crypto.createHmac('sha256', SECRET_KEY).update(data).digest('hex');
console.log({ timestamp: ts, signature: sig });Nunca use dados reais de jogadores durante os testes. Use sempre IDs fictícios e saldos de teste.