Open Banking Gateway

Guía de integración

Empieza con seguridad. Conecta con intención.

Dos entornos, dos tipos de autenticación y una regla clara de cobro. Así encajan.

Primeros pasos

Elige la integración y revisa su disponibilidad. Todas tienen sandbox con datos simulados; solo hay endpoints reales cuando el catálogo lo indica. Las rutas API no se traducen.

URL base del sandbox
https://www.openbankinggateway.com/api/sandbox
URL base real
https://www.openbankinggateway.com/api/v1

Sandbox gratuito

La consola usa rutas relativas /api/sandbox del mismo origen. El servicio anónimo no necesita Google, clave API, cuenta de monedero ni créditos. No es un proxy de navegador entre orígenes: ejecuta los ejemplos en este sitio o usa un cliente HTTP de servidor.

Usa solo las identidades y credenciales de prueba de las páginas y la consola. Las transferencias son simuladas, no se envían SMS y sus tokens no sirven en modo real.

JavaScript · same-origin sandbox
const response = await fetch('/api/sandbox/bkash-agent/login/request-otp', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    account: '01700000001',
    phoneOperator: 'Grameenphone'
  })
});
const result = await response.json();
curl · sandbox
curl -X POST 'https://www.openbankinggateway.com/api/sandbox/bkash-agent/login/request-otp' \
  -H 'Content-Type: application/json' \
  --data '{
  "account": "01700000001",
  "phoneOperator": "Grameenphone"
}'

Autenticación real

Para solicitudes reales entre servidores, accede al sitio, crea una clave en Panel → Claves API y envíala en x-api-key. Nunca la expongas en JavaScript del navegador, URLs o repositorios públicos. Solo funcionan las integraciones reales compatibles.

curl · Live · x-api-key
curl 'https://www.openbankinggateway.com/api/v1/bkash-agent/balance?account=<YOUR_WALLET_NUMBER>' \
  -H "x-api-key: $OBG_API_KEY" \
  -H "X-OBG-Token: $WALLET_TOKEN"
Gestionar claves API

Sitio y monedero: accesos distintos

Google autentica tu cuenta de Open Banking Gateway y da acceso a créditos, claves y cobro. No te conecta a bKash ni a otro monedero. Completa el flujo del monedero por separado con una cuenta autorizada.

Las sesiones reales de bKash se vinculan a tu cuenta del sitio tras acceder al monedero. Otro usuario no puede apropiarse de ese vínculo. Guarda el token de forma segura y vuelve a autenticarte al caducar.

  1. 1POST /login/request-otp
  2. 2POST /login/verify-otp
POST · Live · verify-otp
curl -X POST 'https://www.openbankinggateway.com/api/v1/bkash-agent/login/verify-otp' \
  -H "x-api-key: $OBG_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
    "account": "<YOUR_WALLET_NUMBER>",
    "pin": "<WALLET_PIN>",
    "otp": "<SMS_OTP>",
    "otpHash": "<SMS_HASH>"
  }'

Campos sensibles

Envía el token del monedero en X-OBG-Token. Envía PIN, contraseñas, OTP y otpHash en el cuerpo JSON de los POST con Content-Type: application/json. Existe compatibilidad por consulta, pero las URLs pueden filtrar secretos en historial, capturas, referencias o registros: evítala en nuevas integraciones.

Créditos y cobro

Cada llamada real exitosa cuesta 1 crédito. Los fallos, incluidos los del proveedor, son gratis; el sandbox nunca consume créditos. Puede haber una retención temporal de 1 crédito mientras se procesa la llamada, que después se cobra o libera.

Tu primer acceso con Google concede 1.000 créditos una sola vez. Compra 10.000 por 10 USD, 50.000 por 50 USD o 100.000 por 100 USD. No caducan. Comprar créditos no habilita APIs solo sandbox.

Precios

Respuestas

Las respuestas usan {code, data}. El código de la plataforma, el estado HTTP y el estado interno del proveedor describen capas distintas: HTTP 200 o code 200 no prueban por sí solos el éxito de una operación. Revisa los campos específicos del proveedor. Un fallo interno del proveedor no se cobra, aunque el code externo sea 200. Una estructura de respuesta del proveedor no reconocida devuelve HTTP 502 con UPSTREAM_BAD_RESPONSE y es gratuita. No se garantiza un campo adicional de respuesta sin procesar.

JSON · gateway error
{
  "code": 400,
  "data": {
    "error": "One or more parameters are missing or invalid.",
    "errorCode": "INVALID_PARAMS",
    "requestId": "<request-id>"
  }
}

