Saltar al contenido principal

B2B2C - Claves de licencia

Un convenio B2B2C permite a una organización generar claves de licencias, las cuales pueden ser redimidas por usuarios de Leah para obtener acceso a los distintos exámenes.

Las licencias B2B2C son otorgadas mediante una clave de licencia. La organización define los productos a los que otorgará acceso y le entregará las claves a los usuarios que desee. Estas licencias son acumulables. Es decir, un usuario puede redimir tantas licencias como quiera, siempre y cuando sean emitidas por la misma organización.

La creación de las claves se hace a través de la API de convenios.

API de convenios

Para utilizar la API de convenios, necesita una clave secreta y un identificador conocido como partnerId. Estos datos son proporcionados por el agente de Leah que gestiona su convenio.

Una vez tenga las credenciales (Pruebas o Producción), puede proceder a utilizar la API. La documentación de la API de convenios se encuentra en swagger:

tip

En la documentación swagger se encuentran definidos todos los campos obligatorios y los comportamientos esperados de acuerdo a los datos que se proporcionen. Es recomendable leer detenidamente la información de cada campo en cada "endpoint".

Crear claves de licencia

Al momento de crear las claves de licencias, hay varias maneras de conceder acceso a los usuarios para que puedan utilizar los productos de Leah. La manera en que un usuario puede redimir su licencia e iniciar sesión en Leah, depende de cómo es creada la clave de licencia. Es posible conceder acceso al usuario mediante correo electrónico, requerir el inicio de sesión mediante un IdP o redireccionar al usuario a Leah después de adquirir la licencia en alguna plataforma perteneciente a la organización (por ejemplo, desde un eCommerce).

Los posibles casos de creación de una licencia se encuentran descritos a continuación. Escoja cuidadosamente cuál es el caso que mejor se ajusta a sus usuarios.

Claves de licencia e inicio con IdP

Esta opción permite crear claves de licencias y asegurar que el usuario inicie sesión a través de un IdP propio de la organización, utilizando SAML.

Requisitos previos:

  1. Integración para inicio de sesión a través de un IdP con SAML.
  2. Acceso a la API de convenios.
  3. Asegurar que los correos electrónicos de los usuarios que se invitarán a Leah son válidos.

Una vez se cumplen los requisitos, pueden crearse licencias para ser redimidas únicamente por usuarios provenientes del IdP SAML de la organización. La API retorna la URL de acceso para redireccionar al usuario final.

Opcionalmente, los usuarios finales pueden ser invitados a través de correo electrónico para iniciar sesión en Leah (solicite esta característica al agente de Leah que gestiona su convenio).

Por ejemplo, así puede crearse una licencia que será usada por un usuario del IdP:

create-license-saml.js
const http = require("http");

const options = {
"method": "POST",
"hostname": "api.leahapp.com", // O staging.leahapp.com para pruebas
"path": "/partners/<PARTNER_ID>/licenses", // Reemplace <PARTNER_ID> con el partnerId entregado por Leah
"headers": {
"accept": "application/json",
"Authorization": "Bearer <SECRET>", // Reemplace <SECRET> con el secret entregado por Leah
"Content-Type": "application/json",
"Content-Length": "225"
}
};

const req = http.request(options, function (res) {
const chunks = [];

res.on("data", function (chunk) {
chunks.push(chunk);
});

res.on("end", function () {
const body = Buffer.concat(chunks);
const jsonBody = JSON.parse(body.toString());

console.log("Clave de licencia", jsonBody.key);
console.log("URL de acceso a Leah", jsonBody.accessUrl);
});
});

req.write(JSON.stringify({
externalId: 'random-external-id',
products: [{id: 'diagnostic_test', quantity: 2}, {id: 'speaking_test', quantity: 2}],
email: 'johndoe@example.com', // Requerido
lng: 'es'
}));
req.end();
warning

La dirección de correo electrónico es requerida, pero solo es utilizada para enviar la invitación opcional. En este caso, la licencia no está ligada a ese correo. La clave de licencia puede ser redimida por cualquier usuario que acceda mediante el IdP.

Claves de licencia e inicio de sesión con Leah

Esta opción permite crear claves de licencias para usuarios que tendrán que completar su registro en Leah, usando su dirección de correo electrónico y creando una contraseña.

Requisitos previos:

  1. Acceso a la API de convenios.
  2. Asegurar que los correos electrónicos de los usuarios que se invitarán a Leah son válidos.

