Haz llamadas a una API con herramientas API REST

En esta guía, vamos a ayudarte a probar las APIs de BBVA utilizando la herramienta API REST Postman. Es la  continuación de nuestra guía de Primeros pasos, donde te explicamos cómo registrarte en BBVA API_Market y crear tu primera app. 

Existen dos formas distintas para que puedas probar el funcionamiento de las APIs que tienen sandbox disponible:

– Mediante la consola que encontrarás en la documentación técnica de las APIs que la tengan disponible.

– Utilizando herramientas de llamadas a una API. 

A continuación vamos a ver cómo realizar llamadas a una API que requiere autenticación de dos patas, a una  API que requiere autenticación de tres patas y te explicamos el concepto OTP – One-Time Password.

Para saber si la API que vas a usar requiere autenticación de dos patas o de tres, puedes consultar su documentación técnica.

Autenticación de dos patas

Para hacer una llamada a una API con autenticación de dos patas, primero hay que obtener un access_token y posteriormente se hace la llamada a la API con el access_token obtenido.

Recuerda que debes tener creada una aplicación en BBVA API_Market con una API que requiera autenticación de dos patas, como por ejemplo, Loans Auto.

Obtener access_token

Una vez dentro de Postman, debemos introducir los siguientes parámetros:

· URL: https://connect.bbva.com/token?grant_type=client_credentials
· Método: POST

Cabeceras:

· Authorization: Basic CREDENCIALES
· Content-Type: application/json

Para obtener el valor del campo CREDENCIALES debemos convertir a base64 (www.base64encode.org) la concatenación de: appID, “:” y Secret OAuth, es decir: appID:Secret_OAuth.

Para obtener appID y Secret OAuth, entra en el detalle de tu aplicación.

Ejemplo:

· appID = app.mx.pProd001
· Secret OAuth = R*$Xm@…j6f1x@3

Si convertimos a base64 la cadena app.mx.pProd001: R*$Xm@…j6f1x@3, el resultado es este: YXBwLm14LnBQcm9kMDAxOlJA4oCmajZmMXhAMw==

Con lo que los parámetros de cabecera son los siguientes:

· Authorization: Basic YXBwLmJid…mYxeEAz.
· Content-Type: application/json.

Esta llamada nos devuelve un json de como este:

{
"access_token": "eyJhbGciOiJSU0EtT0FFUCIsInppcCI6IkRFRiIsImVuYyI6IkExMjhHQ00ifQ.fjdmI--zqhzDOyAGCDLivxhgdBZ2UqpvYetUch4qZ7H8k4ipm9bNcsXarvNGMlcX7TSCtnNd9r9yDmGdWyqZC-5Ymox-HWGuuZgtzG8k0Z9Gw6b1S5SbnXgH2zDiUMTVR6afBE7xpX0pII6D0IOfhzoCZ4g1iBbJ6ypkKJFw1f8IOY6ds4U6J4Kcq23KemjI0R5NNxRxP6X7cTDy9eQWkgh97iKKdJaBAgxf7MXfSEKpBabw9Ag5jHNDRF7KCjkCgmZoqjnfxuaJj5y_MdwR2SuuWj572KPME-OymiLAdza_Ul-zLjt8mnWnWSxFoMiMzk2pAio25pkwje5em6B1BA.XsvVLUkjhZQNAFCU.pMiWtSb1FO1rtQowW8G5iZ6jEMe2op-GZ2IuLDOrvj4bzqwnoo6hJB9FMLrZqEn9PCKlFUeZsspbNtrsUZqetO8F05Aw8vtQV_zEzf4ZACBLZ1kqQ5H2SG3YrKtYtobJDjvS2_08UWpflKjjAJhfUSkYndPBpc1fCeDsQoxSyVUc28ExMQXqh6QNuWaADmuvNgdyLvTGys5jUPw44mlegmDihIn3Hbx1ZgRk7zbzsB6qkY18jm44_cE2OgvPx3dcmk7UQkj-spSuxcYna3h80zSnZkjqdeQJ0NiKxA.zfgdS3NuvAHa9TUivYuAbA",
"token_type": "jwt",
"expires_in": 3599,
"scope": "Accounts_SBX Customers_SBX Loans_SBX Locations_SBX"
}

El access_token que nos devuelve el servicio lo usaremos en la llamada a la API.

