FourPlay

Error Codes

Referência de erros HTTP da API FourPlay e respostas esperadas nos callbacks de wallet

Formato de Erro

A API FourPlay retorna erros em formato JSON simples:

Mines Provider (mines.fourplay.studio):

{
  "message": "Descrição do erro"
}

Portal Admin (admin.fourplay.studio):

{
  "error": "Descrição do erro"
}

Não existe campo code, request_id ou timestamp no formato de erro. Use o campo message (ou error) para diagnóstico e logging.


Status HTTP da Session API

HTTPQuando ocorreCorpo
200SucessoBody específico do endpoint
400Campo obrigatório ausente ou body inválido{ "message": "Missing required fields" }
401HMAC inválido, timestamp fora da janela, operador não encontrado{ "message": "Invalid signature" } ou { "message": "Operator not found" }
403Operador inativo ou suspenso{ "message": "Operator is inactive" }
500Erro interno do Mines Provider{ "message": "Internal server error" }

Erros de Autenticação HMAC

SituaçãoHTTPMensagem provável
API Key não reconhecida401"Operator not found"
Assinatura HMAC incorreta401"Invalid signature"
Timestamp fora da janela de ±5 minutos401"Request expired" ou similar
Headers X-Operator-Id/X-Timestamp/X-Signature ausentes400"Missing required fields"
Operador com status inativo403"Operator is inactive"

Como diagnosticar Invalid signature:

  1. Confirme que o timestamp está em milissegundos (13 dígitos), não em segundos
  2. Confirme que a data do HMAC é exatamente: apiKey + timestamp + bodyJson
  3. Confirme que o body enviado é idêntico ao usado para calcular a assinatura (mesma serialização JSON)
  4. Verifique o NTP do servidor (drift de relógio causa rejeição por timestamp)

Erros da Session API

EndpointSituaçãoHTTPMensagem
/session/createexternalPlayerId ausente400"Missing required fields"
/session/createOperador não encontrado401"Operator not found"
/session/createAssinatura inválida401"Invalid signature"
/session/createOperador inativo403"Operator is inactive"
/session/validateToken ausente400"Token is required"
/session/validateToken inválido ou expirado401"Invalid token"

Respostas dos Callbacks de Wallet

Estes são os status HTTP que seu servidor deve retornar para o FourPlay:

/wallet/balance

SituaçãoHTTPBody que você deve retornar
Sucesso200{ "balance": 50000 }
Assinatura inválida401{ "error": "Invalid signature" }
Jogador não encontrado404{ "message": "Player not found" }
Erro interno no seu servidor500Qualquer mensagem de erro

/wallet/debit

SituaçãoHTTPBody que você deve retornar
Sucesso200{ "balance": 49000, "transactionId": "tx_..." }
gameId já processado (idempotência)200{ "balance": <atual>, "transactionId": "<id original>" }
Saldo insuficiente422{ "message": "Insufficient balance" }
Jogador não encontrado404{ "message": "Player not found" }
Assinatura inválida401{ "error": "Invalid signature" }

/wallet/credit

SituaçãoHTTPBody que você deve retornar
Sucesso200{ "balance": 52500, "transactionId": "tx_..." }
gameId já processado (idempotência)200{ "balance": <atual>, "transactionId": "<id original>" }
Jogador não encontrado404{ "message": "Player not found" }
Assinatura inválida401{ "error": "Invalid signature" }

/wallet/rollback

SituaçãoHTTPBody que você deve retornar
Sucesso (ou já revertido — idempotência)200{}
Debit original não encontrado404{ "message": "Transaction not found" }
Assinatura inválida401{ "error": "Invalid signature" }

Rollback não lê o body de resposta

O FourPlay Mines não lê o body da resposta do rollback — apenas verifica HTTP 200. Você pode retornar {} ou qualquer JSON válido.


Comportamento do FourPlay em Caso de Erro nos Callbacks

Sua respostaO que o FourPlay faz
200Operação confirmada — prossegue
401Loga erro de autenticação — não tenta novamente
404Erro permanente — não tenta novamente
422Saldo insuficiente ou erro semântico — sem retry, cancela
500Erro temporário — pode tentar novamente
Timeout (> 5s)Tratado como falha — pode acionar rollback automático

Idempotência é fundamental

O FourPlay pode chamar o mesmo callback mais de uma vez em caso de falha de rede ou retry. Implemente idempotência usando gameId + type como chave para evitar processamento duplicado.


Guia de Diagnóstico Rápido

SintomaCausa provávelSolução
401 Invalid signatureHMAC incorretoVerificar fórmula: apiKey + timestamp_ms + body
401 Request expiredTimestamp desatualizadoUsar milissegundos (Date.now()), checar NTP
401 Operator not foundAPI Key errada ou inativaVerificar X-Operator-Id no Portal Admin
403 Operator is inactiveConta suspensaContatar suporte@fourplay.studio
Callback com assinatura inválida recebidoSecretkey/body diferenteLogar raw body e recalcular HMAC para comparar
Jogo não abreToken inválido ou expiradoCriar nova sessão (token expira em 24h)
Debit debitado duas vezesFalta de idempotênciaImplementar verificação por gameId + type

On this page