Skip to main content

Veritran Docs

Crea una transacción configurable

A continuación, se describe un ejemplo sobre cómo construir un inicio de sesión utilizando transacciones configurables. Ten en cuenta que, ya que las transacciones varían según la funcionalidad que deseas construir y los requisitos del cliente, es posible que encuentres diferentes enfoques sobre cómo crear una transacción similar.

Considera este escenario: Debes crear una transacción de inicio de sesión que descifre la información de inicio de sesión de un usuario (que está encriptada en el dispositivo por razones de seguridad), valide la información proporcionada por el usuario contra una base de datos, devuelva un estado, pero también guarde todos los estados que no sean exitosos en el registro de transacciones. Para esta transacción, es necesario consumir datos proporcionados por un tercero y validarlos con un servicio REST. También necesitas dos acciones Script: una para desencriptar la información del usuario y otra para guardar el estado de inicio de sesión en el registro de transacciones.

Requisitos previos

Para este ejemplo, se contempla el uso de un servicio REST proporcionado por un cliente o un tercero. Asegúrate de tener esta información disponible antes de crear la transacción.

Según el caso, es posible que se cree el servicio REST o que sea necesario crearlo desde cero. En este ejemplo, utilizarás un servicio REST ya creado en el entorno. Para aprender cómo crear un servicio REST, consulta la sección Crea un servicio REST para una validación de inicio de sesión.