Llamada a una API con el access_token obtenido

Por ejemplo, llamamos al servicio merchant de la API Auto Loan:

· URL: https://apis.bbvabancomer.com/loans-auto-sbx/v1/
· Método: GET

Cabeceras:

· Authorization: jwt access_token (el access_token obtenido en la llamada anterior)
· Content-Type: application/json

Ejemplo:

· Authorization: jwt eyJhbG……..UivYuAbA
· Accept: application/json

Esta llamada nos devuelve un json de como este:

{"result": {"code": 200,"info": "OK"},"data": {"merchant": {"id": "10444","name": "GENERICA","addresses": [{"streetName": "OLMO 117 ","interiorNumber": "1","exteriorNumber": "117","state": {"id": "DF","name": "CIUDAD DE MEXICO"},"zipCode": "04030","neighborhood": "BARRIO SAN LUCAS","municipality": "COYOACAN","country": "MX"}],"manager": {"firstName": "virtual72","middleName": "F&I","lastName": "F&I"},"brands": [{"id": "78","name": "GENERICA"}]}}}

Autenticación de tres patas

Para llamar a una API con autenticación de tres patas, primero necesitamos el código que se usa para obtener un access_token y, posteriormente, se hace la llamada a la API con el access_token obtenido. Este código es válido para un usuario específico y por un tiempo limitado.

Recuerda que debes tener creada una aplicación en BBVA API_Market con una API que requiera autenticación de tres patas disponible, como por ejemplo, Customers.

Obtener código necesario para pedir access_token.
BBVA Connect

Es necesario que a la hora de llamar a estas APIs previamente se invoque al Sandbox connect indicando el campo redirect_url. Es decir la dirección a la que vuelve el cliente después de la autenticación. Recuerda que necesitas tener configurada esa misma dirección en tu aplicación.

Puedes comprobarlo en las opciones avanzadas de configuración de tu aplicación.

Como ejemplo de redirect_url te sugerimos que uses la siguiente URL: https://static.bbvaapimarket.com/resources/retail/callback/index.html

En primer lugar llamamos desde el navegador a la siguiente URL: https://connect.bbva.com/sandboxconnect?client_id=APP_ID&response_type=code&redirect_uri=REDIRECT_URL

Donde APP_ID es el id de la app configurada (por ejemplo, app.bbva.Prod001) y REDIRECT_URL es el redirect_url configurado en las opciones avanzadas de tu aplicación.

El navegador cargará la pantalla de BBVA Connect donde mostrará usuario y contraseña de cualquiera de los usuarios del Sandbox. En la documentación de las APIs hay varios usuarios/contraseñas de prueba, por ejemplo:

· Usuario: 00000034B
· Contraseña: 123456

Tras introducir un usuario y contraseña correctos aparecerá la pantalla de aceptación de Scopes en la que se autoriza a la aplicación para los servicios requeridos.

La aceptación finaliza cargando una página en la que se muestra el código que puedes copiar directamente.

Ten en cuenta que este código expira a los 30 segundos, por lo que este es el tiempo disponible para obtener el access_token que se describe en el siguiente punto.

Obtener access_token con el código obtenido

Para obtener el access_token, debemos acceder a Postman y configurar la llamada siguiendo los mismos pasos que se describen en la sección Obtener access_token de esta guía.

Lo único que debemos cambiar es la URL:
https://connect.bbva.com/token?grant_type=authorization_code&redirect_uri=REDIRECT_URL&code=CODIGO_OBTENIDO

Donde REDIRECT_URL es la que tenemos configurada en la aplicación y CODIGO_OBTENIDO es el código que hemos obtenido en el punto anterior.

Con el access_token obtenido en el punto anterior, configuramos una llamada en Postman con los siguientes parámetros:

· URL: https://apis.bbva.com/customers-sbx/v1/me-basic
· Método: GET

Cabeceras:

· Authorization: jwt ACCESS_TOKEN
· Accept: application/json

