Logo GH

Przewodnik integracyjny Gam, Hub

1) Przegląd i model interakcji

Gam, Hub jest platformą agregacji usług iGaming (dostawcy gier, bramy płatności, KYC/AML, silnik bonusowy, raportowanie). Integracja partnerska jest możliwa w dwóch trybach:
  • Dostawca API: dzwonisz do API Gamz Hub (portfel, bonusy, raporty).
  • Zewnętrzny dostawca: nazywamy Twoje haki/punkty końcowe (saldo, transakcje, KYC).
Poziomy:

1. Krawędź/API (REST/gRPC, Webhooks)

2. Wydarzenia (autobus wydarzeń: zakłady/wypłaty/portfel/ICC)

3. Sprawozdawczość (API + S3/SFTP eksport)

4. Operacje (incydenty, SLO, kredyty SLA)

2) Środowiska, domeny i IP

ŚrodaPodstawa APIHaki internetowe (od nas)Nasz wyjazdowy IPSLA
Piaskownica"https ://piaskownica. api. gamblehub. i "'https ://< your _ domain >/webhooks/... '`203. 0. 113. 10/31`najlepszy wysiłek
Ustawianie"https ://ustawianie. api. gamblehub. i "jak powyżej`198. 51. 100. 40/29`99. 5%
Produkcja"https ://api. gamblehub. i "jak powyżej`192. 0. 2. 16/28`99. 9%

Umowa SLA jest ustalona w umowie. Aktualizacje IP są publikowane z wyprzedzeniem. Zezwala na listę dopuszczalną.

3) Uwierzytelnianie i autoryzacja

Wspieramy trzy mechanizmy (wybierz jeden wymagany w umowie):
  • OAuth2 poświadczenia klienta: serwer-serwer ('zakres': 'portfel: read', 'portfel: write', 'bet: write', 'report: read').
  • JWT (emitent = GamلHub): podpis RS256, klucze w punkcie końcowym JWKS.
  • mTLS: wzajemne uwierzytelnianie TLS na poziomie ingress (na żądanie zgodności).
Przykład uzyskania tokenu (OAuth2):

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

Scopy są sprawdzane przy każdym połączeniu. W przypadku operacji wysokiego ryzyka (płatności) stosuje się stopień zaawansowania: odrębny zakres i, opcjonalnie, powiązanie z IP/ASN.

4) Wersioning i kompatybilność

Ścieżka: '/v1/... ", "/v2/..." (główna wersja jest niezgodna z plecami).
Drobne i rozszerzające się zmiany - poprzez rozszerzenie schematu (nowe pola opcjonalne).
Spadki - 90 dni z powiadomieniem.
Haki są wersjonowane z tytułem „X-GH-Event-Version: 1”.

5) Limity, kwoty i idempotencja

Limity stawek podane są przez nagłówki:
  • 'Limit-Limit-X', 'Limit-Pozostały', 'X-Limit-Reset'.
  • 429 wraca z 'Retry-After' (sekundy).
  • Wszystkie niebezpieczne metody wymagają 'Idempotency-Key' (TTL 24-72 h). Powtarzanie identycznego zapytania zwraca oryginalny wynik ('409 IDEMP_REPLAY' w sprawie konfliktu).

6) Normy błędów

Jednolity format RFC 7807 ('application/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”). Nie do odzyskania: 400/401/403/404/409/ 422/410/415/412.

7) Schematy danych (rdzeń)

7. 1 Gracz

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 Sesja

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 Portfel/transakcje

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 Stopa/wypłata

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 (fragmenty 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) Haki internetowe (Gam, Hub do partnera)

Zdarzenia są wysyłane w kolejności, „Content-Type: application/json”, nagłówki:
  • 'X-GH-Event': 'gracz. stworzona "sesja. zaczął 'bet. umieszczone 'bet. settled 'portfel. zmienił 'kyc. zaktualizowany 'rg. flagowany "
  • 'X-GH-Event-Id': unikalny UUID
  • „Podpis X-GH”: „sha256 =
  • 'X-GH-Retry': Próba nr
  • „X-GH-Event-Version”: „1”
Przykład '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"
}
}

Odpowiedź gospodarza - tylko 2xx jest uważany za sukces. Inaczej - retrai: wykładniczy backoff (1s, 3s, 10s, 30s, 2m, 10m, 30m; maksymalnie 24 godziny). Użyj 'X-GH-Event-Id' do deduplikacji.

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

10) Przepływ środków pieniężnych (przepływ portfela)

1. depozyt (PSP → portfel. kredyt)

2. zakład (hold/authorize ила direct debit)

3. rozrachunek (zwolnienie; „wygrana ”/„ przegrana ”/„ nieważność”)

4. wycofanie (portfel. debit → PSP)

Obsługiwane są salda i portfele wielofunkcyjne (real/bonus).

11) Piaskownica i scenariusze testów

Gracze testowi: 'p _ sbx _', waluty' EUR 'USD' CAD '.
Dostawcy gier emulate: win/lose/void, rabaty, opóźnienia.
Piaskownica KYC: „zweryfikowany” nieudany „przegląd” odpowiedzi na szablony paszportów.
PSP sandbox: статеса 'authorized' captied 'declined' reversed '.

Zestaw obowiązkowych przypadków badań:
  • Bilans Stavka → vyplata → sverka
  • Pullback/pustka okrągła
  • Idempotencja przy ponownej ofercie
  • Awaria haka z przekładkami i późniejszą deduplikacją
  • 429 i poprawne „Retry-After”
  • 5xx z klientem-side wykładnicze backoff

12) Uzgodnienia i sprawozdawczość

Uzgodnienie API

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