Cómo crear un inicio de sesión mediante transacciones configurables
  1. Dirígete a Global Logic > Transactions.

  2. Haz clic + New transaction .

  3. En el modal que se abre, haz clic en Configurable.

  4. En la pestaña Settings que se abre por defecto, completa la información sobre la transacción que estás construyendo.

    1. En el campo Name, asigna un nombre a la transacción que represente su funcionalidad, con su código de transacción al principio para rastrearla. Para este ejemplo, establece 1058_Validate_Login.

    2. En el campo Description, agrega un texto breve que te ayude a identificar el propósito de la transacción. Para este ejemplo, establece Validates a user login.

      Importante

      Ten en cuenta que, en Middleware, la transacción aparecerá con su código de transacción y su descripción, así que asegúrate de ser lo más breve y preciso posible.

      trx_middleware.png
    3. En el campo Code, agrega un código de transacción único de 4 dígitos que identificará la transacción en el registro de transacciones. Para este ejemplo, introduce el código 1058.

      Importante

      Los códigos son únicos por producto, lo que significa que puedes tener dos transacciones con el mismo código pero configurado para productos diferentes.

    4. En el campo Product, selecciona el producto en el que estás trabajando. Para este ejemplo, selecciona P1.

      Importante

      Los productos se configuran en Middleware y varían según la estructura de negocio y las necesidades del cliente. Ponte en contacto con tu administrador para confirmar el producto en el que deberías estar trabajando.

    5. En el campo Timeout, introduce el tiempo en segundos que la plataforma esperará hasta recibir una respuesta de la transacción. El tiempo de espera por defecto es de 30 segundos. Para este ejemplo, deja el valor por defecto.

    6. En el campo Processing Message, agrega el mensaje que el usuario verá en pantalla mientras se procesa la transacción. Este mensaje aparece si no configuras un mensaje de procesamiento personalizado en la pantalla Loading Process de tu app. El mensaje por defecto es Processing....

    7. En el campo Tags, agrega etiquetas que te ayuden a identificar y agrupar las transacciones por su funcionalidad. Como no hay opción de autocompletado en este campo, utiliza etiquetas simples que puedas recordar fácilmente la próxima vez. Para este ejemplo, agrega la etiqueta Login.

  5. Establece los parámetros de salida en el nodo Start para comenzar el flujo de transacción. Necesitas recuperar el nombre de usuario y la contraseña de cada cliente de los registros donde se almacena esta información. Haz clic en el nodo y luego en Outputs > Add Output. Complete la información de la siguiente manera:

    Inputparam_1.png
    Inputparam_2.png
    1. En el campo Name, introduce el nombre del valor que deseas obtener. Para este ejemplo, introduce user.

    2. En el campo Type, establece el tipo de valor que deseas obtener. Para este ejemplo, establece el valor String.

    3. En el campo External variable, agrega el registro donde se almacena el valor. Para este ejemplo, establece el registro 3.

    4. Repite el mismo proceso para el valor de la contraseña, almacenado en el registro 4, como se muestra en la imagen de arriba.

    Nota

    Los registros 3 (nombre de usuario) y 4 (contraseña) son globales para cada proyecto y encriptan la información del usuario por razones de seguridad.

  6. Luego, debes desencriptar el usuario y la contraseña recibidos. Arrastra el nodo de acción Script desde la pestaña Actions del menú de la izquierda al canvas y sigue los pasos a continuación:

    1. En el editor de scripts, pega el siguiente script que desencriptará la información:

      let trxInfo = VtNet.Host.getTransactionInfo();
      let terminalId = trxInfo[0];
      let seqNumber = trxInfo[1];
      let decryptedclientId =  VtNet.Host.decryptSession(user)[0];
      let decryptedclientKey = VtNet.Host.decryptTransaction(password, terminalId, seqNumber)[0];
      if((decryptedclientId == respuesta.username) && (decryptedclientKey == respuesta.password))
    2. Dirígete al panel derecho y completa las pestañas Configuration, Input y Output.

      1. En la pestaña Configuration, modifica la etiqueta para que refleje la funcionalidad del script. Para este ejemplo, establece la etiqueta Decrypt.

      2. En la pestaña Inputs, debes recuperar la información de nombre de usuario y contraseña del nodo Start, por lo que debes consumir las salidas del nodo establecidas en el paso 3. Haz clic en Input Bulk Connection y selecciona el nodo Start como nodo fuente. Haz clic en las casillas de verificación de las entradas y luego en Import & connect.

        Inputs_bulk.gif
      3. En la pestaña Outputs, debes obtener el nombre de usuario y la contraseña desencriptados y transferirlos al siguiente nodo del flujo. Haz clic en Add Output y añade las salidas de tipo string decryptedclientId y decryptedclientKey para recibir el nombre de usuario y la contraseña, respectivamente.

        Nota

        Los nombres de estos parámetros coinciden con los parámetros que estás recibiendo en el script. Puedes modificar el nombre tanto en el script como en este paso.

      4. Por último, conecta los nodos Start y Script arrastrando el nodo Script cerca del Start. Se conectarán automáticamente. Además, puedes conectarlos arrastrándolos de un nodo a otro.

    3. Por último, conecta los nodos Start y Script arrastrando el nodo Script cerca del Start. Se conectarán automáticamente. Además, puedes conectarlos arrastrándolos de un nodo a otro.

      connections_trx.gif
  7. En el panel izquierdo, haz clic en la pestaña Services y busca el servicio REST que implementarás en esta transacción. Para este ejemplo, arrastra el servicio REST llamado Validate Login al canvas y conéctalo al nodo Script. En este paso, el servicio REST recibe la información del usuario desencriptada del nodo Script anterior y la valida. Luego, sigue los pasos a continuación:

    Nota

    Los pasos a continuación se basan en un servicio REST ya creado en el entorno. Si necesitas crear el servicio desde cero, dirígete a Create a REST Service for a Login Validation.

    1. Dirígete al panel derecho del servicio REST y completa las pestañas Configuration, Input y Output.

      1. En la pestaña Configuration, modifica la etiqueta para que refleje la funcionalidad del servicio. Para este ejemplo, establece la etiqueta Srv Validate Login. Debajo de la etiqueta, en el nodo, aparece el nombre del servicio.

      2. En la pestaña Inputs, importa las salidas del nodo Script para recibir el nombre de usuario y la contraseña desencriptados. Haz clic en las listas desplegables user y password (que son claves de consulta establecidas al crear el servicio REST) y selecciona los parámetros decryptedclientId y decryptedclientKey del nodo Script creado en el paso 4.

        REST_inputs.gif
      3. Las salidas para el servicio REST se recuperan automáticamente de la información del servicio, por lo que varían según el servicio creado. Las salidas son consumidas por el nodo End, lo que se explicará en el paso 7.

  8. Puedes utilizar otro nodo script para registrar errores en Middleware para rastrear las respuestas de las transacciones en el log de transacciones. Arrastra un nodo de acción script desde la pestaña Actions del menú de la izquierda al canvas y sigue los pasos a continuación:

    1. Pega el siguiente script, modificando el identificador de la transacción y el mensaje que se muestra en el log de transacciones:

      if (status != 200) {
          VtNet.Host.log("DEBUG","TRX [ID]",'Status: '+status);
          VtNet.Host.setToken("91", "H99");
          VtNet.Host.setToken("79", "There was an error with the service");
          VtNet.Host.setResponseCode(true, "H99");                
          return;                                             
      }
    2. Dirígete al panel derecho y completa las pestañas Configuration, Inputs y Outputs.

      1. En la pestaña Configuration, modifica la etiqueta para que refleje la funcionalidad del script. Para este ejemplo, establece la etiqueta Validate Status.

      2. En la pestaña Inputs, debes recuperar el estado del servicio REST. Haz clic en Inputs Bulk Connectiony selecciona el nodo REST como nodo fuente. Haz clic en la casilla de verificación status de la entrada y luego en Import & connect.

        Inputs_script2.gif
      3. Este nodo no requiere la configuración de salidas, ya que guarda el estado en el log de transacciones y no transfiere datos al nodo End.

      4. Conecta el nodo Script a los nodos REST y End para continuar el flujo de la transacción.

        connections_trx2.gif
  9. El nodo End necesita recibir información, como se explica en el paso 5. Deseas recibir el correo electrónico del usuario, su nombre completo, su identificador y una respuesta del servicio REST. Dirígete al panel derecho y completa lo siguiente:

    1. En la pestaña Inputs, haz clic en Inputs Bulk Connection y selecciona el nodo REST como nodo fuente.

    2. Marca las casillas de verificación mail, fullname, codrsp y iduser y luego haz clic en Import & connect.

    Importante

    Estos datos deben incluirse en el servicio REST provisto por el cliente o un tercero y se mostrarán automáticamente como salidas del servicio REST. Antes de realizar estas conexiones, asegúrate de que esta información esté incluida en la llamada al servicio.

  10. Así es como se ve tu transacción.

    Transaction_ready.png

    Haz clic en Save & continue para guardar la transacción, o haz clic en la flecha hacia abajo y en Save & close para guardar la transacción y volver a la página Transactions. Tu transacción aparece en la lista de transacciones con el estado Pending publication.