{ "access_token": "eyJhbGciOiJSU0EtT0FFUCIsInppcCI6IkRFRiIsImVuYyI6IkExMjhHQ00ifQ.TI2wrGU73CKqLpQv-reFkDBx_rhBlvJ_Mqe4D5TDqGetVvX-sXdL0ghj3USaEkgc880pWONDxI68inv89sMF6OOErs5Fj-xNwwyO5MR1l0nXG10Apsp7PXX34YFZU-QiqDZL9dbn6R0QJH7RSNY79LQhKFKJvBbacayiP-jYjug3hwyAj5jaAKMzx-yDCgIEVKTgbC9IiOrcnLFL3AWG6W_pzBdlfxtctKN6mJyJtuk5p30kbCJf6PBHbCdC7VFE67A8p-knw4w0x62Q6hgpX1AfTsAczhDU6oOGNr6xpnOiOVfQ3qHgv-RT9pkqswvhfoEJf_6Y6Oqjje3C0k3L0Q.3WYfyQs3oCRNdiaY.fpqF4GdlUkZdCTH0hNjhaV6pmo2xtalCYYg7CfG9cSq-HkZ0Eu9fd7CkFTS8zL9fZ1BJep_uBXEXpQGwNn0uTmgMIFMyTH71rChNdfvqx6IwhU3hQ8umnuSu0ITOYVndJBBTdzZC3mxfColvLwA7jZWd49VYzFDyVuZtRM2AMIk0TanitUJrAcn6ceSpt8FCuBA1Mdc5J21u3zxs8HcY_GgjZi5MDO0vn39aRIuM10AVyYuUyDy3P_Vqt9toSyBScidn225hXXcBSNmArWYR50Wmt9CtNW43IZGD33UzcUYM1sZrm8GxYhUt1baby0qWsybhnK3BMzPmK5GJlXNdjiVAMHkQi7275n4hVP7Z5k4Csz1Kc4owvRZlTLdoPYPQ0_5WbWgw1mk3oWb2nPt6JPUU-vT7m6tyONKf44CfNz_87wDhjadU5eg0MU1TrrSjq9JOxaxP.TqE_WnfFxn-bo_JOcJNSOw", "token_type": "jwt", "refresh_token": "eyJhbGciOiJSU0EtT0FFUCIsInppcCI6IkRFRiIsImVuYyI6IkExMjhHQ00ifQ.O3R95eVCoWe04xDeAKJj1EhBzTQoGeKGQRmlw4uJisKQDBjcPrIOEggMZYiqtORqFVLhwvsiZV2Mp229Rb1LwMVGt5DwEEtd94TISQ4toQfX30w8sPImgw_WarLAZ2_qh1Yie7JiDGSucIuV8yxixzYOOS8y_5chflD7URsSfyaMc4C2xvAH5wRP_n899btUbmd6gYwcx9bOTBk5vA5EQg8yTxBPaBbUrjkehbfN0P5v6RAkU8rRGYHAniKCKG2l3Dxt4q2lRvMJqLnHKorY0hB_aXP3S6ziwRpBqd2QqAlnBeHL5-8nMO1lN4r4lu-jY2ELhcGKvF-QkOBjc_TsJg.Mw6InT_Q126l61R3.mrPMmmKBLTLnkmx0BFl76ylzQ3rAf6nzRYdM3sBM-v_S-v2ZcC0yL0_fmM-u1GrQWp_5W0UA4EBSxo0mUMyM26OCqSfG96o5o31fVDErn7DdYMfPnFyXjLB8gBVcLoqxjDj0iJz0wnYe-PvmTLFKZGqGXn7G5wAK5D5ZoUrx9I5o1_LkGNTnL4ZUtrG76x1JfFPosER-Bku7Uoy84l_SjlB1KSOk93DPFBBSAv7cpLte06CiZ41KvgmM_nk950dLV7hsuFhy9w7AA7PKtfYfrGXjWnY1eHj7Eo0Uhb9ZUpcOnnZpZyRmBtmeIlcigCkC9CInnFSilOTO39cIhl-VGT4Jlymtf1yLCYVyDF6KXUCRoZMFeT_M_8K03GD6wJ0uj23kLK01yLxTuz9tm05p4wo8wjFtvs5y_J-ixdTaPC5ir-W-ZfGJ--RoY5zfKqSGzgG1mtYERK3DvVzM0wRYXqz1FhzpvnqBtp81rLaAmNDiVAGJq6t5jan3kPSftwuLfQFmwAGU-fttxmA1ALzPXyFFO1hmjdOayKVHSz2IUtVDoPN9YLJjf8j4LAUhI5ZSJEM.qNWCMNovgd0l_E1DmV3Jfw", "expires_in": 3599, "scope": "card-notifications-sbx_full paymentsTransfersList_sbx accounts_detail_full_sbx_1 paystats_sbx_test paymentsTransfer_execution_sbx_1 cardsV2_detail_full_sbx_1 loanpreapprovedsimulation_sbx card_transactions_sbx atms_sbx cards_detail_basic_sbx_2 data_manager_sbx loanpreapproved_sbx event-generator-sbx_full notifications-sbx_full paymentsTransferOrders_execution_sbx_1 paymentsTransfersMobileCash_sbx account_transactions_sbx customers_full_sbx_1", "refresh_expires_in": 43199 }