Una vez se cumplen los requisitos, pueden crearse licencias para ser redimidas únicamente por usuarios de Leah que completen su registro. En su primer ingreso, se les solicitará que agreguen una contraseña para que puedan redimir la clave de licencia e ingresar a Leah en el futuro. La URL para redireccionar a los usuarios a que completen su registro y utilicen sus licencias, es retornada en la respuesta de la API.

Opcionalmente, los usuarios finales pueden ser invitados a través de correo electrónico con instrucciones para iniciar sesión en Leah (solicite esta característica al agente de Leah que gestiona su convenio).

Por ejemplo, así puede crearse una licencia que será usada por un usuario de Leah:

create-license-user-and-password.js
const http = require("http");

const options = {
"method": "POST",
"hostname": "api.leahapp.com", // O staging.leahapp.com para pruebas
"path": "/partners/<PARTNER_ID>/licenses", // Reemplace <PARTNER_ID> con el partnerId entregado por Leah
"headers": {
"accept": "application/json",
"Authorization": "Bearer <SECRET>", // Reemplace <SECRET> con el secret entregado por Leah
"Content-Type": "application/json",
"Content-Length": "225"
}
};

const req = http.request(options, function (res) {
const chunks = [];

res.on("data", function (chunk) {
chunks.push(chunk);
});

res.on("end", function () {
const body = Buffer.concat(chunks);
const jsonBody = JSON.parse(body.toString());

console.log("Clave de licencia", jsonBody.key);
console.log("URL de acceso a Leah", jsonBody.accessUrl);
});
});

req.write(JSON.stringify({
externalId: 'random-external-id',
products: [{id: 'diagnostic_test', quantity: 2}, {id: 'speaking_test', quantity: 2}],
user: {name: 'John', lastName: 'Doe', email: 'johndoe@example.com'} // Requerido
lng: 'es'
}));
req.end();
warning

La información del usuario es requerida para pre-registrar la cuenta de usuario. La clave de licencia solo puede ser redimida por el usuario especificado.

Claves de licencia sin restricciones de usuario

Esta opción permite crear claves de licencia que podrán ser redimidas por cualquier usuario en Leah. A diferencia de las opciones anteriores, este tipo de clave de licencia no tiene ninguna restricción de usuario o de inicio de sesión con IdP.

Requisitos previos:

Una vez se cumplen los requisitos, pueden crearse licencias para ser redimidas por cualquier usuario de Leah. La clave de licencia puede ser obtenida de la respuesta de la API para entregarse al usuario, o puede usar la URL de acceso que es retornada en la respuesta de la API para redireccionarlo.

Por ejemplo, así puede crearse una licencia sin restricciones:

create-license-no-restrictions.js
const http = require("http");

const options = {
"method": "POST",
"hostname": "api.leahapp.com", // O staging.leahapp.com para pruebas
"path": "/partners/<PARTNER_ID>/licenses", // Reemplace <PARTNER_ID> con el partnerId entregado por Leah
"headers": {
"accept": "application/json",
"Authorization": "Bearer <SECRET>", // Reemplace <SECRET> con el secret entregado por Leah
"Content-Type": "application/json",
"Content-Length": "225"
}
};

const req = http.request(options, function (res) {
const chunks = [];

res.on("data", function (chunk) {
chunks.push(chunk);
});

res.on("end", function () {
const body = Buffer.concat(chunks);
const jsonBody = JSON.parse(body.toString());

console.log("Clave de licencia", jsonBody.key);
console.log("URL de acceso a Leah", jsonBody.accessUrl);
});
});

req.write(JSON.stringify({
externalId: 'random-external-id',
products: [{id: 'diagnostic_test', quantity: 2}, {id: 'speaking_test', quantity: 2}],
lng: 'es'
}));
req.end();
warning

En este caso, la licencia no posee ninguna restricción. La clave de licencia puede ser redimida por cualquier usuario.

Redimir claves

La creación de la clave y cómo se le entrega al usuario final, depende de la organización y se hace únicamente a través de la API.

Por ejemplo, en un escenario donde una organización vende accesos a los exámenes de Leah en un eCommerce propio, el flujo sería así:

tip

Puede utilizar la integración SAML para que los usuarios del eCommerce ingresen a Leah Web sin tener que pasar por el registro.