FourPlay

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

  1. Acesse https://admin.fourplay.studio com as suas credenciais de operador
  2. No menu lateral, acesse a seção Sandbox ou Testes
  3. 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 3000

O 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/wallet

Os callbacks serão enviados para:

  • POST https://a1b2c3d4.ngrok.io/wallet/balance
  • POST https://a1b2c3d4.ngrok.io/wallet/debit
  • POST https://a1b2c3d4.ngrok.io/wallet/credit
  • POST 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 run

Execute o fluxo de teste no Sandbox

No Portal Admin, use o Sandbox para:

  1. Criar uma sessão de teste com um externalPlayerId fictício
  2. Abrir o jogo em modo de teste
  3. 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/rollback

Esses 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/balance retorna 200 com { "balance": number }
  • /wallet/debit debita corretamente e retorna saldo atualizado
  • /wallet/credit credita corretamente e retorna saldo atualizado
  • /wallet/rollback reverte 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 gameId no /debit retorna 200 sem debitar duas vezes
  • Mesmo gameId no /credit retorna 200 sem creditar duas vezes
  • Mesmo gameId no /rollback retorna 200 sem reverter duas vezes

Casos de Erro

  • /debit com saldo insuficiente retorna 422
  • Qualquer endpoint com jogador inexistente retorna 404
  • Rollback para gameId inexistente 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.

On this page