OTP – One-Time Password

OTP (puedes leer más sobre este término y otros conceptos técnicos en nuestro glosario) son las siglas en inglés para referirse a una contraseña de un solo uso o One-Time Password. Esta contraseña se genera para validar una acción y solo será válida para esa acción. En esta sección resumimos de forma clara y con un ejemplo los pasos a seguir para poder realizar una transferencia a través de una API que requiere una OTP.

Obtener código necesario para pedir access_token.
BBVA Connect

Debemos seguir los pasos indicados en esta guía en las secciones: “Obtener código necesario para pedir access_token BBVA Connect” y “Obtener access_token con el código obtenido“. En la primera sección obtendremos un código, en la segunda sección se usa ese código para obtener el access_token.

Primera llamada a la API

Hacemos una primera llamada a la API de Customers (dentro de Customers usamos como ejemplo Me Full). En esta llamada usamos el access_token obtenido en el punto anterior como parámetro de las cabeceras.

Configuramos la llamada en Postman:

· URL: https://apis.bbva.com/customers-sbx/v1/me-full
· Método: GET

Cabeceras:

· Authorization: jwt access_token
· Accept: application/json
· Content-Type: application/json

Esta llamada devuelve un json con una respuesta de tipo 428, con la información “Second factor required”, un ticket que usamos en el siguiente apartado y un nuevo token al que llamamos token_2.

Validar token_2

Debemos validar el token que hemos obtenido en el paso anterior. Este token es la clave de OTP, se usa para validar la transacción que hemos definido en la llamada anterior.

Para validar el token_2 accedemos al navegador e introducimos la siguiente URL: https://connect.bbva.com/otp?ticket=TICKET&back_url=OTP_URL

Dentro de esta URL sustituimos los siguientes campos:

· TICKET: introducimos el código de ticket que tenemos en el Postman anterior.
· OTP_URL: debemos usar la OTP URL que está configurada en la aplicación que hemos creado en la guía Primeros pasos.

La respuesta del navegador a esta URL es una pantalla en la que se explica lo que se pretende hacer con la API, en este caso, obtener la información completa de un cliente del banco. El usuario recibiría un SMS con un código de verificación que debería introducir en el campo habilitado para ello. Como estamos en un entorno de pruebas, no se manda ningún SMS y cualquier valor de 4 números que introducimos en el campo es aceptado.

Una vez enviado el código, la respuesta del navegador la veremos en la URL. Veremos la OTP URL con el ticket que hemos introducido y el resultado de la Query: http:s3-eu-west-1.amazonaws.com/openp-clientapi-prod-eu-west-1/public/callback/index.html?ticket=TICKET&result=OK

Segunda llamada a la API

Después de haber validado el token_2, lo usamos para hacer la segunda llamada a la API. En este caso, repetimos la misma operación descrita en el apartado Primera llamada a la API, pero usando el token_2 en vez del access_token.

· URL: https://apis.bbva.com/customers-sbx/v1/me-full
· Método: GET

Cabeceras:

· Authorization: jwt token_2
· Accept: application/json
· Content-Type: application/json

Cuando la llamada se realiza de forma correcta, el resultado es un json con código 200 en el que se indica que la obtención de datos se ha realizado correctamente.

{"result": {"code": 200,"info": "OK"},"data": {"firstName": "Carmen","surname": "Rodriguez","secondSurname": "Rodriguez","sex": "FEMALE","birthdate": "1970-08-19","email": "caop@mailinator.com","userId": "930ffbcb6be59758990076c356ecb88694ffcacaa7047383e6c0ea565b600a12","addresses": [{"id": "00001","zipcode": "28001"}],"identityDocument": [{"type": "NATIONALID","number": "000000034B"}]}}

