Logo GH

Guía de integración de GambleHub

1) Revisión y modelo de interacción

GambleHub es una plataforma de agregación de servicios iGaming (proveedores de juegos, pasarelas de pago, KYC/AML, motor de bonificación, informes). La integración del socio es posible en dos modos:
  • Proveedor de API: usted llama a la API de GambleHub (billetera, bonos, informes).
  • Proveedor externo: llamamos a sus webhooks/endpoints (balance, transacciones, KYC).
Niveles:

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

2. Eventos (bus de eventos: apuestas/pagos/billetera/CUS)

3. Informes (API + exportación S3/SFTP)

4. Operaciones (incidentes, SLO, préstamos SLA)

2) Entornos, dominios y IP

EntornoBase de APIWebhooks (de nosotros)Nuestras IP salientesSLA
Sandbox`https://sandbox. api. gamblehub. io`'https ://< su _ dominio >/webhooks/...'`203. 0. 113. 10/31`best-effort
Staging`https://staging. api. gamblehub. io`como arriba`198. 51. 100. 40/29`99. 5%
Production`https://api. gamblehub. io`como arriba`192. 0. 2. 16/28`99. 9%

El SLA contractual se fija en el contrato. Las actualizaciones de IP se publican con suficiente antelación. Permitir Allowlist.

3) Autenticación y autorización

Admitimos tres mecanismos (seleccione el que requiera el contrato):
  • OAuth2 Credenciales del cliente: servidor a servidor ('scope' -s: 'wallet: read', 'wallet: write', 'bet: write', 'report: read').
  • JWT (issuer = GambleHub): firma RS256, claves en JWKS endpoint.
  • mTLS: autenticación TLS recíproca a nivel de ingreso (bajo petición de cumplimiento).
Ejemplo de recepción de token (OAuth2):

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

Los scopes se comprueban en cada llamada. Para operaciones de alto riesgo (pagos) se utiliza el paso a paso: un scope separado y, opcionalmente, un enlace IP/ASN.

4) Versificación e interoperabilidad

Ruta: '/v1/... ', '/v2/...' (la versión mayor es incompatible hacia atrás).
Cambios menores y extensibles - a través de la extensión del esquema (nuevos campos opcionales).
Deprecaciones - 90 días con la notificación.
Los webhooks se versionan con el título 'X-GH-Event-Version: 1'.

5) Límites, cuotas e idempotencia

Los límites de tasa se emiten por encabezados:
  • `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.
  • El 429 regresa con 'Retry-After' (segundos).
  • Todos los métodos inseguros requieren 'Idempotency-Key' (TTL 24-72 h). La repetición de una consulta idéntica devuelve el resultado original ('409 IDEMP_REPLAY' en caso de conflicto).

6) Normas de error

Formato único 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`). Non-retriable: 400/401/403/404/409/422/410/415/412.

7) Esquemas de datos (núcleo)

7. 1 Jugador

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 Período de sesiones

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 Monedero/transacciones

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 Tasa/Pago

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 Bono

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) APROX API (fragmentos 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 (de GambleHub a un socio)

Los eventos se envían en orden, 'Content-Type: application/json', encabezados:
  • `X-GH-Event`: `player. created|session. started|bet. placed|bet. settled|wallet. changed|kyc. updated|rg. flagged`
  • 'X-GH-Event-Id': UUID único
  • `X-GH-Signature`: `sha256=`
  • 'X-GH-Retry': intento No
  • `X-GH-Event-Version`: `1`
Ejemplo '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"
}
}

Respuesta del anfitrión - sólo 2xx se considera un éxito. De lo contrario, son retraídas: retroceso exponencial (1s, 3s, 10s, 30s, 2m, 10m, 30m; máximo 24 horas). Para la deduplicación, utilice 'X-GH-Event-Id'.

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

10) Orden de flujo de efectivo (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)

Se admiten balances hold y multi-billeteras (reales/bonus).

11) Sandbox y escenarios de prueba

Jugadores de prueba: 'p _ sbx _', monedas 'EUR' USD 'CAD'.
Los proveedores de juegos emulan: win/lose/void, descuentos, retrasos.
KYC sandbox: respuestas 'verified' failed 'por plantillas de pasaportes.
PSP sandbox: статусы `authorized|captured|declined|reversed`.

Conjunto de casos de prueba obligatorios:
  • Stavka→vyplata→sverka de balance
  • Vuelta/void ronda
  • Idempotencia al volver a apostar
  • Fallo del webhook con retraídas y posterior deduplicación
  • 429 y correcto 'Retry-After'
  • 5xx con backoff exponencial en el lado del cliente

12) Conciliación y presentación de informes

Reconciliation API

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

Resumen diario: revoluciones, GGR/NGP, proveedores, corte por geo/divisas.
Exportación: S3/SFTP con los manifiestos firmados y los hashes de archivo (SHA256).
Informes de tiempo: UTC (a menos que se especifique lo contrario en el contrato).

