Introducción
Bienvenido a ¡Bantotal Developers! Aquí encontrarás toda la documentación necesaria para utilizar nuestra API y conectarte a Bantotal. De esta forma tu producto podrá ser utilizado por más de 50 bancos en 15 países.
Te brindamos recursos tales como: autenticación, clientes, cuentas, pagos, movimientos, entre otros.
Identifica los que necesitas y comienza ahora 😃
Autenticación
La autenticación es la llave 🔑 que te permitirá trabajar con nuestra API.
Todos los recursos de nuestra plataforma son privados. Esto quiere decir que por ejemplo, si deseas que tu aplicación acceda a los datos de un cliente, el cliente deberá darle permisos. Para autenticar utilizamos el conocido protocolo oAuth 2.0.
El protocolo se divide en dos grandes partes:
- Obtener un access_token para un cliente (mediante la aprobación del cliente).
- Accesso a los recursos mediante el access_token.
Antes de comenzar a detallar cada una de las partes, es importante mencionar que una vez que tu aplicación este registrada en B[Developers], tendra asignado un client_id y un client_secret.
client_id: 123456789
client_secret: shhhhhhhh
Obtener el access token
El access_token o token de cliente es el tipo de token más común. Se necesita cada vez que la aplicación solicita a la API, que lea o modifique datos del Banco en nombre del cliente. Los access_token se obtienen mediante un cuadro de diálogo de inicio de sesión y requieren que el cliente conceda permiso 👍 a la aplicación.
Aunque cada plataforma genera access_token mediante API’s distintas, todas siguen una estrategia básica para obtenerlo:
- La aplicación solicita al cliente que se autentique en el banco, y le de permisos de acceso a sus datos.
- El cliente se autentica y le otorga los permisos a la aplicación.
- La aplicación recibe el código de autorización.
- La aplicación intercambia el código de autorización por el access_token.
Paso 1
En este paso, la aplicación que desarrolles, deberá redireccionar al login del Banco para que los usuarios puedan autenticarse y posteriormente autorizar tu aplicación. Simplemente debes efectuar un redireccionamiento al URL:
Remplaza 123456789 por tu client_id, y https://www.youawesomeapp.com por la url de tu aplicación
https://developers.bantotal.com/auth/dialog/authorize?client_id=123456789&response_type=code&redirect_uri=https://www.youawesomeapp.com/
Parametros
Parametro | Descripción |
---|---|
client_id | Es el client_id de tu aplicación. |
response_type | code – Indica que la operación deseada es obtener un código de autenticación que le permitirá a tu aplicación interactuar con el Banco. |
redirect_uri | URL – Es el URL de tu aplicación. |
Una vez que redirecciones al cliente al URL, ya puedes dejar de preocuparte, nosotros nos encargamos de la autenticación 😉
Paso 2
Una vez que el cliente complete el proceso de autenticación en la página del Banco, será redireccionado a la página de autorización de tu aplicación. Allí se le presentarán todos los permisos solicitados junto a la descripción de tu aplicación.
De esto tampoco debes preocuparte 😊
Paso 3
Otorgados los permisos, el cliente será redireccionado al Redirect URI (el que nos pasaste en el URL anterior) con el código de autorización, de la siguiente forma:
https://www.youawesomeapp.com/?code=SERVER_GENERATED_AUTHORIZATION_CODE
Paso 4
Aquí un ejemplo:
curl -X POST
-H "Content-Type: application/x-www-form-urlencoded"
-H "Authorization: Basic YWJjMTIzOnNzaC1zZWNyZXQ="
-d 'client=blablabla&code=SERVER_GENERATED_AUTHORIZATION_CODE&redi
rect_uri=https://www.youawesomeapp.com/&grant_type=authorization_code'
"https://developers.bantotal.com/auth/oauth/token"
El POST te retornará la siguiente estructura JSON:
{
"access_token": "MOY62IRjcTaYpCfh4nAJmXnV",
"token_type": "Bearer"
}
Solo resta el último paso. Aquí deberas intercambiar el code
obtenido por el
access_token
.
Para ello deberás realizar el siguiente POST:
https://developers.bantotal.com/auth/oauth/token
Como verás en el ejemplo de la derecha, uno de los parametros pasados en el Header es Authorization. En este comando esperamos que nos pases tu client_id y tu client_secret en Base64. De esta manera: client_id:client_secret.
Aquí 👈 puedes ver como generar el string de HTTP Basic authentication.
Parametro | Descripción |
---|---|
client | Es el client_id de tu aplicación. |
code | El código de autorización obtenido en el paso anterior. |
redirect_uri | URL – Es el URL de tu aplicación. |
grant_type | authorization_code – Indica que la operación deseada es intercambiar el “code” por un access_token. |
¡Listo! Como verás en la respuesta obtendrás el access_token para realizar llamadas a nuestra API, y así obtener acceso a los datos privados del cliente 🚆
Acceso a los recursos
# El access_token obtenido en el paso anterior,
se pasa en Authorization: Bearer access_token
curl -X GET
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
"https://developers.bantotal.com/api/v1/clients"
import BD from 'bd-client-js'
const BantotalDevelopers = new BD()
BantotalDevelopers.getClient(acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El GET te retornará la siguiente estructura JSON:
{
"uid": "FGH546H34KLO98OP",
"firstName": "Camila",
"secondName": "Lucia",
"surname": "Perez",
"secondSurname": "Lopez",
"documentNumber": "123456789",
"documentType": "C.I.",
"documentCountry": "Uruguay",
"address": "18 de Julio 2523, Montevideo, Uruguay",
"email": "cboni@mail.com",
"phone": "123456789"
}
Ahora que ya tienes el access_token
, podrás acceder a los recursos.
Veamos un ejemplo.
Clientes
En esta sección, encontrarás todos los recursos asociados a los datos de los clientes. Por ejemplo, sus datos personales registrados en el banco.
Obtener datos
curl -X GET
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
"https://developers.bantotal.com/api/v1/clients"
BantotalDevelopers.getClient(acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El GET te retornará la siguiente estructura JSON:
{
"uid": "FGH546H34KLO98OP",
"firstName": "Camila",
"secondName": "Lucia",
"surname": "Perez",
"secondSurname": "Lopez",
"documentNumber": "123456789",
"documentType": "C.I.",
"documentCountry": "Uruguay",
"address": "18 de Julio 2523, Montevideo, Uruguay",
"email": "cboni@mail.com",
"phone": "123456789"
}
Este endpoint retorna los datos del cliente autenticado.
HTTP Request
GET https://developers.bantotal.com/api/v1/clients
Cuentas
En esta sección, encontrarás todos los recursos asociados a las cuentas de los clientes. Por ejemplo, consulta de sus cuentas, alta de cuentas, consulta movimientos, etc.
Obtener cuentas
curl -X GET
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
"https://developers.bantotal.com/api/v1/accounts"
BantotalDevelopers.getAccounts(acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El GET te retornará la siguiente estructura JSON:
[
{
"uid": "1",
"productType": "CC",
"currency": "USD",
"balance": "1200",
"description": "Cuenta corriente 1"
},
{
"uid": "2",
"productType": "CC",
"currency": "$",
"balance": "25800",
"description": "Cuenta corriente 2"
},
{
"uid": "3",
"productType": "CA",
"currency": "USD",
"balance": "100",
"description": "Caja de ahorro 1"
},
{
"uid": "4",
"productType": "CA",
"currency": "$",
"balance": "78500",
"description": "Caja de ahorro 2"
}
]
Este endpoint retorna las cuentas del cliente autenticado.
HTTP Request
GET https://developers.bantotal.com/api/v1/accounts
Obtener una cuenta
curl -X GET
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
"https://developers.bantotal.com/api/v1/accounts/<UID>"
BantotalDevelopers.getAccountsById(uid, acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El GET te retornará la siguiente estructura JSON:
{
"uid": "1",
"productType": "CC",
"currency": "USD",
"balance": "1200",
"description": "Cuenta corriente 1"
}
Este endpoint retorna la información de una única cuenta, la cual es filtrada mediante la URL.
HTTP Request
GET https://developers.bantotal.com/api/v1/accounts/<UID>
Parametro | Descripción |
---|---|
UID | Identificador de la cuenta. |
Obtener movimientos de una cuenta
curl -X GET
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
"https://developers.bantotal.com/api/v1/accounts/<UID>/movements"
BantotalDevelopers.getMovements(uid, acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El GET te retornará la siguiente estructura JSON:
[
{
"uid": "AA45GH5TM789DS34",
"transactionId": "ASD56F54G890KKL",
"signature": "a4e29a77cc84c393da1da7d06beb0ec0d12ae58314e26b137f913f4f85e25e2f",
"type": "Debit",
"date": "2016-11-18T17:59:11.858Z",
"valueDate": "2016-11-18T17:59:11.858Z",
"balance": "14060",
"currency": "USD",
"ammount": "500",
"reference": "Impuestos",
"reason": "Pago de sueldo",
"chanel": "Cajero automático"
}
]
Este endpoint retorna los movimientos de una única cuenta, la cual es filtrada mediante la URL.
HTTP Request
GET https://developers.bantotal.com/api/v1/accounts/<UID>/movements
Parametro | Descripción |
---|---|
UID | Identificador de la cuenta. |
Crear cuenta de ahorro
curl -X POST
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
-H "Content-Type: application/x-www-form-urlencoded"
-d 'currency=USD'
"https://developers.bantotal.com/api/v1/savingAccounts"
const account = {
currency: 'USD'
}
BantotalDevelopers.savingAccounts(account, acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El POST te retornará la siguiente estructura JSON:
{
"uid": "FGT567J7HAAA22EX"
}
Este endpoint da de alta una cuenta de ahorro al cliente.
HTTP Request
POST https://developers.bantotal.com/api/v1/savingAccounts
Parametro | Descripción |
---|---|
currency | Moneda de la cuenta (valores válidos USD - $ ). |
Transferencias
En esta sección, encontrarás todos los recursos asociados a las transferencias entre cuentas.
Entre cuentas
La transferencia entre cuentas consta de dos pasos:
Paso 1
Iniciar transferencia: Se solicita la transferencia y Bantotal se encarga de cálculo de comisiones, impuestos y cambio de moneda.
curl -X POST
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
-H "Content-Type: application/x-www-form-urlencoded"
-d 'uidDebit=1&uidCredit=2¤cy=USD&ammount=200&reference=Pago de almuerzo'
"https://developers.bantotal.com/api/v1/initTransferMyAccounts"
const transfer = {
uidDebit: 1,
uidCredit: 2,
currency: 'USD',
ammount: '1000',
reference: 'I love Bantotal Developers'
}
BantotalDevelopers.initTransferMyAccounts(transfer, acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El POST te retornará la siguiente estructura JSON:
{
"uid": "34FGH67J90KLLL0",
"signature": "34652e1d575bb6c5daf3884e70baf13839a62b4c1a218fd14f487c073bcb7d82",
"date": "2016-11-18T17:59:25.823Z",
"uidDebit": 1,
"debitBalance": "2500",
"uidCredit": 2,
"creditBalance": "500"
}
HTTP Request
POST https://developers.bantotal.com/api/v1/initTransferMyAccounts
Parametro | Descripción |
---|---|
uidDebit | Identificador de cuenta débito |
uidCredit | Identificador de cuenta cédito |
currency | Moneda de la transferencia (valores válidos USD - $ ) |
ammount | Importe de la transferencia |
reference | Texto de referencia |
Paso 2
Confirmar transferencia: Se confirma el pago 💰
curl -X POST
-H "Authorization: Bearer hUEM8g7EK4u8hxFYpIw1YPlkjjrY"
-H "Content-Type: application/x-www-form-urlencoded"
-d 'uid=34FGH67J90KLLL0'
"https://developers.bantotal.com/api/v1/confirmTransferMyAccounts"
const confirm = {
uid: 'FKD45ANV56'
}
BantotalDevelopers.confirmTransferMyAccounts(confirm, acceess_token)
.then(result) {
// Your code
}
.catch(err) console.log('Error')
El POST te retornará la siguiente estructura JSON:
{
"uid": "34FGH67J90KLLL0",
"signature": "34652e1d575bb6c5daf3884e70baf13839a62b4c1a218fd14f487c073bcb7d82",
"date": "2016-11-18T17:59:25.823Z",
"uidDebit": 1,
"debitBalance": "2500",
"uidCredit": 2,
"creditBalance": "500"
}
HTTP Request
POST https://developers.bantotal.com/api/v1/confirmTransferMyAccounts
Parametro | Descripción |
---|---|
uid | Identificador de la transferencia a confirmar |
SDK
A continuación se detallan los SDK’s disponibles.
JavaScript
Para obtener más información sobre este sdk, ingresa en bd-client-js
Ejemplos
A continuación algunos ejemplos de apps que utilizan la API de Bantotal Developers.
Mangos
Es una aplicación móvil que tiene cómo objetivo mostrar al usuario rápidamente cuanto dinero tiene en su Banco.
Esperamos que te sea de ayuda, no dudes en preguntarnos.
Errores
La API utiliza los siguientes códigos:
Error Code | Descripción |
---|---|
400 | Bad Request – Algúno de los parametros es incorrecto |
401 | Unauthorized – El access_token es inválido |
404 | Not Found – La URL que solicitaste no existe |
500 | Internal Server Error – Upps, tuvimos un error (también tenemos bugs). |
503 | Service Unavailable – Nuestro servidor esta temporalmente fuera de servicio. |
Próximos pasos
Actualmente estamos en la versión 1.0. Te informaremos cuales serán las features que tenemos en vista para la próxima versión (1.1).
Querémos que nos ayudes a mejorar.
¿Qué necesitas?
¿Hay algo que no te gusta? Esperamos tus comentarios.
El Team de B[Developers] ✌️