Como Iniciar e Lançar o Primeiro Jogo
Integrar o DuSlots ao seu site ou aplicativo consiste em apenas uma única chamada HTTP. Seu servidor envia os dados do jogador e recebe uma URL segura para exibir o jogo dentro de um <iframe> ou tela cheia.
curl -X POST http://localhost:3031/api/launch \
-H "Content-Type: application/json" \
-d '{
"gameId": "505",
"name": "game_505",
"balance": 1000.00,
"currency": "BRL",
"lang": "pt",
"user_id": "jogador_123"
}'
A API retorna um link imediato launch_url:
{
"status": 1,
"launch_url": "http://localhost:3031/play/game_505?session=dusess_9b7f43a91b2c",
"session": "dusess_9b7f43a91b2c",
"balance": 1000,
"currency": "BRL",
"game": "game_505",
"mode": "demo"
}
Como Funciona a Integração
Entenda o ciclo completo de comunicação entre o Jogador, o seu Site (Cassino/Plataforma) e a API do DuSlots.
POST /api/launch com o ID do jogador e o saldo atual dele. O DuSlots cria uma sessão criptografada e devolve o link seguro.
Integração Facilitada via Inteligência Artificial
Você não precisa ser programador nem entender de linhas de código para integrar o DuSlots ao seu site ou aplicativo! Graças às Inteligências Artificiais modernas (ChatGPT, Claude, Cursor, DeepSeek), tudo o que você precisa fazer é copiar um dos nossos Prompts Mestres e colar no chat da IA.
Escolha sua Plataforma
Identifique onde seu site foi criado (ex: WordPress/WooCommerce, script PHP, Laravel, Node.js ou um site pronto próprio).
Copie o Prompt Mestre com 1 Clique
Mais abaixo nesta página, clique no botão "Copiar Prompt" do card correspondente à sua tecnologia.
A IA Entrega Tudo Pronto
A IA vai gerar o código 100% pronto, indicar em qual pasta colocar cada arquivo e como testar. É só salvar e os jogos estarão rodando no seu site!
Dicionário do Leigo: Entenda os Conceitos em 1 Minuto
Termos técnicos explicados de maneira simples e prática para quem está começando.
🔌 O que é uma API?
Pense na API como um garçom em um restaurante. O seu site faz o pedido ("quero abrir o jogo da Turma da Mônica para o Pedro"), a API leva o pedido para a cozinha (o DuSlots) e volta com o prato pronto (o link seguro do jogo).
⚡ O que é um Webhook / Seamless Wallet?
É a "linha direta" entre o jogo e a carteira do seu site. Quando o jogador clica para girar a R$ 2,00, o DuSlots liga para o seu site e diz: "Debita R$ 2,00 do saldo do Pedro". Se o jogador ganhar R$ 50,00, o DuSlots avisa: "Credita R$ 50,00 na conta do Pedro". Tudo acontece em milissegundos sem o jogador precisar transferir dinheiro de uma conta para outra!
🎯 O que é RTP?
RTP significa Return to Player (Retorno ao Jogador). No DuSlots, o RTP padrão é de 95%. Isso significa que, matematicamente a longo prazo, 95% do total apostado é devolvido aos jogadores em prêmios e bônus, e 5% fica como lucro (House Edge). Você pode alterar essa porcentagem no arquivo de configuração .env para o valor que desejar!
🖼️ O que é um Iframe?
É uma "janela" ou moldura dentro do seu site que exibe uma página externa. Os jogos rodam dentro dessa janela perfeitamente adaptados para celulares e computadores, mantendo o topo e o rodapé do seu site visíveis.
Prompts Mestres de Integração Prontos
Basta clicar em "Copiar Prompt" e colar diretamente no ChatGPT, Claude, Cursor ou DeepSeek. O prompt já contém toda a especificação técnica dos endpoints e webhooks do DuSlots.
Gera um plugin WordPress completo com shortcode [duslot_game id="505"], integração com carteira WooCommerce / TeraWallet e endpoint de webhook para débitos e créditos automáticos.
Ideal para qualquer site PHP simples ou script já existente. Cria jogar.php para abrir o jogo com o saldo do usuário e webhook.php para debitar/creditar no MySQL.
Gera um Controller profissional para Laravel com rotas, Service de API, transações atômicas com DB::transaction e Webhook idempotente.
Cria rotas assíncronas em Node.js ou Next.js App Router para iniciar jogos e processar webhooks de Seamless Wallet com MongoDB ou PostgreSQL.
O prompt mestre definitivo. Cole este texto no ChatGPT junto com o código atual do seu site ou descreva como seu site funciona, e a IA adaptará tudo automaticamente para a sua estrutura!
Playground Interativo da API
Teste o endpoint POST /api/launch em tempo real diretamente pelo seu navegador! Gere uma sessão de teste e abra o jogo imediatamente na tela.
POST /api/launch · Iniciar Sessão de Jogo
Este é o endpoint principal utilizado para gerar o link de jogo (launch_url) com sessão protegida, controle de saldo e direcionamento automático para o motor de slots.
POST http://seu-servidor:3031/api/launchContent-Type:
application/json
Tabela de Parâmetros
| Campo | Tipo | Status | Padrão | Descrição |
|---|---|---|---|---|
| gameId | string | number | Obrigatório | - | ID numérico do jogo (ex: "505", "501", "179"). |
| name | string | Opcional | game_{id} |
Nome da pasta do jogo no disco (ex: "game_505"). Se omitido, deriva de gameId. |
| balance | number | Obrigatório* | 1000.00 |
Saldo inicial do jogador na moeda especificada (obrigatório no modo Demo). |
| currency | string | Opcional | "BRL" |
Código ISO da moeda (ex: "BRL", "USD", "EUR"). |
| lang | string | Opcional | "pt" |
Idioma da interface do jogo ("pt", "en", "es", "zh"). |
| user_id | string | Opcional | "demo_player" |
Identificador exclusivo do jogador no seu banco de dados. |
| agent_code | string | Opcional | "duslot" |
Código identificador do seu site/agente no sistema. |
| agent_token | string | Opcional | - | Token secreto para autenticação de requisições de agentes externos. |
| exit_url | string | Opcional | "/" |
URL para onde o jogador será redirecionado caso clique no botão "Sair" do slot. |
| mode | string | Opcional | "demo" |
"demo" (motor calibrado local) ou "real" (valida token no provedor oficial). |
Exemplo de Resposta de Sucesso (200 OK)
{
"status": 1,
"launch_url": "http://localhost:3031/play/game_505?session=dusess_88ac4a7191e3bf8e",
"session": "dusess_88ac4a7191e3bf8e",
"balance": 1000,
"currency": "BRL",
"game": "game_505",
"mode": "demo"
}
GET /api/games · Lista de Jogos Disponíveis
Retorna a lista completa de todos os slots instalados localmente no servidor, com nomes, IDs, versões, engines e capas para você montar o Lobby do seu cassino dinamicamente.
curl -X GET http://localhost:3031/api/games
{
"status": 1,
"count": 13,
"games": [
{
"dir": "game_505",
"gameId": "505",
"name": "Monica",
"slug": "game_505",
"provider": "pgsoll",
"engine": "cocos3d"
},
{
"dir": "game_501",
"gameId": "501",
"name": "GoalLeopard",
"slug": "game_501",
"provider": "pgsoll",
"engine": "cocos3d"
},
{
"dir": "game_179",
"gameId": "179",
"name": "Charizard",
"slug": "game_179",
"provider": "pgsoll",
"engine": "cocos3d"
}
]
}
Seamless Wallet & Webhooks de Transação
No modelo Seamless Wallet, o jogador não precisa depositar fichas separadas no jogo. O saldo permanece guardado no banco de dados do seu site, e o DuSlots efetua débitos e créditos instantâneos a cada giro via HTTP POST.
round_id (ex: "spin_1776735231_abc123"). Seu sistema deve registrar esse ID para garantir que nenhuma transação seja processada mais de uma vez caso ocorra reenvio por instabilidade de rede.
Formato do Payload Enviado ao Seu Webhook
Quando o jogador aposta ou recebe um prêmio, o DuSlots envia:
{
"method": "transaction",
"agent_code": "MEU_AGENTE",
"agent_secret": "TOKEN_SECRETO_CONFIGURADO",
"user_code": "jogador_123",
"amount": 2.50,
"type": "debit",
"new_balance": 997.50,
"round_id": "spin_1776735231_abc123",
"game_id": "505"
}
Resposta Obrigatória do Seu Servidor
Seu Webhook deve responder com HTTP 200 e o seguinte formato JSON:
{
"status": 1,
"balance": 997.50
}
Calibração de RTP e Frequência de Bônus
O DuSlots possui motores matemáticos certificados para cada slot. No arquivo .env do servidor, você pode calibrar livremente o retorno e a intensidade dos recursos especiais:
# RTP Global Teórico de 0 a 100 (Padrão: 95%)
RTP=95
# Parcela do RTP reservada exclusivamente aos Bônus e Giros Grátis (0 a 100)
BONUS_RTP=25
# Limite de timeout para resposta dos Webhooks de Agentes (milissegundos)
WEBHOOK_TIMEOUT=5000
Recursos Especiais por Motor Calibrado
| Jogo | ID | Motor | Recurso Especial Calibrado |
|---|---|---|---|
| Mônica | 505 |
monica-engine.js |
Rodadas Grátis (Free Spins) com multiplicadores progressivos x1, x2, x3, x5. |
| GoalLeopard | 501 |
goalleopard-engine.js |
Recurso de Respin com travas de Wilds temáticos e chutes a gol. |
| Charizard | 179 |
dragonball-engine.js |
Modo Super Bônus com símbolos expansivos e prêmios máximos. |
| Pikachu | 182 |
pikachu-engine.js |
Trovoada Elétrica com multiplicador em cadeia e rodadas de choque. |
| Lucario | 180 |
lucario-engine.js |
Aura Sphere com respins consecutivos ao alinhar símbolos especiais. |
Snippets de Código Prontos em Várias Linguagens
Copie o código na sua linguagem favorita e comece a rodar os slots no seu projeto imediatamente.
<?php
$payload = [
'gameId' => '505',
'balance' => 100.00,
'currency' => 'BRL',
'lang' => 'pt',
'user_id' => 'player_' . $usuario['id'],
'exit_url' => 'https://seusite.com/lobby'
];
$ch = curl_init('http://localhost:3031/api/launch');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if (!empty($data['status']) && !empty($data['launch_url'])) {
// Redireciona ou passa para o iframe
$gameUrl = $data['launch_url'];
}
?>
async function launchSlotGame(gameId, userId, balance) {
const response = await fetch('http://localhost:3031/api/launch', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
gameId: String(gameId),
balance: Number(balance),
currency: 'BRL',
lang: 'pt',
user_id: String(userId),
exit_url: 'https://seusite.com'
})
});
const data = await response.json();
if (data.status === 1) {
console.log('Link para o jogo:', data.launch_url);
return data.launch_url;
}
throw new Error('Falha ao iniciar jogo');
}
import requests
def launch_slot(game_id, user_id, balance):
url = "http://localhost:3031/api/launch"
payload = {
"gameId": str(game_id),
"balance": float(balance),
"currency": "BRL",
"lang": "pt",
"user_id": str(user_id),
"exit_url": "https://seusite.com"
}
res = requests.post(url, json=payload)
data = res.json()
if data.get("status") == 1:
return data["launch_url"]
raise Exception(f"Erro ao abrir jogo: {data}")
Perguntas Frequentes (FAQ)
<iframe src="SUA_LAUNCH_URL" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>. Os jogos do DuSlots possuem renderização responsiva inteligente (Cocos3D) que detecta automaticamente se o usuário está em um celular vertical, tablet ou computador horizontal.
PUBLIC_URL=https://slots.seudominio.com no arquivo .env e colocar o Node.js atrás de um proxy reverso padrão (como Nginx, Cloudflare ou IIS) com certificado SSL gratuito (Let's Encrypt). O DuSlots cuidará automaticamente dos links HTTPS e WebSockets WSS.