Logo GH

Guida all'integrazione dei sistemi

1) Panoramica e modello di interazione

GambleHub è una piattaforma di aggregazione di servizi iGaming (provider di giochi, gateway, KYC/AML, motore bonus, report). Il partner può essere integrato in due modi:
  • Provider API: si chiama API GambleHub (portafoglio, bonus, rapporti).
  • Fornitore esterno: chiamiamo i vostri siti Web/endpoint (saldo, transazioni, KYC).
Livelli:

1. Edge/API (REST/gRPC, Webhooks)

2. Eventi (event bus: scommesse/pagamenti/portafoglio/CUS)

3. Report (API + esportazione S3/SFTP)

4. Operazioni (incidenti, SLO, SLA-prestiti)

2) Ambienti, domini e IP

AmbienteBase APIWebhook (da noi)I nostri IP in uscitaSLA
Sandbox`https://sandbox. api. gamblehub. io`https ://< dominio >/webhooks/...`203. 0. 113. 10/31`best-effort
Staging`https://staging. api. gamblehub. io`Come sopra`198. 51. 100. 40/29`99. 5%
Production`https://api. gamblehub. io`Come sopra`192. 0. 2. 16/28`99. 9%

La SLA contrattuale è fissata nel contratto. Gli aggiornamenti IP vengono pubblicati in anticipo. Autorizzare Allowlist.

3) Autenticazione e autorizzazione

Supportiamo tre meccanismi (seleziona quello richiesto dal contratto):
  • OAUTh2 Client Credentials: server-a-server («scope»: «wallet: read», «wallet: write», «bet: write», «report: read»).
  • JWT (issuer = GambleHub) - Firma RS256, chiavi in endpoint JWKS.
  • mTLS: autenticazione TLS reciproca a livello ingress (su richiesta della compilazione).
Esempio di token (OAuth2):

POST /oauth2/token grant_type=client_credentials&scope=wallet:write bet:write
→ { "access_token": "...", "token_type": "Bearer", "expires_in": 3600 }

I Scopes vengono controllati in ogni chiamata. Per le operazioni ad alto rischio (pagamenti) si utilizza uno step-up: scope separato e, opzionalmente, un collegamento IP/ASN.

4) Versioning e compatibilità

Percorso: '/v1/... ', '/v2/...' (la versione maggiore non è compatibile indietro).
Modifiche minori ed estensive tramite l'estensione dello schema (nuovi campi opzionali).
Deprecazioni in 90 giorni con notifica.
I webhook sono versionati dal titolo «X-GH-Event-Variante: 1».

5) Limiti, quote e idepotenza

