开发集成指南
安全起步,明确连接。
两种环境、两类认证、一条清晰的计费规则。以下说明它们如何配合。
开始使用
先选择集成并查看支持状态。每款应用都有基于模拟数据的沙箱;只有目录明确标注的接口才支持真实调用。API 路径不随语言变化。
- 沙箱基础 URL
- https://www.openbankinggateway.com/api/sandbox
- 真实服务基础 URL
- https://www.openbankinggateway.com/api/v1
免费沙箱
网站控制台通过同源相对路径 /api/sandbox 发起请求。匿名模拟服务不需要 Google 登录、API 密钥、钱包账户或积分。它不是面向其他网站的跨域浏览器代理;请在本站运行浏览器示例,或使用服务器端 HTTP 客户端。
仅使用产品页面和控制台中公开的测试身份与凭据。沙箱转账为模拟操作,不发送短信,沙箱令牌不能用于真实模式。
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"
}'真实 API 认证
服务器间真实请求需要先登录网站,在控制台的 API 密钥页面创建密钥,并通过 x-api-key 发送。不要把网关 API 密钥暴露在浏览器 JavaScript、URL 或公开代码仓库中。只有已支持的真实接口可以调用。
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"网站登录与钱包登录
Google 登录用于验证 Open Banking Gateway 账户,并访问积分、密钥及计费。它不会登录 bKash 或其他钱包。请使用你有权操作的账户,单独完成所选钱包的文档登录流程。
真实 bKash 钱包登录后,其会话会关联到你的网站账户。其他网站用户不能接管该钱包关联。请安全保存返回的钱包令牌,并在服务商会话过期后重新认证。
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>"
}'敏感字段
钱包会话令牌请通过 X-OBG-Token 发送。PIN、密码、验证码和 otpHash 请放在 POST 端点的 JSON 请求体中,并设置 Content-Type: application/json。虽然兼容查询字符串,但 URL 中的敏感值可能泄露到历史记录、截图、来源头或日志中,新集成请勿使用。
积分与计费
每次成功的真实调用消耗 1 积分。失败调用(包括服务商失败)免费,沙箱请求永不消耗积分。真实请求进行时可能暂时冻结 1 积分,结果结算后扣除或释放。
首次 Google 登录一次性赠送 1,000 欢迎积分。10 美元购买 10,000 积分,50 美元购买 50,000,100 美元购买 100,000。积分不过期。购买积分不会开通仅沙箱 API 的真实权限。
价格响应格式
网关响应采用 {code, data} 格式。网关 code、HTTP 状态和嵌套服务商状态描述不同层级:仅有 HTTP 200 或网关 code 200 不能证明钱包操作成功。请检查该端点的服务商结果字段。即使外层 code 为 200,嵌套的服务商失败也不扣费。无法识别的服务商响应结构会返回 HTTP 502 和 UPSTREAM_BAD_RESPONSE,且不扣费。不保证额外的原始响应字段。
{
"code": 400,
"data": {
"error": "One or more parameters are missing or invalid.",
"errorCode": "INVALID_PARAMS",
"requestId": "<request-id>"
}
}X-Request-Id 标识网关请求。结算已确认时,成功且扣费的真实调用中 X-Credits-Charged 为 1,失败或沙箱调用为 0。X-OBG-Settlement: unknown 表示计费结果尚未确定:X-Credits-Charged: 0 不能证明没有扣款。排查问题请保留请求 ID,而非凭据。
转账与重试
真实资金操作端点要求每笔预期操作使用唯一的 Idempotency-Key。处理同一操作的结果时请保留相同密钥,不要仅为重试结果不明的转账而新建密钥。网关不会自动重试上游调用。
Idempotency-Key: <original-operation-id>
X-Request-Id: <gateway-request-id>
X-Credits-Charged: 0
X-OBG-Settlement: unknown错误与限制
免费沙箱每个 IP 每分钟最多 60 次请求,真实接口与账户还有其他限制。遇到 429 请遵循 Retry-After。读取超时为 25 秒,登录、写入和资金操作最长可达 45 秒。
| HTTP | 网关错误码 | 处理方式 |
|---|---|---|
| 404 | APP_NOT_FOUND | 检查必填字段、类型和文档中的校验规则。 |
| 404 | ENDPOINT_NOT_FOUND | 检查必填字段、类型和文档中的校验规则。 |
| 405 | METHOD_NOT_ALLOWED | 检查必填字段、类型和文档中的校验规则。 |
| 503 | LIVE_GATEWAY_DISABLED | 当前部署未启用真实网关或必要服务。请尝试沙箱或联系支持。 |
| 403 | LIVE_ACCESS_NOT_ENABLED | 该 API 未开通真实上游。请使用沙箱或联系团队,不会扣除积分。 |
| 401 | INVALID_API_KEY | 提供有效 API 密钥,或登录后使用同源真实控制台。钱包会话错误属于独立的服务商结果。 |
| 401 | UNAUTHENTICATED | 提供有效 API 密钥,或登录后使用同源真实控制台。钱包会话错误属于独立的服务商结果。 |
| 403 | ORIGIN_REJECTED | 提供有效 API 密钥,或登录后使用同源真实控制台。钱包会话错误属于独立的服务商结果。 |
| 400 | INVALID_PARAMS | 检查必填字段、类型和文档中的校验规则。 |
| 400 | INVALID_IDEMPOTENCY_KEY | 检查必填字段、类型和文档中的校验规则。 |
| 413 | PAYLOAD_TOO_LARGE | 检查必填字段、类型和文档中的校验规则。 |
| 415 | UNSUPPORTED_MEDIA_TYPE | 检查必填字段、类型和文档中的校验规则。 |
| 429 | RATE_LIMITED | 按 Retry-After 指定的时间等待,不要密集循环重试。 |
| 403 | ACCOUNT_LINKED_TO_ANOTHER_USER | 使用正确的网站账户完成钱包登录。一个钱包不能关联两个网站用户。 |
| 403 | ACCOUNT_NOT_LINKED | 使用正确的网站账户完成钱包登录。一个钱包不能关联两个网站用户。 |
| 409 | REQUEST_IN_PROGRESS | 请先检查原操作及其结果,再继续操作。 |
| 409 | IDEMPOTENT_REPLAY | 请先检查原操作及其结果,再继续操作。 |
| 422 | IDEMPOTENCY_KEY_REUSED | 请先检查原操作及其结果,再继续操作。 |
| 402 | INSUFFICIENT_CREDITS | 充值积分后再发起真实请求。 |
| 504 | UPSTREAM_TIMEOUT | 保留请求 ID 和原操作的 Idempotency-Key。转账或计费结算结果不明时,请查询用量并核对服务商结果,再考虑重试,绝不要自动重复操作。 |
| 502 | UPSTREAM_UNAVAILABLE | 保留请求 ID 和原操作的 Idempotency-Key。转账或计费结算结果不明时,请查询用量并核对服务商结果,再考虑重试,绝不要自动重复操作。 |
| 502 | UPSTREAM_BAD_RESPONSE | 无法识别服务商响应结构,网关返回 HTTP 502 且不扣积分。对于资金操作,这不能证明没有发生资金转移;请先核对服务商结果,再考虑任何重试。 |
| 503 | NOT_CONFIGURED | 当前部署未启用真实网关或必要服务。请尝试沙箱或联系支持。 |
| 500 | INTERNAL_ERROR | 保留请求 ID 和原操作的 Idempotency-Key。转账或计费结算结果不明时,请查询用量并核对服务商结果,再考虑重试,绝不要自动重复操作。 |
接口参考
每个产品页面提供准确的端点列表、参数规则和默认沙箱控制台。支持状态由共享目录确定,不因购买积分而改变。