Haz llamadas a una API con herramientas API REST

En esta guía, vamos a ayudarte a probar las APIs de BBVA utilizando la herramienta API REST Postman. Es la  continuación de nuestra guía de Primeros pasos, donde te explicamos cómo registrarte en BBVA API_Market y crear tu primera app. 

Existen dos formas distintas para que puedas probar el funcionamiento de las APIs que tienen sandbox disponible:

– Mediante la consola que encontrarás en la documentación técnica de las APIs que la tengan disponible.

– Utilizando herramientas de llamadas a una API. 

A continuación vamos a ver cómo realizar llamadas a una API que requiere autenticación de dos patas, a una  API que requiere autenticación de tres patas y te explicamos el concepto OTP – One-Time Password.

Para saber si la API que vas a usar requiere autenticación de dos patas o de tres, puedes consultar su documentación técnica.

Autenticación de dos patas

Para hacer una llamada a una API con autenticación de dos patas, primero hay que obtener un access_token y posteriormente se hace la llamada a la API con el access_token obtenido.

Recuerda que debes tener creada una aplicación en BBVA API_Market con una API que requiera autenticación de dos patas, como por ejemplo, Loans Auto.

Obtener access_token

Una vez dentro de Postman, debemos introducir los siguientes parámetros:

· URL: https://connect.bbva.com/token?grant_type=client_credentials
· Método: POST

Cabeceras:

· Authorization: Basic CREDENCIALES
· Content-Type: application/json

Para obtener el valor del campo CREDENCIALES debemos convertir a base64 (www.base64encode.org) la concatenación de: appID, “:” y Secret OAuth, es decir: appID:Secret_OAuth.

Para obtener appID y Secret OAuth, entra en el detalle de tu aplicación.

Ejemplo:

· appID = app.mx.pProd001
· Secret OAuth = R*$Xm@…j6f1x@3

Si convertimos a base64 la cadena app.mx.pProd001: R*$Xm@…j6f1x@3, el resultado es este: YXBwLm14LnBQcm9kMDAxOlJA4oCmajZmMXhAMw==

Con lo que los parámetros de cabecera son los siguientes:

· Authorization: Basic YXBwLmJid…mYxeEAz.
· Content-Type: application/json.

Esta llamada nos devuelve un json de como este:

{
"access_token": "eyJhbGciOiJSU0EtT0FFUCIsInppcCI6IkRFRiIsImVuYyI6IkExMjhHQ00ifQ.fjdmI--zqhzDOyAGCDLivxhgdBZ2UqpvYetUch4qZ7H8k4ipm9bNcsXarvNGMlcX7TSCtnNd9r9yDmGdWyqZC-5Ymox-HWGuuZgtzG8k0Z9Gw6b1S5SbnXgH2zDiUMTVR6afBE7xpX0pII6D0IOfhzoCZ4g1iBbJ6ypkKJFw1f8IOY6ds4U6J4Kcq23KemjI0R5NNxRxP6X7cTDy9eQWkgh97iKKdJaBAgxf7MXfSEKpBabw9Ag5jHNDRF7KCjkCgmZoqjnfxuaJj5y_MdwR2SuuWj572KPME-OymiLAdza_Ul-zLjt8mnWnWSxFoMiMzk2pAio25pkwje5em6B1BA.XsvVLUkjhZQNAFCU.pMiWtSb1FO1rtQowW8G5iZ6jEMe2op-GZ2IuLDOrvj4bzqwnoo6hJB9FMLrZqEn9PCKlFUeZsspbNtrsUZqetO8F05Aw8vtQV_zEzf4ZACBLZ1kqQ5H2SG3YrKtYtobJDjvS2_08UWpflKjjAJhfUSkYndPBpc1fCeDsQoxSyVUc28ExMQXqh6QNuWaADmuvNgdyLvTGys5jUPw44mlegmDihIn3Hbx1ZgRk7zbzsB6qkY18jm44_cE2OgvPx3dcmk7UQkj-spSuxcYna3h80zSnZkjqdeQJ0NiKxA.zfgdS3NuvAHa9TUivYuAbA",
"token_type": "jwt",
"expires_in": 3599,
"scope": "Accounts_SBX Customers_SBX Loans_SBX Locations_SBX"
}

El access_token que nos devuelve el servicio lo usaremos en la llamada a la API.