X-Request-Id identifica la solicitud. Cuando la liquidación está confirmada, X-Credits-Charged es 1 para una llamada real exitosa cobrada y 0 para fallos o sandbox. X-OBG-Settlement: unknown indica que el resultado del cobro no está resuelto: X-Credits-Charged: 0 no demuestra que no se haya descontado un crédito. Guarda el ID, no credenciales, para diagnosticar problemas.

Transferencias y reintentos

Los endpoints que mueven dinero requieren una Idempotency-Key única por operación. Mantén la misma clave al resolverla; no generes otra para repetir una transferencia incierta. La plataforma no reintenta automáticamente al proveedor.

HTTP headers · example
Idempotency-Key: <original-operation-id>
X-Request-Id: <gateway-request-id>
X-Credits-Charged: 0
X-OBG-Settlement: unknown

Errores y límites

El sandbox permite 60 solicitudes por minuto e IP. También hay límites reales y de cuenta. Ante 429, respeta Retry-After. Las lecturas tienen 25 segundos; accesos, escrituras y operaciones de dinero, hasta 45 segundos.

Errores y límites
HTTPCódigo de la plataformaQué hacer
404APP_NOT_FOUNDRevisa campos obligatorios, tipos y reglas.
404ENDPOINT_NOT_FOUNDRevisa campos obligatorios, tipos y reglas.
405METHOD_NOT_ALLOWEDRevisa campos obligatorios, tipos y reglas.
503LIVE_GATEWAY_DISABLEDEl gateway real o un servicio requerido no está habilitado. Usa el sandbox o contacta con soporte.
403LIVE_ACCESS_NOT_ENABLEDNo hay proveedor real habilitado. Usa el sandbox o contáctanos. No se cobra crédito.
401INVALID_API_KEYUsa una clave válida o accede a la consola real del sitio. Los errores de sesión del monedero son resultados separados del proveedor.
401UNAUTHENTICATEDUsa una clave válida o accede a la consola real del sitio. Los errores de sesión del monedero son resultados separados del proveedor.
403ORIGIN_REJECTEDUsa una clave válida o accede a la consola real del sitio. Los errores de sesión del monedero son resultados separados del proveedor.
400INVALID_PARAMSRevisa campos obligatorios, tipos y reglas.
400INVALID_IDEMPOTENCY_KEYRevisa campos obligatorios, tipos y reglas.
413PAYLOAD_TOO_LARGERevisa campos obligatorios, tipos y reglas.
415UNSUPPORTED_MEDIA_TYPERevisa campos obligatorios, tipos y reglas.
429RATE_LIMITEDEspera el plazo de Retry-After; evita bucles de reintentos.
403ACCOUNT_LINKED_TO_ANOTHER_USERAccede al monedero con la cuenta correcta del sitio. No puede vincularse a dos usuarios.
403ACCOUNT_NOT_LINKEDAccede al monedero con la cuenta correcta del sitio. No puede vincularse a dos usuarios.
409REQUEST_IN_PROGRESSRevisa la operación original y su resultado antes de actuar.
409IDEMPOTENT_REPLAYRevisa la operación original y su resultado antes de actuar.
422IDEMPOTENCY_KEY_REUSEDRevisa la operación original y su resultado antes de actuar.
402INSUFFICIENT_CREDITSRecarga créditos antes de otra solicitud real.
504UPSTREAM_TIMEOUTGuarda el ID de solicitud y la Idempotency-Key original. Si la transferencia o la liquidación del cobro es incierta, consulta el uso y concilia el resultado del proveedor antes de reintentar; nunca repitas la operación automáticamente.
502UPSTREAM_UNAVAILABLEGuarda el ID de solicitud y la Idempotency-Key original. Si la transferencia o la liquidación del cobro es incierta, consulta el uso y concilia el resultado del proveedor antes de reintentar; nunca repitas la operación automáticamente.
502UPSTREAM_BAD_RESPONSENo se reconoció la estructura de respuesta del proveedor. La plataforma devuelve HTTP 502 y no cobra créditos. En una operación monetaria, esto no demuestra que no se hayan movido fondos; concilia el resultado del proveedor antes de cualquier reintento.
503NOT_CONFIGUREDEl gateway real o un servicio requerido no está habilitado. Usa el sandbox o contacta con soporte.
500INTERNAL_ERRORGuarda el ID de solicitud y la Idempotency-Key original. Si la transferencia o la liquidación del cobro es incierta, consulta el uso y concilia el resultado del proveedor antes de reintentar; nunca repitas la operación automáticamente.

Referencia de integraciones

Cada página tiene los endpoints exactos, reglas y consola con sandbox por defecto. La disponibilidad depende del catálogo, no de comprar créditos.