Logo GH

Ghid de integrare GambleHub

1) Prezentare generală și modelul de interacțiune

GambleHub este o platformă de agregare pentru serviciile iGaming (furnizori de jocuri, gateway-uri de plată, KYC/AML, motor bonus, raportare). Integrarea partenerilor este posibilă în două moduri:
  • Furnizor API: apelați API-ul GambleHub (portofel, bonusuri, rapoarte).
  • Furnizor extern: apelăm broșurile web/punctele finale (soldul, tranzacțiile, KYC).
Niveluri:

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

2. Evenimente (event bus: pariuri/plăți/portofel/ICC)

3. Raportare (API + export S3/SFTP)

4. Operațiuni (incidente, SLO, credite SLA)

2) Medii, domenii și IP

miercuriBaza APIWebhooks (de la noi)IP-ul nostru de ieșireSLA
Sandbox'https ://sandbox. api. gamblehub. io ''https ://< your _ domain >/webhooks/... '`203. 0. 113. 10/31`cel mai bun efort
Punerea în scenă'https ://punere în scenă. api. gamblehub. io 'ca mai sus`198. 51. 100. 40/29`99. 5%
Producţie'https ://api. gamblehub. io 'ca mai sus`192. 0. 2. 16/28`99. 9%

SLA contractual este stabilit în contract. Actualizările IP sunt publicate în prealabil. Permiteți Allowlist.

3) Autentificare și autorizare

Susținem trei mecanisme (selectați cel necesar în cadrul contractului):
  • OAuth2 Client Acreditări: server-to-server ('scope' s: 'wallet: read', 'wallet: write', 'bet: write', 'report: read').
  • JWT (emitent = GambleHub): semnătură RS256, taste în punctul final JWKS.
  • mTLS: autentificare TLS reciprocă la nivel de intrare (la cererea de conformitate).
Exemplu de obținere a unui token (OAuth2):

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

Scopes sunt verificate pe fiecare apel. Pentru operațiunile (plățile) cu risc ridicat, se utilizează o intensificare: un domeniu de aplicare separat și, opțional, obligatoriu pentru IP/ASN.

4) Versioning și compatibilitate

Cale: '/v1/... ", "/v2/"... (versiunea majoră este incompatibilă înapoi).
Modificări minore și în extindere - prin extinderea schemei (noi câmpuri opționale).
Decretări - 90 de zile cu preaviz.
Cărțile web sunt versionate cu titlul „X-GH-Event-Version: 1”.

5) Limite, cote și idempotență

Limitele de rată sunt date de anteturi:
  • „X-RateLimit-Limit”, „X-RateLimit-Reset”, „X-RateLimit-Reset”.
  • 429 revine cu 'Retry-After' (secunde).
  • Toate metodele nesigure necesită 'Idempotency-Key' (TTL 24-72 h). Repetarea unei interogări identice returnează rezultatul inițial ('409 IDEMP_REPLAY' privind conflictul).

6) Standarde de eroare

Format RFC 7807 unificat ('aplicaţie/problemă + 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”). Nerecuperabil: 400/401/403/404/409/ 422/410/415/412.

7) Scheme de date (de bază)

7. 1 Jucător

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 Sesiune

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 Portofel/Tranzacții

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 Rată/plată

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 (fragmente 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) Webhooks (GambleHub la partener)

Evenimentele sunt expediate în ordine, „Tip de conținut: cerere/json”, antete:
  • "X-GH-Event": "jucător. created 'session. started 'bet. plasat 'bet. settled 'wallet. schimbat 'kyc. actualizat "rg. flagged '
  • "X-GH-Event-Id': UUID unic
  • 'X-GH-Signature': 'sha256 = '
  • „X-GH-Retry”: Încercare Nu
  • „X-GH-Event-Version”: „1”
Exemplul „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"
}
}

Răspunsul gazdei - numai 2xx este considerat un succes. În caz contrar - retrai: backoff exponențial (1s, 3s, 10s, 30s, 2m, 10m, 30m; maximum 24 de ore). Utilizați "X-GH-Event-Id' pentru eliminarea duplicatelor.

Verificarea semnăturii (pseudo):
text expected = base64(hmac_sha256(request_body, SHARED_SECRET))
header  = split(X-GH-Signature, '=')[1]
assert header == expected

10) Ordine de flux de numerar (Flux de portofel)

1. depozit (PSP → portofel. credit)

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

3. decontare (deţinere eliberare; „câştig ”/„ pierdere ”/„ gol”)

4. retragere (portofel. debit → PSP)

Soldurile hold și multi-portofele (real/bonus) sunt acceptate.

11) Sandbox și scenarii de testare

Testați jucătorii: 'p _ sbx _', valute' EUR 'USD' CAD'.
Furnizorii de jocuri emulează: câștig/pierdere/gol, reduceri, întârzieri.
KYC sandbox: „verificat” nu a reușit „revizuire” răspunsurile pe șabloane de pașaport.
Sandbox PSP: статусы "autorizat" capturat "decolorat" invers ".

Set de cazuri de testare obligatorii:
  • Bilanțul contabil Stavka→vyplata→sverka
  • Runda pullback/gol
  • Idempotența la re-ofertă
  • Eșec al cârligului web cu retraverse și eliminare ulterioară a duplicatelor
  • 429 și corectă „Încercați din nou”
  • 5xx cu backoff exponențial pe partea clientului

