Checklist de onboarding
Em ordem. Cada passo destrava o próximo.
Antes de escrever código
- Reúna os itens de repasse. → O que você recebe
- Confirme os seus escopos, especialmente
bots:write, que é separado debattles:writee fácil de um host omitir. - Confirme os jogos liberados. Peça os valores de
id, e não nomes de exibição;idé o que a API aceita. - Peça os valores das janelas de lobby. Você não pode mudá-los, e a sua UI precisa ser honesta sobre quanto tempo um lobby fica aberto.
- Guarde a chave de API num gerenciador de segredos, não num repositório e não num arquivo de ambiente de front end.
Prepare o seu lado
- Construa um proxy no servidor. Toda chamada ao SlotBattle passa pelo seu backend, e a chave de API nunca chega a um browser.
- Suba um endpoint de webhook que verifique
X-Slotbattle-Signcomo HMAC-SHA256 sobre o corpo cru, com comparação de tempo constante. → Webhooks - Configure o webhook no console: URL e segredo juntos, já que meio preenchido é recusado na escrita.
- Configure as suas credenciais de provedor, se o seu casino tem conta SoftSwiss própria. Senão as sessões de bot são emitidas sob o id de casino do host.
- Torne o endpoint idempotente em
battle_id+status. A entrega é ao menos uma vez.
Verifique a conexão
-
GET /gamesretorna uma lista não vazia -
POST /battlesretorna201 - A resposta da batalha inclui um
ws_token. Se estiver ausente, o host não tem chave de assinatura - Uma conexão WebSocket ao
ws_urlrecebe101 Switching Protocols - Cancele a batalha de smoke test para ela não ficar na sua lista de lobbies
Construa a integração
- Catálogo. Renderize
GET /games.rtp: 0significa que o jogo não tem perfil, e não um RTP de zero, estatus: plannedsignifica não pronto para vender. - Abrir uma batalha. Decida se vai informar
creator_game_url. Omitir deixa o assento do criador incapaz de jogar, e a batalha não começa. → Ciclo de vida da batalha - Sentar jogadores. Trate
409para jogador já em outra batalha ativa: uma batalha ativa por jogador, por casino. - Bots. Só o criador pode chamar, e se você nomeá-los precisa informar ao menos tantas entradas quantos assentos vazios.
- Visualização ao vivo. Emita um token de viewer por espectador, conecte com o header de subprotocolo, e trate os oito tipos de evento públicos. → WebSocket
- Liquidação. Pelo webhook, nunca por um frame de WebSocket.
Trate as bordas
-
503 unavailable. A instância está no limite. Retente com backoff e jitter; esse é o único erro rotineiramente retentável. - Expiração de token. Tokens de viewer vivem 15 minutos. Reemita na reconexão e quando uma página ficar aberta mais que isso.
- Não há replay no socket. Um espectador que entra no meio da batalha não vê nada do que já aconteceu. Renderize a partir de um snapshot buscado, depois aplique eventos.
- Assentos com
ok: false. Uma batalhacompletedpode conter assento falho. Chequeokpor assento antes de liquidar qualquer coisa. -
battle.failed. A gravação quebrou ou uma janela expirou. Decida a sua política de estorno; o SlotBattle não tem nenhuma. - Criador que sai significa batalha cancelada. Garanta que a sua UI diga "cancelar", e não "sair", para o criador.
Antes de ir ao ar
- O endpoint de webhook é alcançável a partir da instância, verificado com uma batalha real e não com um túnel local
- A verificação de assinatura recusa um corpo adulterado, testado e não presumido
- A liquidação é idempotente sob entrega duplicada
- Um espectador que chega tarde renderiza um lobby correto
- Nada loga
game_urlnemcreator_game_url, que são URLs de sessão ao vivo - A chave de API não está em nenhum bundle de cliente. Dê grep por
sbk_nos assets construídos - Você sabe com quem falar quando aparecer um
500 failed to mint viewer token
Contínuo
- Peça ao host o cronograma de atualização, já que deploys podem falhar batalhas em voo
- Pergunte como você fica sabendo de rotações de chave de assinatura. Conduzidas direito elas são invisíveis; conduzidas sem janela elas derrubam a sua plateia
- Monitore a sua própria taxa de sucesso de webhook. O host retenta, mas você deve perceber
Próximo
- Limites: o que você não controla
- Visão geral da API
- Tutorial: um casino funcional, de ponta a ponta