Open Banking Gateway

Guia de integração

Comece com segurança. Conecte com intenção.

Dois ambientes, dois tipos de autenticação e uma regra clara de cobrança. Veja como tudo se encaixa.

Primeiros passos

Escolha a integração e confira a disponibilidade. Todas têm sandbox com dados simulados; endpoints reais existem apenas onde o catálogo indica. As rotas API não são traduzidas.

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

Sandbox gratuito

O console usa rotas relativas /api/sandbox de mesma origem. O serviço anônimo não exige Google, chave API, conta de carteira nem créditos. Não é um proxy de navegador entre origens: execute os exemplos neste site ou use um cliente HTTP no servidor.

Use apenas identidades e credenciais públicas de teste das páginas e do console. Transferências são simuladas, SMS não são enviados e os tokens não funcionam no 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"
}'

Autenticação real

Para chamadas reais entre servidores, entre no site, crie uma chave em Painel → Chaves API e envie-a em x-api-key. Nunca a exponha no JavaScript do navegador, em URLs ou repositórios públicos. Apenas integrações reais compatíveis podem ser chamadas.

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"
Gerenciar chaves API

Site e carteira: logins diferentes

O Google autentica sua conta Open Banking Gateway e dá acesso a créditos, chaves e cobrança. Não conecta você ao bKash ou a outra carteira. Complete o fluxo da carteira separadamente com uma conta autorizada.

Sessões reais do bKash se vinculam à sua conta do site após o login. Outro usuário não pode assumir esse vínculo. Guarde o token com segurança e autentique novamente quando a sessão expirar.

  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 sensíveis

Envie o token da carteira em X-OBG-Token. Envie PINs, senhas, OTP e otpHash no corpo JSON de POSTs com Content-Type: application/json. Há compatibilidade por consulta, mas URLs podem vazar segredos no histórico, capturas, referências ou logs: evite-a em novas integrações.

Créditos e cobrança

Cada chamada real bem-sucedida custa 1 crédito. Falhas, inclusive do provedor, são gratuitas; o sandbox nunca consome créditos. Pode haver retenção temporária de 1 crédito durante a chamada, cobrado ou liberado na conclusão.

O primeiro login Google concede 1.000 créditos uma única vez. Compre 10.000 por US$ 10, 50.000 por US$ 50 ou 100.000 por US$ 100. Não expiram. Comprar créditos não habilita APIs somente sandbox.

Preços

Respostas

As respostas usam {code, data}. O código do gateway, o status HTTP e o status interno do provedor descrevem camadas diferentes: HTTP 200 ou code 200 não comprovam sozinhos o sucesso da operação. Inspecione os campos do provedor. Uma falha interna do provedor não é cobrada, mesmo com code externo 200. Uma estrutura de resposta do provedor não reconhecida retorna HTTP 502 com UPSTREAM_BAD_RESPONSE e é gratuita. Não há garantia de um campo extra de resposta bruta.

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 a requisição. Quando a liquidação está confirmada, X-Credits-Charged é 1 para uma chamada real bem-sucedida cobrada e 0 para falhas ou sandbox. X-OBG-Settlement: unknown indica que o resultado da cobrança está indefinido: X-Credits-Charged: 0 não comprova que nenhum crédito foi debitado. Guarde o ID, não credenciais, para diagnóstico.

Transferências e tentativas

Endpoints que movem dinheiro exigem uma Idempotency-Key única por operação. Mantenha a mesma chave ao resolvê-la; não gere outra para repetir uma transferência incerta. O gateway não repete chamadas ao provedor automaticamente.

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

Erros e limites

O sandbox permite 60 requisições por minuto por IP. Há outros limites reais e de conta. Em 429, respeite Retry-After. Leituras têm 25 segundos; login, escrita e movimentação podem levar até 45 segundos.

Erros e limites
HTTPCódigo do gatewayO que fazer
404APP_NOT_FOUNDConfira campos obrigatórios, tipos e regras.
404ENDPOINT_NOT_FOUNDConfira campos obrigatórios, tipos e regras.
405METHOD_NOT_ALLOWEDConfira campos obrigatórios, tipos e regras.
503LIVE_GATEWAY_DISABLEDO gateway real ou um serviço necessário não está habilitado. Use o sandbox ou fale com o suporte.
403LIVE_ACCESS_NOT_ENABLEDNão há provedor real habilitado. Use o sandbox ou fale conosco. Nenhum crédito é cobrado.
401INVALID_API_KEYUse uma chave válida ou entre no console real do site. Erros de sessão da carteira são resultados separados do provedor.
401UNAUTHENTICATEDUse uma chave válida ou entre no console real do site. Erros de sessão da carteira são resultados separados do provedor.
403ORIGIN_REJECTEDUse uma chave válida ou entre no console real do site. Erros de sessão da carteira são resultados separados do provedor.
400INVALID_PARAMSConfira campos obrigatórios, tipos e regras.
400INVALID_IDEMPOTENCY_KEYConfira campos obrigatórios, tipos e regras.
413PAYLOAD_TOO_LARGEConfira campos obrigatórios, tipos e regras.
415UNSUPPORTED_MEDIA_TYPEConfira campos obrigatórios, tipos e regras.
429RATE_LIMITEDAguarde o prazo de Retry-After; evite loops de tentativas.
403ACCOUNT_LINKED_TO_ANOTHER_USERFaça o login da carteira com a conta correta do site. Uma carteira não pode se vincular a dois usuários.
403ACCOUNT_NOT_LINKEDFaça o login da carteira com a conta correta do site. Uma carteira não pode se vincular a dois usuários.
409REQUEST_IN_PROGRESSInspecione a operação original e seu resultado antes de agir.
409IDEMPOTENT_REPLAYInspecione a operação original e seu resultado antes de agir.
422IDEMPOTENCY_KEY_REUSEDInspecione a operação original e seu resultado antes de agir.
402INSUFFICIENT_CREDITSRecarregue antes de outra chamada real.
504UPSTREAM_TIMEOUTGuarde o ID da requisição e a Idempotency-Key original. Se a transferência ou liquidação da cobrança for incerta, confira o uso e concilie o resultado do provedor antes de tentar novamente; nunca repita a operação automaticamente.
502UPSTREAM_UNAVAILABLEGuarde o ID da requisição e a Idempotency-Key original. Se a transferência ou liquidação da cobrança for incerta, confira o uso e concilie o resultado do provedor antes de tentar novamente; nunca repita a operação automaticamente.
502UPSTREAM_BAD_RESPONSEA estrutura de resposta do provedor não foi reconhecida. O gateway retorna HTTP 502 e não cobra créditos. Em uma operação financeira, isso não comprova que não houve movimentação; concilie o resultado do provedor antes de qualquer nova tentativa.
503NOT_CONFIGUREDO gateway real ou um serviço necessário não está habilitado. Use o sandbox ou fale com o suporte.
500INTERNAL_ERRORGuarde o ID da requisição e a Idempotency-Key original. Se a transferência ou liquidação da cobrança for incerta, confira o uso e concilie o resultado do provedor antes de tentar novamente; nunca repita a operação automaticamente.

Referência de integrações