Llamada a una API con el access_token obtenido

Por ejemplo, llamamos al servicio merchant de la API Auto Loan:

· URL: https://apis.bbvabancomer.com/loans-auto-sbx/v1/
· Método: GET

Cabeceras:

· Authorization: jwt access_token (el access_token obtenido en la llamada anterior)
· Content-Type: application/json

Ejemplo:

· Authorization: jwt eyJhbG……..UivYuAbA
· Accept: application/json

Esta llamada nos devuelve un json de como este:

{"result": {"code": 200,"info": "OK"},"data": {"merchant": {"id": "10444","name": "GENERICA","addresses": [{"streetName": "OLMO 117 ","interiorNumber": "1","exteriorNumber": "117","state": {"id": "DF","name": "CIUDAD DE MEXICO"},"zipCode": "04030","neighborhood": "BARRIO SAN LUCAS","municipality": "COYOACAN","country": "MX"}],"manager": {"firstName": "virtual72","middleName": "F&I","lastName": "F&I"},"brands": [{"id": "78","name": "GENERICA"}]}}}

Autenticación de tres patas

Para llamar a una API con autenticación de tres patas, primero necesitamos el código que se usa para obtener un access_token y, posteriormente, se hace la llamada a la API con el access_token obtenido. Este código es válido para un usuario específico y por un tiempo limitado.

Recuerda que debes tener creada una aplicación en BBVA API_Market con una API que requiera autenticación de tres patas disponible, como por ejemplo, Customers.

Obtener código necesario para pedir access_token.
BBVA Connect

Es necesario que a la hora de llamar a estas APIs previamente se invoque al Sandbox connect indicando el campo redirect_url. Es decir la dirección a la que vuelve el cliente después de la autenticación. Recuerda que necesitas tener configurada esa misma dirección en tu aplicación.

Puedes comprobarlo en las opciones avanzadas de configuración de tu aplicación.

Como ejemplo de redirect_url te sugerimos que uses la siguiente URL: https://static.bbvaapimarket.com/resources/retail/callback/index.html

En primer lugar llamamos desde el navegador a la siguiente URL: https://connect.bbva.com/sandboxconnect?client_id=APP_ID&response_type=code&redirect_uri=REDIRECT_URL

Donde APP_ID es el id de la app configurada (por ejemplo, app.bbva.Prod001) y REDIRECT_URL es el redirect_url configurado en las opciones avanzadas de tu aplicación.

El navegador cargará la pantalla de BBVA Connect donde mostrará usuario y contraseña de cualquiera de los usuarios del Sandbox. En la documentación de las APIs hay varios usuarios/contraseñas de prueba, por ejemplo:

· Usuario: 00000034B
· Contraseña: 123456

Tras introducir un usuario y contraseña correctos aparecerá la pantalla de aceptación de Scopes en la que se autoriza a la aplicación para los servicios requeridos.

La aceptación finaliza cargando una página en la que se muestra el código que puedes copiar directamente.

Ten en cuenta que este código expira a los 30 segundos, por lo que este es el tiempo disponible para obtener el access_token que se describe en el siguiente punto.

Obtener access_token con el código obtenido

Para obtener el access_token, debemos acceder a Postman y configurar la llamada siguiendo los mismos pasos que se describen en la sección Obtener access_token de esta guía.

Lo único que debemos cambiar es la URL:
https://connect.bbva.com/token?grant_type=authorization_code&redirect_uri=REDIRECT_URL&code=CODIGO_OBTENIDO

Donde REDIRECT_URL es la que tenemos configurada en la aplicación y CODIGO_OBTENIDO es el código que hemos obtenido en el punto anterior.

Con el access_token obtenido en el punto anterior, configuramos una llamada en Postman con los siguientes parámetros:

· URL: https://apis.bbva.com/customers-sbx/v1/me-basic
· Método: GET

Cabeceras:

· Authorization: jwt ACCESS_TOKEN
· Accept: application/json

