Flujo de solicitud activacion de tarjeta y de requerimiento de pin de producto
La figura 2 nos muestra el flujo de un proceso de activación de tarjeta o de requerimiento de codigo digital (PIN), recordemos que una tarjeta se encuentra exhibida en el comercio, sin servicio asociado, y que, por otro lado un codigo debe ser impreso dentro del ticket (PIN On Receipt). Para que proveer la tarjeta del servicio es necesario pasarla por la caja, pagarla y activarla. Los códigos necesitan de la exhibición de carteles donde se avise al cliente la existencia del producto, para ser solicitado en caja. Un “reverso” viaja de la misma manera, sin embargo, la acción es iniciada de manera automática, y no por demanda como lo es la activación. En el caso de un código, nunca será manual, y únicamente debe ser invocado en caso de un “timeout” ó sobrepaso del tiempo máximo de procesamiento. Una vez impreso, un código, no debe ser cancelado con un reverso.

Proceso general de solicitud de una operación.
La figura 2 nos muestra el flujo de un proceso de activación de tarjeta o de requerimiento de codigo digital (PIN), recordemos que una tarjeta se encuentra exhibida en el comercio, sin servicio asociado, y que, por otro lado un codigo debe ser impreso dentro del ticket (PIN On Receipt). Para que proveer la tarjeta del servicio es necesario pasarla por la caja, pagarla y activarla. Los códigos necesitan de la exhibición de carteles donde se avise al cliente la existencia del producto, para ser solicitado en caja. Un “reverso” viaja de la misma manera, sin embargo, la acción es iniciada de manera automática, y no por demanda como lo es la activación. En el caso de un código, nunca será manual, y únicamente debe ser invocado en caso de un “timeout” ó sobrepaso del tiempo máximo de procesamiento. Una vez impreso, un código, no debe ser cancelado con un reverso.