12) Reconcilieri și raportare

API de reconciliere

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

Rezumate zilnice: cifre de afaceri, GGR/NGP, furnizori, defalcare geo/valută.
Export: S3/SFTP cu manifeste semnate și hash-uri de fișiere (SHA256).
Fusul orar de raportare: UTC (cu excepția cazului în care se specifică altfel în contract).

13) Observabilitate și SLO

SLI: succesul API ≥ 99. 95% (28d), latență p95 pentru metode critice, succes de livrare a cârligelor web.
Alerte de ardere (rapid/lent) pe un buget eronat.
Trace corelation: 'trace _ id' în răspunsuri/jurnale, trilldown la urme.
Status page: Edge, Wallet, Bets, Webhook-uri, componente PSP, KYC.

14) Siguranță și conformitate

Minimizarea PII; PAN/secretele sunt interzise in busteni/carti web.
Managementul secret şi rotaţia cheilor.
RG (Joc Responsabil): steagurile de auto-excludere/limită ar trebui să aibă ca rezultat negarea automată a pariurilor/plăților.
AML/KYC: "kyc' evenimente. actualizat „,” aml. alertă "sunt disponibile prin abonament; ia decizii în sistemul dvs. sau prin modulul nostru.
GDPR/DSAR: puncte finale pentru încărcarea/ștergerea datelor personale ale jucătorului pentru solicitări legale.
mTLS și HSTS sunt activate în mod implicit în mediul de producție.

15) Performanță și cote

Buget recomandat per partener (implicit):
  • SPR: 50 (explozie 100)
  • Cârlige web concurente: 10
  • Dimensiunea caroseriei: ≤ 256 KB (evenimente de joc), ≤ 64 KB (portofel)

Solicitați o actualizare a planului prin intermediul managerului de cont, specificând prognoza/volumele SPR.

16) Schimbare și Release Management

Schimbarea ferestrelor: lucrari programate - in grafic, notificare ≥ 5 zile lucratoare.
Migrarea versiunilor: dual-write/dual-read în timpul perioadei de tranziție.
Teste contract CI: schema JSON, câmpuri obligatorii, stabil 'error _ code'.
Canare: includerea treptată a traficului pentru noi caracteristici.

17) Certificarea integrării (Check-list)

Funcțional:
  • Oferta/Plata Înregistrare/nul
  • Idempotența tuturor punctelor finale de scriere
  • Procesare corectă 429/5xx + backoff
  • Verificarea semnăturii prin broșură web, Deduplicarea X-GH-Event-Id
  • Echilibrarea reconcilierii după serii de evenimente (câștig/pierdere)
  • Rapoartele de reconciliere sunt de acord cu datele dvs
Fiabilitate:
  • Retragerile prin webhook sunt implementate
  • Timeout client ≤ 10c, încercare totală ≤ 30c
  • Întrerupător de circuit pe dependențe
Securitate/Conformitate:
  • Stocarea secretelor în managerul secret
  • PII Edition în jurnale
  • Steagurile RG/AML sunt luate în considerare în timp real

18) Scenarii utilizate frecvent

18. 1 Înregistrarea ratei cu idempotență


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 urmat de succes

1. Serverul dvs. nu este disponibil → retro 5xx → backoff.
2. După recuperare - ia același "X-GH-Event-ID' → sunt obligați să ignore duplicate.

18. 3 Degradarea parțială a furnizorului

Vom rambursa 503; repeta cu backoff.
Cu degradare îndelungată - opriți marcarea furnizorului și incluzând rutarea inteligentă (dacă se află în contract).

19) DevEx și suport

Portal: chei, utilizare, cârlige web, jurnale de livrare, tablouri de bord SLO, rapoarte de export.
Webhooks reluare: redelivery după intervalul de date/ID.
Incidente: auto-crearea unui bilet, cameră de război, post-mortem ≤ 48 de ore pe SEV-1.
Comunicații: # partners-status channel/mail on-call 24 × 7 (Enterprise).

20) Planul de îmbarcare (2-4 săptămâni)

1. Săptămâna 1: emisiune cheie, conexiune sandbox, scenarii de bază (pariu/plată/poșetă).
2. Săptămâna 2: Cârlige web și reconcilieri, steaguri RG/KYC, teste de încărcare, comportament 429/5xx.
3. Săptămâna 3: raportare (reconciliere, încărcare), securitate (semnături, secrete), teste contractuale.
4. Săptămâna 4: certificare, includere canară în vânzări, monitorizare, matrice de contact.

21) Mini-Întrebări frecvente

Pot avea gRPC?
Da, la cerere; Cartografierea codului de eroare HTTP este furnizată în caietul de sarcini.

Cum să obțineți date retro?
Prin rapoarte de „reconciliere” (de la/la date) sau încărcați S3/SFTP.

Cum îmi ridic limitele?
Prin portal/account manager indicând SPR/competitivitate prognozată.

Care este considerată sursa adevărului echilibrului?
Jurnalul tranzacției portofelului GambleHub + reconcilierea zilnică.

Total

Integrarea cu GambleHub se bazează pe un contract clar: API-uri și scheme stabile, cărți web semnate, idempotență și retrăiri, limite transparente și raportare, precum și cerințe de securitate și conformitate. Urmând acest ghid și listele de verificare de certificare, veți ajunge rapid pe piață, oferind fluxuri de numerar fiabile și rapoarte consecvente fără discrepanțe.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.