{ "access_token": "eyJhbGciOiJSU0EtT0FFUCIsInppcCI6IkRFRiIsImVuYyI6IkExMjhHQ00ifQ.TI2wrGU73CKqLpQv-reFkDBx_rhBlvJ_Mqe4D5TDqGetVvX-sXdL0ghj3USaEkgc880pWONDxI68inv89sMF6OOErs5Fj-xNwwyO5MR1l0nXG10Apsp7PXX34YFZU-QiqDZL9dbn6R0QJH7RSNY79LQhKFKJvBbacayiP-jYjug3hwyAj5jaAKMzx-yDCgIEVKTgbC9IiOrcnLFL3AWG6W_pzBdlfxtctKN6mJyJtuk5p30kbCJf6PBHbCdC7VFE67A8p-knw4w0x62Q6hgpX1AfTsAczhDU6oOGNr6xpnOiOVfQ3qHgv-RT9pkqswvhfoEJf_6Y6Oqjje3C0k3L0Q.3WYfyQs3oCRNdiaY.fpqF4GdlUkZdCTH0hNjhaV6pmo2xtalCYYg7CfG9cSq-HkZ0Eu9fd7CkFTS8zL9fZ1BJep_uBXEXpQGwNn0uTmgMIFMyTH71rChNdfvqx6IwhU3hQ8umnuSu0ITOYVndJBBTdzZC3mxfColvLwA7jZWd49VYzFDyVuZtRM2AMIk0TanitUJrAcn6ceSpt8FCuBA1Mdc5J21u3zxs8HcY_GgjZi5MDO0vn39aRIuM10AVyYuUyDy3P_Vqt9toSyBScidn225hXXcBSNmArWYR50Wmt9CtNW43IZGD33UzcUYM1sZrm8GxYhUt1baby0qWsybhnK3BMzPmK5GJlXNdjiVAMHkQi7275n4hVP7Z5k4Csz1Kc4owvRZlTLdoPYPQ0_5WbWgw1mk3oWb2nPt6JPUU-vT7m6tyONKf44CfNz_87wDhjadU5eg0MU1TrrSjq9JOxaxP.TqE_WnfFxn-bo_JOcJNSOw", "token_type": "jwt", "refresh_token": "eyJhbGciOiJSU0EtT0FFUCIsInppcCI6IkRFRiIsImVuYyI6IkExMjhHQ00ifQ.O3R95eVCoWe04xDeAKJj1EhBzTQoGeKGQRmlw4uJisKQDBjcPrIOEggMZYiqtORqFVLhwvsiZV2Mp229Rb1LwMVGt5DwEEtd94TISQ4toQfX30w8sPImgw_WarLAZ2_qh1Yie7JiDGSucIuV8yxixzYOOS8y_5chflD7URsSfyaMc4C2xvAH5wRP_n899btUbmd6gYwcx9bOTBk5vA5EQg8yTxBPaBbUrjkehbfN0P5v6RAkU8rRGYHAniKCKG2l3Dxt4q2lRvMJqLnHKorY0hB_aXP3S6ziwRpBqd2QqAlnBeHL5-8nMO1lN4r4lu-jY2ELhcGKvF-QkOBjc_TsJg.Mw6InT_Q126l61R3.mrPMmmKBLTLnkmx0BFl76ylzQ3rAf6nzRYdM3sBM-v_S-v2ZcC0yL0_fmM-u1GrQWp_5W0UA4EBSxo0mUMyM26OCqSfG96o5o31fVDErn7DdYMfPnFyXjLB8gBVcLoqxjDj0iJz0wnYe-PvmTLFKZGqGXn7G5wAK5D5ZoUrx9I5o1_LkGNTnL4ZUtrG76x1JfFPosER-Bku7Uoy84l_SjlB1KSOk93DPFBBSAv7cpLte06CiZ41KvgmM_nk950dLV7hsuFhy9w7AA7PKtfYfrGXjWnY1eHj7Eo0Uhb9ZUpcOnnZpZyRmBtmeIlcigCkC9CInnFSilOTO39cIhl-VGT4Jlymtf1yLCYVyDF6KXUCRoZMFeT_M_8K03GD6wJ0uj23kLK01yLxTuz9tm05p4wo8wjFtvs5y_J-ixdTaPC5ir-W-ZfGJ--RoY5zfKqSGzgG1mtYERK3DvVzM0wRYXqz1FhzpvnqBtp81rLaAmNDiVAGJq6t5jan3kPSftwuLfQFmwAGU-fttxmA1ALzPXyFFO1hmjdOayKVHSz2IUtVDoPN9YLJjf8j4LAUhI5ZSJEM.qNWCMNovgd0l_E1DmV3Jfw", "expires_in": 3599, "scope": "card-notifications-sbx_full paymentsTransfersList_sbx accounts_detail_full_sbx_1 paystats_sbx_test paymentsTransfer_execution_sbx_1 cardsV2_detail_full_sbx_1 loanpreapprovedsimulation_sbx card_transactions_sbx atms_sbx cards_detail_basic_sbx_2 data_manager_sbx loanpreapproved_sbx event-generator-sbx_full notifications-sbx_full paymentsTransferOrders_execution_sbx_1 paymentsTransfersMobileCash_sbx account_transactions_sbx customers_full_sbx_1", "refresh_expires_in": 43199 }