procesamiento y uso de clave y tokes de autentificació para el uso en sesión.
El proceso para intercambio de clave es sumamente sencillo y completamente estándar. No sayuda a no intercambiar información sensible por medios públicos.
Biaani proporcionará a sus socios comerciales una identificación de comercio afiliado y una clave asignadas, esta puede ser cambiada cada 3 meses para mantener su confidencialidad. El algorito es el siguiente:
Cadena de verificación = SHA256( IDMERCHANT + “|” + md5(CLAVE_OTORGADA))
Se concatena el ID de comercio otorgado con el carácter “|” (pipeline) y el “hash” resultante de pasar por MD5 la clave otorgada.
Como ejemplo, para un ID de comercio ”COM11MX” y una clave “12345abcde”:
1.- md5(clave) = d5170a3e24af791ba3d674760619fcd9
|
| Ejemplo de procesamiento de clave |
Para una solicitud de sesión:
{
|
| Ejemplo de uso de clave en mensaje |
| una respuesta exitosa enviaría, por ejemplo, el campo "auth": "9KDRP7P5756Y" es el que se utilizará para la siguiente operación. /td> |
Un dato adicional de seguridad es que. las solicitud de operaciones subsecuentes (todas excepto sessionrequest) es un encabezado “header” dentro del mensaje “Authorization: “ (estándar para usuario y claves) el resultado del siguiente algoritmo:
1.- Cadena de autorización = SHA256(CLAVE_OTORGADA + “|” + token_de_sesión_obtenida)
|
| Ejemplo de procesamiento de clave |
Descripción de métodos para procesamiento de operaciones
Método sessionrequest
Endpoint: http://api.biaani.com.mx:8888/v1/sessionrequest
Método de envío: POST
Descripción general: Método de seguridad y validación. Abre una sesión de usuario valido para un comercio, los subsecuentes métodos requieren del Id de Sesión que se obtiene. Ésta caduca, o se invalida, una vez realizado un proceso ó pasado un período de máximo de uso de cinco minuto.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador de la solicitud | Entero numérico |
| idmerchant | 30 | M | Identificador de comercio *1 | |
| merchpassword | 120 | M | Clave para comercio *1 | |
| *1 : Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de consumo sessionrequest |
Respuesta
Descripción general: Si la transacción es exitosa (responsecode=”00”) se envía el código de sesión dentro del “auth”, este se utilizará para la siguiente operación, debe ser pasada por una operación que se describe a continuación. Se tiene una vida de 5 minuto para su uso. Si la respuesta es fallida el campo se encontrará vacío (no nulo).
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador de la solicitud | Entero numérico |
| idmerchant | 30 | M | Identificador de comercio *1 | |
| responsecode | 2 | M | Código de respuesta *2 | |
| auth | 16 | M | Si es exitoso: Código de sesión | |
| message | 32 | M | Descripción del resultado | |
| *2: Listado completo en Apéndice A. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de consumo sessionrequest |
Método echorequest
Endpoint: http://api.biaani.com.mx:8888/v1/echorequest
Método de envío: POST
Descripción general: Método para realizar la verificación de disponibilidad del API y de sus métodos.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de consumo echorequest |
Respuesta
Descripción general: Si la transacción es exitosa, se obtendrá un responsecode=”00”, igualmente se envía una autorización dentro del campo “auth”. Por otro lado una transaccion rechazada tendrá una respuesta acorde al error encontrado dentro del procesador. Puede consultar la tabla de codigos de error en el Apéndice. Todos los campos recibidos son respondido con los mismo valores (“eco”) y se adicionan los resultados de la operación en los siguientes campos:.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| responsecode | 2 | M | Código de respuesta *2 | |
| auth | 16 | M | Si es exitoso: Código de sesión | |
| message | 32 | M | Descripción del resultado | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *2: Listado completo en Apéndice A. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de respuesta exitosa en echorequest |
Método activationrequest
Endpoint: http://api.biaani.com.mx:8888/v1/activationrequest
Método de envío: POST
Descripción general: Método para realizar la activación de una tarjeta de prepago física. Pasa de su estado inactivo (sin servicio) a activo (lista para ser canjeada). Utiliza el header “Authorization” con el valor que se describe en "Procesamiento de clave y auth para el uso en sesión".
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| accountnumber | 32 | M | Identificador de la tarjeta (actualmente 16 números) *3 | NNNNNNNNNNN |
| amount | 8 | M | Precio de tarjeta (por ejemplo: $100.00 = 10000) | MMMCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| idstore | 32 | M | Identificador de sucursal | |
| idterminal | 32 | M | Identificador de terminal o caja | |
| upc | 12 | M | Número identificador de un producto | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de consumo activationrequest |
Respuesta
Descripción general: Si la transacción es exitosa, se obtendrá un responsecode=”00”, igualmente se envía una autorización dentro del campo “auth”. Por otro lado una transaccion rechazada tendrá una respuesta acorde al error encontrado dentro del procesador. Puede consultar la tabla de codigos de error en el Apéndice. Todos los campos recibidos son respondido con los mismo valores (“eco”) y se adicionan los resultados de la operación en los siguientes campos:.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| accountnumber | 32 | M | Identificador de la tarjeta (actualmente 16 números) *3 | NNNNNNNNNNN |
| amount | 8 | M | Precio de tarjeta (por ejemplo: $100.00 = 10000) | MMMCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| idstrore | 32 | M | Identificador de sucursal | |
| idterminal | 32 | M | Identificador de terminal o caja | |
| upc | 12 | M | Número identificador de un producto | |
| responsecode | 2 | M | Código de respuesta *2 | |
| auth | 16 | M | Si es exitoso: Código de sesión | |
| message | 32 | M | Descripción del resultado | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *2: Listado completo en Apéndice A. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de respuesta exitosa en activationrequest |
Método deactivationrequest
Endpoint: http://api.biaani.com.mx:8888/v1/deactivationrequest
Método de envío: POST
Descripción general: Método para realizar la desactivación ó "reversos" a una activación para determinada tarjeta de prepago física. Pasa de su estado activo (lista para ser canjeada) a inactivo (sin servicio). Utiliza el header “Authorization” con el valor que se describe en "Procesamiento de clave y auth para el uso en sesión". Se utilizan todos los datos de la tarjeta "original" de la activación a crear el "reverso".
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| accountnumber | 32 | M | Identificador de la tarjeta a "desactivar" (actualmente 16 números) *3 | NNNNNNNNNNN |
| amount | 8 | M | Precio de tarjeta (por ejemplo: $100.00 = 10000) | MMMCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud ORIGINAL | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| idstore | 32 | M | Identificador de sucursal | |
| idterminal | 32 | M | Identificador de terminal o caja | |
| upc | 12 | M | Número identificador de un producto | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de consumo deactivationrequest |
Respuesta
Descripción general: Si la transacción es exitosa, se obtendrá un responsecode=”00”, igualmente se envía una autorización dentro del campo “auth”. Por otro lado una transaccion rechazada tendrá una respuesta acorde al error encontrado dentro del procesador. Puede consultar la tabla de codigos de error en el Apéndice. Todos los campos recibidos son respondido con los mismo valores (“eco”) y se adicionan los resultados de la operación en los siguientes campos:.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| accountnumber | 32 | M | Identificador de la tarjeta (actualmente 16 números) *3 | NNNNNNNNNNN |
| amount | 8 | M | Precio de tarjeta (por ejemplo: $100.00 = 10000) | MMMCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| idstore | 32 | M | Identificador de sucursal | |
| idterminal | 32 | M | Identificador de terminal o caja | |
| upc | 12 | M | Número identificador de un producto | |
| responsecode | 2 | M | Código de respuesta *2 | |
| auth | 16 | M | Si es exitoso: Código de sesión | |
| message | 32 | M | Descripción del resultado | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *2: Listado completo en Apéndice A. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de respuesta exitosa deactivationrequest |
Notas generales en procesos sobre PINes y productos Digitales.
Requerimiento de codigo digital (PIN).
Método pinrequest
Endpoint: http://api.biaani.com.mx:8888/v1/pinrequest
Método de envío: POST
Descripción general: Método para realizar la solicitud de un código digital redimible. al obtener el PIN, el cliente podrá directamente llegar al sitio ó aplicación del proveedor del servicio y redimirlo/canjearlo por el producto, saldo ó servicio que este ofrezca.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| accountnumber | 32 | M | Identificador de la tarjeta (actualmente 16 números) *3 | NNNNNNNNNNN |
| amount | 8 | M | Precio de tarjeta (por ejemplo: $100.00 = 10000) | MMMCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| idstore | 32 | M | Identificador de sucursal | |
| idterminal | 32 | M | Identificador de terminal o caja | |
| upc | 12 | M | Número identificador de un producto | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de consumo pinrequest |
Respuesta
Descripción general: Si la transacción es exitosa, se obtendrá un responsecode=”00”, igualmente se envía una autorización dentro del campo “auth”. Por otro lado una transaccion rechazada tendrá una respuesta acorde al error encontrado dentro del procesador. Puede consultar la tabla de codigos de error en el Apéndice. Todos los campos recibidos son respondido con los mismo valores (“eco”) y se adicionan los resultados de la operación en los siguientes campos:.
| Campo | Largo | Carácter | Descripción | Formato |
|---|---|---|---|---|
| idsession | 32 | M | Token obtenido en sessionrequest | CCCCCCCC |
| accountnumber | 32 | M | Identificador de la tarjeta (actualmente 16 números) *3 | NNNNNNNNNNN |
| amount | 8 | M | Precio de tarjeta (por ejemplo: $100.00 = 10000) | MMMCC |
| datetime | 12 | M | Fecha y hora de solicitud | YYMMDDHHMMSS |
| idtrx | 8 | M | Identificador único de la solicitud | Entero numérico |
| idmerchant | 32 | M | Identificador de comercio *1 | |
| idstrore | 32 | M | Identificador de sucursal | |
| idterminal | 32 | M | Identificador de terminal o caja | |
| upc | 12 | M | Número identificador de un producto | |
| responsecode | 2 | M | Código de respuesta *2 | |
| digital-code | 32 | M | PIN Redimible *2 | |
| auth | 16 | M | Si es exitoso: Código de sesión | |
| message | 32 | M | Descripción del resultado | |
| *1: Dato proporcionado por BIAANI, podría requerirse cambios inmediatos periódicos. El procesamiento para envío del pass se detalla en reactivo siguiente. | ||||
| *2: Listado completo en Apéndice A. | ||||
| *3: Detalle de la obtención de numero de cuenta y UPC en una tarjeta física en Apéndice. | ||||
| M: Dato cuyo requerimiento es mandatorio. | ||||
| O: Opcional, si no se envía este va en vacío (no NULL). | ||||
{
|
| Ejemplo de respuesta exitosa en pinrequest |