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.
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 -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 '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"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.
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.
PreciosRespuestas
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.
{
"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.
Idempotency-Key: <original-operation-id>
X-Request-Id: <gateway-request-id>
X-Credits-Charged: 0
X-OBG-Settlement: unknownErrores 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.
| HTTP | Código de la plataforma | Qué hacer |
|---|---|---|
| 404 | APP_NOT_FOUND | Revisa campos obligatorios, tipos y reglas. |
| 404 | ENDPOINT_NOT_FOUND | Revisa campos obligatorios, tipos y reglas. |
| 405 | METHOD_NOT_ALLOWED | Revisa campos obligatorios, tipos y reglas. |
| 503 | LIVE_GATEWAY_DISABLED | El gateway real o un servicio requerido no está habilitado. Usa el sandbox o contacta con soporte. |
| 403 | LIVE_ACCESS_NOT_ENABLED | No hay proveedor real habilitado. Usa el sandbox o contáctanos. No se cobra crédito. |
| 401 | INVALID_API_KEY | Usa una clave válida o accede a la consola real del sitio. Los errores de sesión del monedero son resultados separados del proveedor. |
| 401 | UNAUTHENTICATED | Usa una clave válida o accede a la consola real del sitio. Los errores de sesión del monedero son resultados separados del proveedor. |
| 403 | ORIGIN_REJECTED | Usa una clave válida o accede a la consola real del sitio. Los errores de sesión del monedero son resultados separados del proveedor. |
| 400 | INVALID_PARAMS | Revisa campos obligatorios, tipos y reglas. |
| 400 | INVALID_IDEMPOTENCY_KEY | Revisa campos obligatorios, tipos y reglas. |
| 413 | PAYLOAD_TOO_LARGE | Revisa campos obligatorios, tipos y reglas. |
| 415 | UNSUPPORTED_MEDIA_TYPE | Revisa campos obligatorios, tipos y reglas. |
| 429 | RATE_LIMITED | Espera el plazo de Retry-After; evita bucles de reintentos. |
| 403 | ACCOUNT_LINKED_TO_ANOTHER_USER | Accede al monedero con la cuenta correcta del sitio. No puede vincularse a dos usuarios. |
| 403 | ACCOUNT_NOT_LINKED | Accede al monedero con la cuenta correcta del sitio. No puede vincularse a dos usuarios. |
| 409 | REQUEST_IN_PROGRESS | Revisa la operación original y su resultado antes de actuar. |
| 409 | IDEMPOTENT_REPLAY | Revisa la operación original y su resultado antes de actuar. |
| 422 | IDEMPOTENCY_KEY_REUSED | Revisa la operación original y su resultado antes de actuar. |
| 402 | INSUFFICIENT_CREDITS | Recarga créditos antes de otra solicitud real. |
| 504 | UPSTREAM_TIMEOUT | Guarda 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. |
| 502 | UPSTREAM_UNAVAILABLE | Guarda 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. |
| 502 | UPSTREAM_BAD_RESPONSE | No 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. |
| 503 | NOT_CONFIGURED | El gateway real o un servicio requerido no está habilitado. Usa el sandbox o contacta con soporte. |
| 500 | INTERNAL_ERROR | Guarda 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.