OTP – One-Time Password

OTP (puedes leer más sobre este término y otros conceptos técnicos en nuestro glosario) son las siglas en inglés para referirse a una contraseña de un solo uso o One-Time Password. Esta contraseña se genera para validar una acción y solo será válida para esa acción. En esta sección resumimos de forma clara y con un ejemplo los pasos a seguir para poder realizar una transferencia a través de una API que requiere una OTP.

Obtener código necesario para pedir access_token.
BBVA Connect

Debemos seguir los pasos indicados en esta guía en las secciones: “Obtener código necesario para pedir access_token BBVA Connect” y “Obtener access_token con el código obtenido“. En la primera sección obtendremos un código, en la segunda sección se usa ese código para obtener el access_token.

Primera llamada a la API

Hacemos una primera llamada a la API de Customers (dentro de Customers usamos como ejemplo Me Full). En esta llamada usamos el access_token obtenido en el punto anterior como parámetro de las cabeceras.

Configuramos la llamada en Postman:

· URL: https://apis.bbva.com/customers-sbx/v1/me-full
· Método: GET

Cabeceras:

· Authorization: jwt access_token
· Accept: application/json
· Content-Type: application/json

Esta llamada devuelve un json con una respuesta de tipo 428, con la información “Second factor required”, un ticket que usamos en el siguiente apartado y un nuevo token al que llamamos token_2.

Validar token_2

Debemos validar el token que hemos obtenido en el paso anterior. Este token es la clave de OTP, se usa para validar la transacción que hemos definido en la llamada anterior.

Para validar el token_2 accedemos al navegador e introducimos la siguiente URL: https://connect.bbva.com/otp?ticket=TICKET&back_url=OTP_URL

Dentro de esta URL sustituimos los siguientes campos:

· TICKET: introducimos el código de ticket que tenemos en el Postman anterior.
· OTP_URL: debemos usar la OTP URL que está configurada en la aplicación que hemos creado en la guía Primeros pasos.

La respuesta del navegador a esta URL es una pantalla en la que se explica lo que se pretende hacer con la API, en este caso, obtener la información completa de un cliente del banco. El usuario recibiría un SMS con un código de verificación que debería introducir en el campo habilitado para ello. Como estamos en un entorno de pruebas, no se manda ningún SMS y cualquier valor de 4 números que introducimos en el campo es aceptado.

Una vez enviado el código, la respuesta del navegador la veremos en la URL. Veremos la OTP URL con el ticket que hemos introducido y el resultado de la Query: http:s3-eu-west-1.amazonaws.com/openp-clientapi-prod-eu-west-1/public/callback/index.html?ticket=TICKET&result=OK

Segunda llamada a la API

Después de haber validado el token_2, lo usamos para hacer la segunda llamada a la API. En este caso, repetimos la misma operación descrita en el apartado Primera llamada a la API, pero usando el token_2 en vez del access_token.

· URL: https://apis.bbva.com/customers-sbx/v1/me-full
· Método: GET

Cabeceras:

· Authorization: jwt token_2
· Accept: application/json
· Content-Type: application/json

Cuando la llamada se realiza de forma correcta, el resultado es un json con código 200 en el que se indica que la obtención de datos se ha realizado correctamente.

{"result": {"code": 200,"info": "OK"},"data": {"firstName": "Carmen","surname": "Rodriguez","secondSurname": "Rodriguez","sex": "FEMALE","birthdate": "1970-08-19","email": "caop@mailinator.com","userId": "930ffbcb6be59758990076c356ecb88694ffcacaa7047383e6c0ea565b600a12","addresses": [{"id": "00001","zipcode": "28001"}],"identityDocument": [{"type": "NATIONALID","number": "000000034B"}]}}