Podsumowania dzienne: obroty, GGR/NGP, dostawcy, podział geo/walutowy.
Eksport: S3/SFTP z podpisanymi manifestami i hashami plików (SHA256).
Strefa czasowa sprawozdawczości: UTC (chyba że w umowie określono inaczej).

13) Obserwowalność i SLO

SLI: sukces API ≥ 99. 95% (28d), opóźnienie p95 dla metod krytycznych, sukces dostawy haków internetowych.
Alerty oparzeniowe (szybkie/powolne) na błędny budżet.
Korelacja śladu: 'trace _ id' w odpowiedziach/dziennikach, wiercenie do śladów.
Strona stanu: Krawędź, Portfel, Zakłady, Haki internetowe, PSP, komponenty KYC.

14) Bezpieczeństwo i zgodność

minimalizacja PII; PAN/tajemnice są zabronione w dziennikach/hakach internetowych.
Tajne zarządzanie i rotacja kluczy.
RG (Responsible Gambling): flagi samodzielnego wykluczenia/limitu powinny skutkować automatycznym zaprzeczeniem zakładów/płatności.
AML/KYC: wydarzenia "kyc'. zaktualizowane ',' aml. alert "jest dostępny przez subskrypcję; podejmować decyzje w systemie lub za pośrednictwem naszego modułu.
RODO/DSAR: punkty końcowe do przesyłania/usuwania danych osobowych gracza w przypadku wniosków prawnych.
mTLS i HSTS są domyślnie włączone w środowisku produkcyjnym.

15) Wyniki i kwoty

Zalecany budżet na partnera (niewykonanie zobowiązania):
  • RPS: 50 (wybuch 100)
  • Równoległe haki: 10
  • Wielkość ciała: ≤ 256 KB (gry), ≤ 64 KB (portfel)

Zażądaj uaktualnienia planu za pośrednictwem menedżera konta, określając prognozę/woluminy RPS.

16) Zarządzanie zmianą i uwolnieniem

Zmiana okien: zaplanowana praca - w harmonogramie, powiadomienie ≥ 5 dni roboczych.
Migracje w wersji: podwójne zapisy/podwójne odczyty w okresie przejściowym.
CI testy kontraktowe: schemat JSON, wymagane pola, stabilny 'error _ code'.
Kanaryjskie: stopniowe włączanie ruchu dla nowych funkcji.

17) Certyfikat integracji (lista kontrolna)

Funkcjonalne:
  • Oferta/płatna rejestracja/nieważność
  • Idempotencja we wszystkich punktach końcowych zapisu
  • Poprawne przetwarzanie 429/5xx + backoff
  • Webhook Signature Verification, X-GH-Event-Id Deduplication
  • Uzgodnienie równowagi po serii wydarzeń (wygrana/przegrana)
  • Raporty pojednawcze zgadzają się z danymi użytkownika
Niezawodność:
  • Wycofania z haka są realizowane
  • Czasy klienta ≤ 10c, próba całkowita ≤ 30c
  • Wyłącznik od zależności
Bezpieczeństwo/Zgodność:
  • Przechowywanie tajemnic w Secret Manager
  • Wydanie PII w dziennikach
  • Flagi RG/AML są brane pod uwagę w czasie rzeczywistym

18) Często stosowane scenariusze

18. 1 Stawka rejestracji z idempotencją


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 a następnie sukces

1. Twój serwer jest niedostępny → 5xx → backoff retro.
2. Po odzyskaniu - wziąć te same 'X-GH-Event-Id' → są zobowiązane do ignorowania duplikatów.

18. 3 Częściowa degradacja usługodawcy

Zwrócimy 503; powtórzyć backoff.
Przy długiej degradacji - zaprzestać znakowania dostawcy i w tym inteligentnych tras (jeśli w umowie).

19) DevEx i wsparcie

Portal: klucze, wykorzystanie, haki internetowe, dzienniki dostawy, deski rozdzielcze SLO, raporty eksportowe.
Webhooks replay: redelivery by date range/ID.
Incydenty: auto-tworzenie biletu, pokój wojenny, postmortem ≤ 48 godzin na SEV-1.
Komunikacja: # partners-status channel/mail-call 24 × 7 (Enterprise).

20) Plan pokładowy (2-4 tygodnie)

1. Tydzień 1: emisja kluczy, połączenie piaskownicy, scenariusze bazowe (zakład/płatność/portfel).
2. Tydzień 2: haki i pojednania, flagi RG/KYC, testy obciążenia, zachowanie 429/5xx.
3. Tydzień 3: raportowanie (pojednanie, przesyłanie), bezpieczeństwo (podpisy, sekrety), testy kontraktowe.
4. Tydzień 4: certyfikacja, włączenie kanaryjskie do sprzedaży, monitorowanie, matryca kontaktowa.

21) Mini-FAQ

Mogę dostać gRPC?
Tak, na życzenie; W specyfikacji podano mapowanie kodu błędu HTTP.

Jak uzyskać dane retro?
Za pomocą raportów „pojednania” (od/do dat) lub S3/SFTP przesyłania.

Jak usunąć swoje limity?
Za pośrednictwem portalu/menedżera rachunku wskazującego prognozę RPS/konkurencyjność.

Co jest uważane za źródło prawdy równowagi?
Dziennik transakcji portfela Gamz + dzienne pojednanie.

Razem

Integracja z Gamz Hub opiera się na jasnej umowie: stabilnych interfejsów API i systemów, podpisanych haków internetowych, idempotencji i przekwalifikowań, przejrzystych limitów i sprawozdawczości, a także wymogów bezpieczeństwa i zgodności. Wykonując ten przewodnik i listy kontrolne certyfikacji, szybko trafisz na rynek, zapewniając niezawodne przepływy pieniężne i spójne raporty bez rozbieżności.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.