13) Observabilidad y SLO

SLI: éxito de la API ≥ 99. 95% (28d), p95 latencia para métodos críticos, éxito en la entrega de webhooks.
Burn-alerts (fast/slow) por un presupuesto erróneo.
Correlación trace: 'trace _ id' en respuestas/logs, drilldown a tracks.
Página de estado: componentes Edge, Wallet, Bets, Webhooks, PSP, KYC.

14) Seguridad y cumplimiento

PII-minimización; PAN/secretos prohibidos en logs/webhooks.
Administración secreta y rotación de claves.
RG (Responsible Gambling): las banderas de autoexclusión/límites deben dar lugar a una denegación automática de apuestas/pagos.
AML/KYC: eventos 'kyc. updated`, `aml. alert 'están disponibles por suscripción; toma decisiones en su sistema, ya sea a través de nuestro módulo.
GDPR/DSAR: endpoints para descargar/eliminar datos personales del jugador a petición legal.
mTLS y HSTS están habilitados de forma predeterminada en el entorno prod.

15) Productividad y cuotas

Presupuesto recomendado por socio (predeterminado):
  • RPS: 50 (burst 100)
  • Concurrent webhooks: 10
  • Tamaño del cuerpo: ≤ 256 KB (eventos de juego), ≤ 64 KB (billetera)

Solicite una actualización del plan a través del gestor de cuentas, indicando la previsión de RPS/volúmenes.

16) Gestión de cambios y lanzamientos

Cambiar Windows: trabajo programado - programado, notificación ≥ 5 días hábiles.
Migraciones de versión: dual-write/dual-read durante el período de transición.
Pruebas de contrato en CI: esquema JSON, campos obligatorios, estable 'error _ code'.
Canarias: incorporación gradual del tráfico para los nuevos fiches.

17) Certificación de integración (Check-list)

Funcional:
  • Registro de apuestas/pagos/void
  • Idempotencia en todos los endpoints write
  • Tratamiento correcto 429/5xx + backoff
  • Verificación de la firma de webhooks, deduplicación por 'X-GH-Event-Id'
  • Conciliación del balance después de una serie de eventos (ganar/perder)
  • Los informes de reconciliación convergen con sus datos
Fiabilidad:
  • Retraídas de webhooks realizadas
  • Timeout de los clientes ≤ 10s, intento total ≤ 30s
  • Circuit-breaker en las dependencias
Seguridad/Cumplimiento:
  • Guardar secretos en el gestor de secretos
  • Edición PII en logs
  • Las banderas RG/AML se contabilizan en tiempo real

18) Scripts de uso frecuente

18. 1 Registro de la apuesta con idempotencia


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 seguido de éxito

1. Su servidor no está disponible → 5xx → retrae por backoff.
2. Después de la recuperación - tomar el mismo 'X-GH-Event-Id' → están obligados a ignorar duplicados.

18. 3 Degradación parcial del proveedor

Devolveremos 503; repita con backoff.
En el caso de degradación prolongada, la marca de parada del proveedor y la activación de la ruta inteligente (si está en el contrato).

19) DevEx y soporte

Portal: llaves, usage, webhooks, logs de envío, dashboards SLO, informes de exportación.
Webhooks replay: volver a enviar por intervalo de fechas/ID.
Incidentes: creación automática de ticket, sala de guerra, post mortem ≤ 48 h por SEV-1.
Comunicaciones: # partners-status canal/correo on-call 24 × 7 (Enterprise).

20) Plan de onboarding (2-4 semanas)

1. Semana 1: entrega de llaves, conexión de sandbox, escenarios básicos (apuesta/pago/billetera).
2. Semana 2: webhooks y conciliaciones, banderas RG/KYC, pruebas de carga, comportamiento 429/5xx.
3. Semana 3: informes (reconciliación, descargas), seguridad (firmas, secretos), pruebas de contrato.
4. Semana 4: certificación, canario-inclusión en la venta, monitoreo, matriz de contacto.

21) Mini preguntas frecuentes

¿Puede gRPC?
Sí, a petición; el mapeo de códigos de error en HTTP se proporciona en la especificación.

¿Cómo puedo obtener datos retro?
A través de los informes 'reconciliation' (fechas 'from/to') o S3/SFTP de descarga.

¿Cómo puedo aumentar los límites?
A través del portal/gestor de cuentas con indicación de RPS/competencia predictiva.

¿Cuál es la fuente de la verdad del equilibrio?
Registro transaccional de la cartera GambleHub + conciliación diaria (reconciliation).

Resultado

La integración con GambleHub se basa en un contrato claro: API y esquemas estables, webhooks firmados, idempotencia y retrés, límites transparentes e informes, y requisitos de seguridad y cumplimiento. Al seguir esta guía y los cheques de certificación, saldrá rápidamente al paso, asegurando flujos de efectivo confiables e informes coherentes sin discrepancias.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.