Rate limits vengono visualizzati in titoli:
  • `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.
  • 429 ritorna con'Retry-After '(secondi).
  • Tutti i metodi non sicuri richiedono «Idempotency-Key» (TTL 24-72 ore). Ripetere una query identica restituisce il risultato originale ('409 IDAMP _ REPLAY'in caso di conflitto).

6) Standard di errore

Formato unico RFC 7807 ('application/perfem + json'):
json
{
"type": "https://docs. gamblehub. io/errors/validation_failed",
"title": "Validation failed",
"status": 422,
"error_code": "VAL_001",
"trace_id": "a1b2c3...",
"retriable": false,
"errors": [{"field":"amount","code":"min","message":"Must be >= 1"}]
}

Retriable: 5xx/503/504/429 (с `Retry-After`). Non-retriable: 400/401/403/404/409/422/410/415/412.

7) Schemi dati (kernel)

7. 1 Giocatore

json
{
"player_id": "p_123",
"country": "CA",
"currency": "CAD",
"rg_flags": {"self_excluded": false, "limits": {"daily_loss": 100}},
"kyc_status": "verified    pending    failed"
}

7. 2 Sessione

json
{
"session_id": "s_789",
"player_id": "p_123",
"started_at": "2025-11-03T17:55:00Z",
"ip": "203. 0. 113. 5",
"device": {"ua":"...", "os":"Android", "model":"..."}
}

7. 3 Portafoglio/transazioni

json
{
"txn_id": "t_001",
"player_id": "p_123",
"type": "deposit    withdrawal    bet    win    bonus    adjustment",
"amount": "12. 34",
"currency": "EUR",
"balance_after": "123. 45",
"metadata": {"provider":"psp_x","request_id":"r_456"}
}

7. 4 Tasso/pagamento

json
{
"bet_id": "b_456",
"player_id": "p_123",
"game_id": "g_777",
"stake": "1. 50",
"currency": "EUR",
"placed_at": "2025-11-03T17:58:10Z",
"round_id": "rnd_aa1",
"provider": "StudioX"
}
json
{
"settlement_id": "st_456",
"bet_id": "b_456",
"win_amount": "3. 75",
"settled_at": "2025-11-03T17:59:02Z",
"outcome": "win    lose    void"
}

7. 5 Bonus

json
{
"bonus_id": "bo_900",
"player_id": "p_123",
"type": "freespin    cash    wagered",
"state": "issued    active    expired    consumed",
"wagering": {"target": "100. 00","progress":"45. 20","currency":"EUR"}
}

8) REST API (frammenti di OpenAPI)

yaml paths:
/v1/wallet/balance/{player_id}:
get:
summary: Get wallet balance security: [{ oauth2: [wallet:read] }]
responses:
'200': { description: OK }
'401': { $ref: '#/components/responses/Problem' }
'404': { $ref: '#/components/responses/Problem' }

/v1/wallet/transactions:
post:
summary: Create wallet transaction security: [{ oauth2: [wallet:write] }]
parameters:
- name: Idempotency-Key in: header required: true schema: { type: string }
responses:
'201': { description: Created }
'409': { $ref: '#/components/responses/Problem' }
'422': { $ref: '#/components/responses/Problem' }

/v1/bets:
post:
summary: Register bet security: [{ oauth2: [bet:write] }]
responses:
'201': { description: Created }
'422': { $ref: '#/components/responses/Problem' }

9) Webhook (da GambleHub a partner)

Gli eventi vengono inviati in ordine, 'Content-Type: application/json', intestazioni:
  • `X-GH-Event`: `player. created|session. started|bet. placed|bet. settled|wallet. changed|kyc. updated|rg. flagged`
  • «X-GH-Event-ID» - UUID univoco
  • `X-GH-Signature`: `sha256=`
  • «X-GH-Retry» - Tentativo numero
  • `X-GH-Event-Version`: `1`
Esempio dì bet. settled`:
json
{
"event": "bet. settled",
"occurred_at": "2025-11-03T18:00:12Z",
"data": {
"settlement_id": "st_456",
"bet_id": "b_456",
"player_id": "p_123",
"win_amount": "3. 75",
"currency": "EUR",
"outcome": "win"
}
}

Risposta dell'ospite: solo 2xx è considerato un successo. Altrimenti - retrai: backoff esponenziale (1s, 3s, 10s, 30s, 2m, 10m, 30m; massimo 24 ore). Utilizzare X-GH-Event-ID per deduplicare.

Convalida firma (pseudo):
text expected = base64(hmac_sha256(request_body, SHARED_SECRET))
header  = split(X-GH-Signature, '=')[1]
assert header == expected

10) Ordine flusso di cassa (Wallet flow)

1. deposit (PSP → wallet. credit)

2. bet (hold/authorize или direct debit)

3. settlement (release hold; `win`/`lose`/`void`)

4. withdrawal (wallet. debit → PSP)

Sono supportati bilanci hold e multi-portafogli (reali/bonus).

11) Scudi di sabbia e test

Giocatori di prova: «p _ sbx _», valuta «EUR» USD «CAD».
I provider di giochi emulano: win/lose/void, disconnessi, ritardi.
KYC sandbox: risposte «verified» failed «review» sui modelli di passaporto.
PSP sandbox: статусы `authorized|captured|declined|reversed`.

Set di valigette obbligatorie:

Reimpostazione/void del round

Idempotency a tasso ripetuto

Errore del webhook con i retrai e la deduplicazione successiva

429 e corretto'Retry-After '

5xx con backoff esponenziale sul lato client

12) Accoppiamento e reporting

Reconciliation API

yaml
GET /v1/reports/reconciliation? from=...&to=...&scope=wallet    bets
→ CSV/JSON: { player_id, bet_id, stake, win, currency, balance_delta, provider }

Riepilogo giornaliero: giri, GGR/NGP, provider, taglio geo/valuta.
Esporta: S3/SFTP con manifesti firmati e hash di file (SHA256).
Timeson report: UTC (a meno che non sia specificato diversamente nel contratto).

13) Osservabilità e SLO

L'API ha successo 99. 95% (28d), p95 latency per metodi critici, successo nella consegna di webhoop.
Burn-alerts (fast/slow) per bilancio errato.
Correlazione trace: «trace _ id» nelle risposte/login, drilldown alle piste.
I componenti Edge, Wallet, Bets, Webhooks, PSP, KYC.

14) Sicurezza e compliance

