Autenticación

El primer paso para poder obtener información de una cuenta de Increase a través de nuestras APIs es solicitar un access token. Esto te identifica como propietario/autorizado para acceder a dicha información. Recordá que cada access token tiene una validez de 1 hs.

Antes de avanzar, es importante que identifiques qué tipo de integración estás haciendo: Si te estás integrando como negocio dueño de la información que estás queriendo obtener, o si sos un partner que está obteniendo información de terceros, por ejemplo, un ERP.

Soy dueño de la información#

En este caso deberás contactarte con nosotros y solicitarnos las credenciales de tu cuenta de Increase, es decir, tu client_id y client_secret.

Luego concatenar el client_id con el client_secret que te hayamos compartido, uniéndolos con ":". Por último, encodear el string concatenado a base64. El resultado es lo que envías en el header Authorization.

Ver API Request.

Soy un Tercero#

Pre-requisito: Solicitar tus credenciales a integraciones@increasecard.com, enviando la URI de redirección de tu servidor donde esperas recibir el código de autorización. Te responderemos con tu client id y client secret necesarios para la implementación.

Partner

En este repositorio de Github puedes encontrar un archivo completo de ejemplo en Node. Además, se encuentra implementado para que puedas probar todo el flujo de Oauth2.0.

Pasos a seguir#

  1. Generar un botón que redireccione al comercio a la página de inicio de sesión de Increase, inicializando así el flujo de autenticación y autorización. Deberás utilizar una librería de OAuth2.0, y\ reemplazar CLIENT_ID y CLIENT_SECRET con los que te daremos al solicitar la creación de la application.\ Ejemplo del repositorio(en Node):

    const simpleOAuthLibrary = require('simple-oauth2');
    const oauth2 = simpleOAuthLibrary.create({
    client: {
    id: CLIENT_ID,
    secret: CLIENT_SECRET
    },
    auth: {
    tokenHost: ‘https://oauth.increase.app’,
    tokenPath: '/oauth2/token',
    authorizePath: '/oauth2/auth'
    }
    });
    // Paso 3: Authorization uri definition
    const authorizationUri = oauth2.authorizationCode.authorizeURL({
    redirect_uri: REDIRECT_URI,
    scope: 'openid offline',
    state: '3(#0/!~]'
    });
    // Paso 1: Botón desde tu sitio para iniciar el flujo
    app.get('/', (_req, res) => {
    res.send('<a href="/auth">Conectar con Increase</a>');
    // Paso 2: Initial page redirecting to Increase
    app.get('/auth', (_req, res) => {
    console.log(authorizationUri);
    res.redirect(authorizationUri);
    });
  2. Dirigir al usuario a la url generada authorizationUri

  3. Al loguearse, se le solicita al usuario que autorice a tu application a acceder a su información.

diagrama

Para probar este paso, puedes utilizar el siguiente usuario demo:

Usuario: demo@increasecard.com Password: demoincrease

  1. Recibirás en tu redirect_uri el código (authorization_code) para intercambiar por el access_token
// Callback service parsing the authorization token and asking for the access token
app.get('/callback', async (req, res) => {
const authorization_code = req.query.code;
const options = {
code: authorization_code,
redirect_uri: REDIRECT_URI,
scope: 'openid offline'
};
try {
const result_tokens = await oauth2.authorizationCode.getToken(options);
console.log('The resulting token: ', result_tokens);
const access_token = oauth2.accessToken.create(result_tokens);
// Guardar el result_tokens en una base de datos, para poder volver a pedir el
// access_token en el futuro (cuando expire el token, información que está en
// el mismo objeto de result_tokens)
return res.status(200).json(access_token);
} catch (error) {
console.error('Access Token Error', error.message);
return res.status(500).json('Authentication failed');
}
});

Listo! Ya está en la variable result el access_token necesario para autenticarte en nombre del comercio.

{
"token": {
"access_token": "HpFsbaf-vPNg_Ih067b5qYeX589_3xc0msg7Zs57jgo.sMjh69HDlQrH03PufwKgh-R3h6BsMd4z4EtXhfWVCdw",
"expires_in": 3599,
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InB1YmxpYzo0ZjVjNTgwMy01YWFiLTQ3NTktYWQxYy0wN2E3YjIxMWE4NjgiLCJ0eXAiOiJKV1QifQ.eyJhdF9oYXNoIjoiSXR6X0s2RGdvQVpucGhYZjZ4cmgxQSIsImF1ZCI6WyI3YjA5ZTk5OC0wMDllLTRmZDYtYmExMy02YjEyOWNmNjIyNGIiXSwiYXV0aF90aW1lIjoxNTU2MDM0NTExLCJleHAiOjE1NTYwMzgxNjEsImlhdCI6MTU1NjAzNDU2MSwiaXNzIjoiaHR0cHM6Ly9vYXV0aC5pbmNyZWFzZS5hcHAvIiwianRpIjoiNDQ3MmRjMTEtZWZjMS00Mzk1LWIxODEtZWRlOTc4ZDU0NmNmIiwibm9uY2UiOiIiLCJyYXQiOjE1NTYwMzQ0OTAsInN1YiI6ImV1Z2VuaWFAaW5jcmVhc2VjYXJkLmNvbSJ9.XtNo6C-WeHgTtnSA19jj9zhjJ95XrgEsGmaMVk82pZxlauAkVRyrhFe3DIlg4bYnHTVeHjd_E_iIjG2QQ8YTatz680Wz7y9JFTxKK-TkTpu8HyfI_uiUDu7kgIzB9IKgBoRmfsKDxHNOkpIc4jzLI9fd-qwte04v7SiPGBgRxybp4twTDXQBZgu0fp2XIHYAx5o481wbxlpsGqnily-89l4TUohe6OiRaYQpXXudOHJTTu5fq6dHKP0xyyFcyC0SiwCti31zy0hKzFSbalPUUGSQYJIoksjRQJpd24bCp-Ceu-UTwU12suAVDGi0JeW2cbzDhG6UdRQldRg3QiiA7YZI635qJ34GnYJ11EjvTpml-oUpJiRhCGeB6_NOpbMFpSSTknat3MF7UzdFtzUPVH_J9fyDuWqR0K_dc3UpKqds2eTN46A0rjLi_wtIl9sjiHq7i_1uB2fib4cdiESNze_nNg1azrcnpHh_55Q2ezg37b4Eeb5hQbattS6-jSYR8STWYFMC6wI2ofHgcqsb7ZA1VhoDGcQQc_V7VQOG8Q4apNoF4-E2kBuzC20YEg9oFnaJFS_xETtxGcKgqWFeArGEsu6d6THv397RN3MAaDSf4Gr8zQDkvt4Qhh3U1Iut290UNS_LrniXzZjah0ycKSYKK-vrEqE3TdufTsAFLnM",
"refresh_token": "vD108vZcZbunvC7dPt1q4TeZuDBNrDFlD9q0I9DGNDI.hY5iyKHZKgo1YFEx9xJyIdqK2KbvyE03_fmzRJrKEdY",
"scope": "openid offline",
"token_type": "bearer",
"expires_at": "2019-04-23T16:49:20.226Z"
}
}
```\
5. Empezá a obtener información de la cuenta. Deberás enviar como Header "Authorization" el access_token obtenido de la siguiente forma:
```http
Authorization: "Basic" <access_token>