Cómo funciona la integración de sistemas de pago
Los pagos son «aorta» de un casino en línea. De cómo se arregla la integración con los proveedores de pago (PSP) depende la conversión al primer depósito, la velocidad de retiro, la proporción de charjbacks, la carga del zapport e incluso la reputación del regulador. A continuación, un mapa práctico: qué componentes se necesitan, cómo fluye la consulta, dónde poner la protección y qué contar.
1) Arquitectura de bucle de pago
Bloques principales:- Caja (Checkout UI): seleccionar el método/moneda/cantidad, 3DS/SCA, estados, errores.
- Gateway (Gateway): enrutamiento a PSP por reglas (país, moneda, riesgo, valor).
- Monedero (PAM/Wallet): cuenta de balance, límites de RG, transacciones de 'debit/credit'.
- Antifraude/AML: puntuación de la operación antes y después de la autorización.
- Webhooks (Callbacks): confirman los estados finales.
- Facturación/Reconciliación: coincidencia diaria de dinero en el PSP y en la cartera.
- Almacenamiento de tokens: tarjetas/carteras a través de la tokenización PSP, sin PAN 'crudo'.
- Reglas por país/banco/moneda/límite, líneas A/B, failover automático en degradación.
2) Flujos de «depósito» y «retiro» (esquemas)
Depósito (tarjeta/billetera/banca):1. 'POST/payments/init' → crear una intención (amount, currency, method).
2. Redirección/SDK → 3DS/SCA/biometría.
3. PSP devuelve el estado preliminar (authorized/pending/failed).
4. Webhook PSP → el estado final (capturado/fallado).
5. 'wallet/credit' por final + registro de límites RG/historia.
Salida:1. 'POST/payouts/init' → verificación del vager/límites/riesgo.
2. Iniciando payout en PSP (idealmente es la misma ruta que el depósito).
3. Webhook PSP → success/failed.
4. 'wallet/debit' en success, registro de motivos de rechazo, notificación del jugador.
3) Idempotencia y conectividad del dinero
Cada llamada es con 'Idempotency-Key' y la única 'txn _ id'.
Los depósitos/retiros sólo cambian el balance una vez - por el webhook final.
Cualquier repetición de consulta devuelve el mismo 'txn _ id' y estado.
En conjunto con los juegos: 'round _ id' ↔ 'debit _ txn _ id '/' credit _ txn _ id'.
4) Seguridad y cumplimiento
TLS 1. 2+/1. 3, HSTS; webhooks con firma HMAC y anti-replay ('timestamp', nonce).
Tokenización de tarjetas en PSP; PCI DSS scope-reduction (campos alojados/páginas).
SCA/3DS2 para tarjetas, PSD2/Open Banking para Pay-by-Bank.
GDPR: minimización de PII, retén, procesos DSR; Registro de acceso a perfiles.
mTLS/IP allow-list para conexiones PSP, segregación de bucle de pago.
5) Antifraude y AML (antes y después del pago)
Pre-auth reglas: geo/ASN, dispositivo, velocity, comportamiento, «pass-through».
ML-scoring/grafo: tarjetas compartidas/monederos/dispositivos, chargeback repetido.
Seguimiento post-auth: cancelaciones, devoluciones, retiro rápido.
Escenarios AML: umbrales, structuring, rutas inusuales, informes NAT/SAR.
KYC de paso a paso: en riesgo medio/alto antes de la salida.
6) Webhooks: entrega segura
Firma HMAC, validación 'timestamp' y deduplicación por 'event _ id'.
Los retraídos del lado del PSP son idempotentes.
Registros de entrega (success/fail), cola de carta muerta y manual «replay».
Webhook no cambia el saldo a menos que la suma/ID coincida.
7) Errores y tiempos de espera: diseño de respuestas
Códigos: '402' (pago requerido), '409' (conflicto idempotente), '422' (validación), '429' (rate-limit), '5xx' (incidente).
Los cuerpos de error: 'error', 'mensaje', 'trace _ id', 'details {...}' - ayudan a los sapport y alertas.
Graceful retry en el cliente (backoff exponencial), pistas claras en IU.
8) Enrutamiento y failover en varios PSP
Normas de calidad: p95 autorizaciones, conversiones, cuota de 3DS feil, costo.
Router inteligente: cuando las métricas se deterioran, el tráfico se transfiere a una alternativa.
Sticky-ruta a la sesión/banco para la estabilidad de 3DS.
Plan de degradación: apaga los métodos «pesados», dejando rápidos (P2P/Pay-by-Bank), cola de salidas.
9) Soldadura y finanzas (Reconciliation)
Descarga diaria de PSP y autoservicio con monedero: coincidencia de cantidades, comisiones, devoluciones.
Discrepancias → casos para la investigación.
Informes separados por chargeback/refund/fees, cálculo del margen verdadero por métodos.
10) Métricas que deben mantenerse enfocadas
Conversión de depósito por método/banco/país/dispositivo.
Tiempo de depósito/retiro (p50/p95).
Compartir 3DS-feels, cancelaciones, devoluciones, chargeback rate.
Proporción de rugidos manuales y TTV KYC.
Uptime PSP y su propio error-rate en las rutas.
Costo por éxito y ROI por métodos.
11) Ejemplo de API mínima (abreviado)
Crear intención de depósito- `POST /v1/payments/init`
json
{
"amount":"50. 00", "currency":"EUR", "method":"card", "return_url":"https://app. example. com/checkout/return", "idempotency_key":"b6a1-…", "meta":{"country":"FI","device":"ios"}
}
Respuesta
json
{"payment_id":"pay_123","status":"pending","redirect_url":"https://psp. example/3ds/…"}
Estado de Webhook
- `POST /v1/payments/webhook` + `X-Signature: sha256=…`
json
{
"event_id":"evt_789", "payment_id":"pay_123", "status":"captured", "amount":"50. 00", "currency":"EUR", "timestamp":"2025-10-17T09:41:00Z"
}
Realizar la inscripción (dentro de la plataforma)
- `POST /v1/wallet/credit`
json
{"payment_id":"pay_123","txn_id":"txn_555","amount":"50. 00","idempotency_key":"b6a1-…"}
12) Disponibilidad y caja registradora UX
Mínimo de pasos: país/moneda auto-destina, tokens de métodos guardados.
Métodos locales: botones bancarios, e-wallets, Apple/Google Pay.
Transparencia: Comisión/ETA de retirada, estado de la operación, errores comprensibles.
Accesibilidad: elementos grandes, contraste, lectores de pantalla, multilingüismo.
13) DR/BCP y seguridad de las operaciones
Replicación de registros de pago, backups cifrados, ejercicios trimestrales de DR.
RPO/RTO documentados, flow de pagos «diferidos» cuando PSP falla.
WAF/bot management en la caja registradora, pero excepciones para redirecciones/SDK PSP.
14) Errores frecuentes
El balance cambia hasta el final de webhook → toma/rassinchron.
No 'Idempotency-Key' → la repetición cuando hay fallas en la red crea una segunda operación.
Comprobación débil de la firma webhook → sustitución de estados.
La falta de pruebas de auto con PSP → «discrepancias tranquilas».
Un PSP «para todo» → tiempo de inactividad y pérdida de conversión en la degradación.
La validación de 3DS/campos de direcciones «para marcar» → el crecimiento de los charjbacks.
15) Chequeo de implementación (guardar)
- Router multi-PSP, reglas de calidad, failover
- Idempotencia en cada capa ('txn _ id', 'Idempotency-Key')
- Webhooks: HMAC, anti-replay, registros de envío, deduplicación
- Tokenization/hosted fields, PCI DSS scope-reduction
- 3DS2/SCA, PSD2/Open Banca donde está disponible
- Antifraude/AML antes y después del pago, step-up KYC
- Verificación automática de informes PSP, análisis de inconsistencias
- Observabilidad: p95 depósito/retiro, 3DS fail-rate, uptime PSP
- Plan de DR, pagos diferidos, backups de revistas
- Cajeros UX: métodos locales, transparentes AETA/comisiones, disponibilidad
Una buena integración de pago no es «conectar SDK», sino construir un circuito estable: enrutamiento multi-PSP, idempotencia estricta, webhooks firmados, antifraude/AML, autocartera y observabilidad. Tal pila aumenta la conversión, acelera la retirada, reduce los riesgos de los charjbacks y hace que la plataforma sea predecible para jugadores, socios y reguladores.