Luego de crear o editar una transacción:

  • Puedes verificar si hay algún error interno en su construcción revisando la pestaña Errors en el panel izquierdo.

  • Si no hay errores, debes publicar la transacción para que los cambios impacten en el Middleware y en tu app. Consulta el artículo Publica y ejecuta una transacción configurable.

  • Puedes ejecutar la transacción publicada para probar su funcionalidad. Consulta el artículo Publica y ejecuta una transacción configurable.

  • Debes invocar la transacción desde un proceso para integrarla en tu app. Consulta el artículo Invoca una transacción para obtener más información.

    Nota

    Si editas una transacción que ya está integrada en tu app, puedes omitir este paso.

Sigue las instrucciones a continuación para aprender cómo crear un servicio REST y usarlo en el paso 5 explicado en Crea un inicio de sesión con transacciones configurables. En este ejemplo, se crea un servicio REST con la información provista por GoldBank para validar la información de los usuarios.

  1. Dirígete al panel izquierdo. En la pestaña Services, haz clic en Add Service.

  2. En la pestaña General Information que se abre, completa la siguiente información.

    1. En el campo Name, agrega un nombre para identificar la funcionalidad del servicio REST. Para este ejemplo, introduce Validate Login.

      Nota

      El nombre del servicio aparecerá en el nodo cuando se arrastre al canvas.

    2. En el campo Description, agrega información que represente la funcionalidad y explica su propósito. Para este ejemplo, introduce REST service that validates users login information.

    3. En el campo Tag, agrega etiquetas a los servicios de grupo.

    4. Haz clic en Next.

  3. Se abre la pestaña Method. Completa la siguiente información.

    1. Dirígete a la sección Method HTTP. En el campo Type, selecciona una opción del menú desplegable. Para este ejemplo, selecciona GET.

    2. Agrega la URL provista por el cliente. Para este ejemplo, introduce ejemplo

    3. Dirígete a la sección Query Params de consulta para agregar los parámetros de consulta que enviarás al servicio. En el campo Key, introduce las claves user y password, que son parámetros string que se agregarán como entradas del servicio cuando se invoque en una transacción.

    4. Haz clic en Next.

    Rest_method.png
  4. Se abre la pestaña Method. Completa la siguiente información.

    1. En la sección Body que se abre, completa el cuerpo para dar formato a los datos recibidos y dividirlos en diferentes salidas. Para este ejemplo, estos son los resultados creados:

      {"username":"johndoe","password":"123456","mail":"johndoe@veritran.com","fullname":"John Doe","codrsp":"000","iduser":"gb5678"}
    2. Para este ejemplo, la sección Headers debe estar vacía.

    3. Para este ejemplo, el campo Authorization debe estar vacío.

    rest_body.png
  5. Haz clic en Summary para ver los detalles del servicio.

  6. Haz clic en Confirm si no necesitas modificar ningún campo.

Una vez creado, el servicio está disponible en la pestaña Services del panel izquierdo del editor de transacciones y en Global Logic > External Services.