Minimizzazione PII; Non sono consentiti PAN/segreti in login/webhop.
Secret management e rotazione delle chiavi.
RG - Le bandiere di auto-esclusione/limitazione devono causare l'annullamento automatico delle rate/pagamenti.
AML/KYC: eventi "kyc. updated`, `aml. alert "disponibili per iscrizione; prendete decisioni nel vostro sistema o tramite il nostro modulo.
GDPR/DSAR: endpoint per scaricare/rimuovere i dati personali del giocatore in base a richieste legali.
mTLS e HSTS sono attivati per impostazione predefinita in un ambiente protetto.

15) Prestazioni e quote

Budget consigliato per partner (predefinito):
  • RPS: 50 (burst 100)
  • Concurrent webhooks: 10
  • Dimensioni del corpo: 256 KB (eventi di gioco), 64 KB (portafoglio)

Richiedi l'upgrade del piano tramite l'account manager specificando le previsioni RPS/volumi.

16) Gestione delle modifiche e dei comunicati

Cambio windows: pianificazione programmata, notifica 5 giorni lavorativi.
Migrazioni in versione dual-write/dual-read durante il periodo di transizione.
Test contract in CI: schema JSON, campi obbligatori, stabili'error _ code '.
Canary: attivazione graduale del traffico per i nuovi fiocchi.

17) Certificazione integrazione (Check-list)

Funzionali:
  • Registrazione scommesse/pagamenti/void
  • Idempotenza su tutti gli endpoint write
  • Corretta gestione 429/5xx + backoff
  • Verifica della firma Web, deduplicazione dì X-GH-Event-Id "
  • Bilanciamento dopo una serie di eventi (win/lose)
  • I report di riparazione convergono con i dati
Affidabilità:
  • I retrai dei webhook sono stati implementati
  • Timeout clienti 10s, tentativo totale 30 s
  • Circuito-breaker per dipendenza
Sicurezza/Compilation:
  • Mantenere segreti nel gestore dei segreti
  • Revisione PII nei loghi
  • I flag RG/AML vengono conteggiati in tempo reale

18) Script utilizzati frequentemente

18. 1 Registrazione delle scommesse con idipotenza


POST /v1/bets
Idempotency-Key: bet-p_123-rnd_aa1-1

{ "player_id":"p_123","game_id":"g_777","stake":"1. 50","currency":"EUR","round_id":"rnd_aa1" }
→ 201 Created { "bet_id":"b_456" }

18. 2 Fail webhook seguito da successo

1. Il server 5xx non è disponibile per backoff.
2. Dopo il ripristino - accetti lo stesso «X-GH-Event-ID» per ignorare i duplicati.

18. 3 Degrado parziale del provider

Restituiremo 503; Ripetere con backoff.
In caso di degrado prolungato, l'etichettatura del provider e lo smart-routing (se nel contratto).

19) DevEx e supporto

Portale: chiavi, usage, webhook, loghi di consegna, dashboard SLO, esportazione di report.
Webhooks replay: ricarica per intervalli di date/ID.
Incidenti: Creazione auto di un ticket, war-room, postmortem di 48 ore su SEC-1.
Comunicazioni: # partners-status canale/posta on-call 24 x 7 (Enterprise).

20) Piano di onboarding (2-4 settimane)

1. Settimana 1: consegna delle chiavi, connessione sandbox, script base (puntata/pagamento/portafoglio).
2. Settimana 2: webhoop e compressioni, flag RG/KYC, test di carico, comportamento 429/5xx.
3. Settimana 3: rendicontazione (recepcibili, scarichi), sicurezza (firme, segreti), test di contratto.
4. Settimana 4: certificazione, inclusione canary in vendita, monitoraggio, matrice di contatto.

21) Mini FAQ

Possiamo gRPC?
Sì, su richiesta; Il mapping dei codici di errore HTTP è disponibile nella specifica.

Come ottenere i dati retro?
Tramite report di scaricamento S3/SFTP.

Come aumentare i limiti?
Tramite portale/account manager con RPS/concorrenza predittiva.

Qual è la fonte della verità del bilanciamento?
Registro del portafoglio transazionale GambleHub + Incrociatura giornaliera.

Totale

L'integrazione con l' GambleHub è basata su un contratto chiaro: API e schemi stabili, webhoop firmati, idompotenza e retrai, limiti e rapporti trasparenti e requisiti di sicurezza e compliance. In base a questo manuale e agli assegni di certificazione, si entrerà rapidamente in gioco, garantendo flussi di cassa affidabili e rapporti coerenti senza discrepanze.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.