Características E-Commerce V4

Características E-Commerce V4

En este documento se detallan los componentes y características de la version 4 de E-Commerce de Bitworks.

Generalidades de Arquitectura

Sistemas Back End

Al igual que la version 3 del e-commerce la version 4 está basada en microservicios, pero incluyendo las siguientes mejoras:

  • Mejor distribución de los servicios, servicios muchas más granulares y flexibles

  • Manejo de eventos michos más detallados (más de 100 eventos despachados mediante colas a los que sistemas externos se pueden suscribir)

  • Autenticación de servicios estandarizada basada en OAuth 2.0

  • Seguimiento más exacto del estándar RESTful

  • Más microservicios y más funcionalidades en cada microservicio

Procesos en Segundo Plano

Los procesos en segundo plano están implementados utilizando “Azure Functions”, lo que permite que estos escalen de manera automática horizontalmente (replicándose muchas veces), para cubrir escenarios de alta de manda. Los procesos en segundo plano generalmente se ejecutan en baser a eventos de los APIs, y en algunos casos de manera programada.

Front End

El front end d ela interfaz administrativa esta desarrollado utilizando Blazor Webassembly, tecnología relativamente nueva que permite ejecutar código en el explorador del cliente.

La tecnología del front end del sitio web pude estar desarrollada en Web Assembly o en ASP.NET MVC.

La tecnología del front end de los aplicativos móviles puede estar desarrollada en React Native, Flutter o SDK Nativos de cada plataforma.

Microservicios

En esta sección se detallan los microservicios que conforman el e-commerce.

El 100% de los microservicios exponen sus funcionalidades por medio de un API REST documentada con el estándar Open API. lo que facilita crear sistemas en cualquier lenguaje que se basen en dichos microservicios. Es decir, una empresa que use el e-commerce de Bitworks puede crear en el futuro otros sistemas basados en dichos microservicios sin necesidad que Bitwork intervenga.

Escalamientos

Todos los microservicios soportan escalamiento horizontal automatico, es decir que los microservicios se pueden replicar de manera automática en momentos de alta demanda.

Listado de Microservicios

En la siguiente tabla se listan todos los microservicios que conforman el E-Commerce v4 de Bitworks. Se listan algunas funcionalidades de cada microservicio y se proporcione el enlace a su API y documentación.

#

Microservicio

Descripción

Ver API

#

Microservicio

Descripción

Ver API

1

API Servidor de Autenticación

Expone funcionalidades para administrar todo el servidor de autenticación OAutn / Open Id. Permite hacer cosas como:

  1. Crear / Editar usuarios

  2. Crear / Editar Sitemas Clientes

  3. Crear / Editar Recursos de API

  4. Crear / Editar Roles

  5. Crear / Editar Recursos de identidad,m etc.

API Autenticación

2

API de Autorización

Recibe de manera automática todas las acciones que se pueden ejecutar en todos los microservicios y permite definir a que acciones de cada microservicio tiene acceso cada rol del sistema.

API Autorizador

3

API de Multimedia

Se encarga de almacenar y extraer las imágenes y cualquier otro contenido multimedia, incluyendo textos largos.

También es responsable de generar para cada imagen varias versiones de tamaño de acuerdo con los tamaños utilizados en el diseño gráfico del sitio.

API Multimedia

4

API de sucursales

Permite:

  1. Administrar la lista de sucursales

  2. Establecer la latitud y longitud dec ada sucursal

  3. Especificar la zona de cada sucursal

  4. definir que sucursal está más cerca de un punto de entrega ya sea en línea recta o en distancia real basándose en el API de Google Maps.

  5. Permite extraer las sucursales ordenándolas por la cercanía a un punto

  6. Posibilidad de cargar ficha informativa de cada sucursal

  7. Soporta la carga masiva de varias sucursales

API Sucursales

5

API de marcas

Permite:

  1. administra la lista de marcas

  2. Hacer cargas masivas d elas marcas

  3. Publicar fotos de las marcas basándose en el microservicio de multimedia

  4. Posibilidad de cargar ficha informativa de cada marca

API Marcas

6

API Categorías

Permite administrar una lista jerárquica de categorías de N niveles, generalmente utilizada para categorizar los productos. Sus funcionalidades incluyen:

  1. Administra la lista de categorías de cualquier nivel

  2. Definir el ordenamiento de las categorías dentro de cada nivel

  3. Cargar imágenes a las categorías

  4. Definir el grupo de productos relacionado con la categoría

  5. Cargar de manera masiva varias categorías en paralelo

  6. Definir una ficha informativa para cada categoría

API Categorias

7

API de Cupones

Este API permite:

  1. Definir grupos de cupones

  2. Definir las veces que se puede utilizar cada cupón

  3. definir fechas de validez para los cupones y/o su grupo

  4. Controlar que un cupón no se utilice más de las veces establecidas

  5. Relacionar los grupos de cupones a promociones (por medio del API de promociones descrita posteriormente)

  6. carga de códigos de cupones

  7. Generación de cupones con la posibilidad de establecer la longitud alfanumérica de cada cupón

  8. Consultar si un cupón aún se puede usar

  9. Registra el uso de los cupones, etc.

API de Cupones

8

API de Clientes

Permite:

  1. Administra la lista de clientes

  2. Las direcciones de entrega de un cliente, con la posibilidad de incluir para cada una:

    1. Latitud y longitud

    2. Posibilidad de calcular la sucursal más cercana, ya sea con Google Maps o en línea recta

    3. definri la zona de cada dirección

  3. Los métodos de pago incluyendo la tokenización de los mismos con BAC, Banco Agricola, Davivienda y Cuscatlán

  4. Permite agregar más identificadores a un cliente, es decir puede ser que el cliente se pueda reconocer pr su e-mail, celular, id de Facebook, etc.

  5. Posibilidad de cargar ficha informativa de cada cliente

  6. Definir ficha informativa de cada metodo de pago

  7. Relacionar “wallet5s digitales” a un cliente (no se incluye el sistema de la wallet)

  8. Permite indicar que un cliente comparte la carretilla con otro (de esta manera entre los dos pueden armar una sola carretilla)

  9. Interacción con el api de autenticación para crear usuarios de acceso a los clientes, etc.

API de Clientes

9

API de Búsqueda

Este API sirve de punto de entrada para interactuar con el motor de búsqueda basado en Azure Search AI. Esta API se encarga:

  1. De generar el índice de búsqueda

  2. Actualizar el índice de búsqueda cuando se modifican productos, marcas, precios, inventarios y cualquier otro dato contenido en el índice de búsqueda

  3. Exponer de manera más amigable las funcionalidades del buscador:

    1. Sugerencias

    2. Búsqueda

    3. Auto completado

Para más información de las características del buscador referirse a: https://azure.microsoft.com/en-us/products/ai-services/ai-search#features .

API Busqueda

10

APi Favoritos

  1. Permite:

  2. Crear a los usuarios lista de deseos o productos favoritos

  3. Consultar dichas listas

  4. Verificar cuales productos de una lista están entre los favoritos de un cliente

API Favoritos

11

API de Catálogos Genéricos

En ocasiones se necesitan tener listas de valores, ej.: tipos de cuentos, tipos de clientes, etc. Este API permite generar dichos catálogos y administrar su contenido

API Catalogos Genericos

12

API de Ordenes

Este es API es bastante central el sistema y depende para funcionar de buena parte de los otros API. Su principal objetivo es manejar las ordenes o carretillas de compra del cliente, incluye estas funcionalidades:

  1. Crea una orden

  2. editar la orden

  3. Agregar y quitar productos de la orden

  4. Unir ordenes

  5. Llamar APIs externo para agregar productos adicionales de manera automática

  6. Llamar APIs externos para aplicar descuentos

  7. Invocar APis externos para calcular precios de envío

  8. Hacer consultas de ordenes de varias formas

  9. Permite a un agente colocar pedido en nombre de un cliente

  10. Manejar los estados y tracking de una orden

  11. Definir a que ordenes tiene acceso un usuario

  12. Agregar cupones a la orden

  13. definri la sucursal relacionada a la orden

  14. Validar la orden:

    1. Si algún producto ya no está en inventario

    2. Si algún producto ya cambio de precio

    3. Si algún cupón ya no está disponible

    4. Si algún descuento ya no está disponible

    5. Si la cantidad agregada de un producto aun es válida (ej. no llevo más de lo permitidos por alguna política)

    6. Si la fecha de entrega es valida

  15. Calcular el tota a pagar

  16. Calcular el total a pagar por grupos de detalles

  17. Definir la fecha de pago valida ne caso se desee restringir la cantidad de pedidos que puede colocar un mismo usuario

  18. Enviar motivación de compra al comercio vía correo electrónico

  19. Enviar motivación de compra al cliente vía correo electrónico

  20. Agergar datos adicionales a la orden

  21. Registrar los intentos de pago de una orden incluyendo la información no sensible del método de pago

  22. Definir parámetros de configuración de los comercios para definir como se comporta la carretilla de compra, etc.

API de Ordenes

13

API de Grupos de Productos

Permite generar grupos de productos y consultar si una lista de productos pertenece a un grupo. Este API es de gran utilidad para definir:

  1. Que grupo de productos está contenido en una categoría

  2. Poder crear landing pages con un grupo de productos (Ej.: productos de Halloween)

  3. A que grupos de productos aplica una promoción o que grupo de productos debe tener una carretilla para que una promoción aplique

  4. Resaltar productos en secciones del sitio, etc.

API Grupos de Productos

14

API de Productos

Este API permite:

  1. Administra la información del producto (ficha de producto)

  2. Crea y actualizar de por lotes los productos

  3. Administrar las imágenes de productos apoyándose en el API de Multimedia

  4. Manejar códigos de barra de productos, etc.

API de Productos

15

API de cantidades permitidas

En ocasiones se desea colocar reglas en relación con cuantos productos pude comprar un cliente de un artículo, por ejemplo:

  • Es posible que si un artículo está con descuento no se pueda llevar mass de 10

  • O si son amortiguadores de carro se tenga que comprar pares

  • O si son libras de carne que la cantidad minima sea media libra y solo se pueda comprar en múltiplos de medias libras

Este microservicio es uno de los microservicios basados en esquemas, es decir que dentro de cada esquema se puede definir reglas diferentes. Por ejemplo, el esquema de clientes retail permite comprar como máximo 10 productos que estén con descuento, pero el esquema de clientes mayoristas permite compara hasta 50 productos con descuento.

API de Cantidades Permitidas

16

API de Disponibilidades

Este es el API que maneja la cantidad disponible para venta de cada producto. Generalmente se sincroniza del ERP del cliente para llevar el inventario al día.

Al igual que le API de “cantidades permitidas”, este API es basado en esquemas, es decir que se puede manejar varias cantidades disponibles para cada producto, por ejemplo:

  • La disponibilidad real del producto X es 100 unidades

  • Pero se desea que siempre haya disponibilidad para mayoristas, entonces para el esquema de clientes retail se configura solo 50 productos disponibles

  • Para el esquema de los clientes mayoristas se configuran las 100 unidades disponibles.

API de Disponibilidades

17

API Tarifarios

El API de tarifarios es el responsable de manejar los precios de cada producto, este API también es basado en esquemas, es decir que se puede definir un precio diferente para cliente mayoristas y un precio para cliente retail. O un precio diferente pro sucursal, etc.

API Tarifarios

18

API de promociones

El API de promociones es uno de los más complejos d todo el sistema, e imposible d eexplicar un texto breve, por lo que solo se dará una idea de sus funcionalidades.

Para configurar una promoción se definen:

  • Requerimientos que deben cumplirse apar que la promoción aplique con la posibilidad de combinarlos con operadores lógicos “AND” y “OR”, por ejemplo:

    • Para que la promoción aplique debe ser un miércoles después del mediodía y el cliente deber ser mayorista

    • Para que la promoción aplique debe colocarse un cupón de grupo “Segundo a mitad de precio”

    • Para que la promoción aplique debe colocarse una tarjeta de banco Davivienda y debe ser el primer dia del mes.

  • debe cumplirse que en la cerrtila se lleben ciertos productos, pro ejemplo

    • Tenes que llevar una coca cola de cuqlueir tipo y una boqita diana de cualquier tipo

    • Tenes que llevar 2 coca colas

    • O tenes que llevar cualquier producto menos una giftcard

  • Luego hay que definir regals de dscueno susi son en procentaje o en moton absoluto

  • Las reglas de descuento deben aplicarse a nivel global en todo el pedido o en los productos que se necesitan para que la promoción aplicara

Está lógica de configuración permite hacer promociones complejas como:

  • Descuentos en frutas y verduras los miércoles con tarjetas VISA

  • El segundo producto a mitad deprecio aplicado en el producto más barato de cada combinación

  • Cupones de 10% de descuento que solo apliquen en ciertos productos u día en específico, etc.

Esta lógica de creación de promociones abre las puertas a una combinación virtualmente ilimitada de promociones.

API de Promociones

19

API Selector de Esquema

Como se mencionó anteriormente algunos APIs son basados en esquemas:

  • El de tarifarios

  • El de disponibilidades

  • El de cantidades permitidas

Esta API es la responsable de decidir que esquema utilizar en cada una de estas APIs basándose en el contexto en que se encuentra el usuario. Con contexto del usuario se refiere a cualquier cosa del entorno del usuario:

  • La sucursal en qu eesta

  • Los datos del cliente

  • La cantidad de productos en la carretilla

  • El día u hora, etc.

Selector de Esquema

20

API de Zonas

Este API permite definir zonas geográficas de manera jerárquica, por ejemplo:

  • Departamento → Municipio

  • Departamento → Municipio → Colonia

  • Pais → Provincia, etc.

Las zonas se utilizan generalmente para relacionarlas a direcciones de entrega de clientes o direcciones de sucursales.

Algunas características de este API son:

  • Es posible establecer la latitud y longitud de una zona. De esta manera, si se desea saber la sucursal más cercan de una dirección y no se tiene la latitud y longitud de la dirección, se puede basar en la latitud y longitud de la zona

  • Es posible definir fichas informativas para las zonas.

API Zonas

21

API de formularios

Este API permite definir formularios para capturar datos. Estos formularios se pueden utilizar para capturar datos de:

  • Clientes

  • Ordenes

  • Sucursales

  • Zonas

  • Productos

  • Grupos de Productos

  • Categorias

El API tine estas características:

  • Definir le tipo de campo:

    • Caja de texto

    • Lista desplegable

    • Catura fecha

    • Numérico

  • Validaciones d ecampos:

    • Requerido

    • Expresión regular

API Formularios

22

API de Pagos

  • Manejo de varis flujos de pago:

    • Pago Directo

    • Pago con redirect

    • Pago con iFrame

  • Fácil integración de nuevos procesadores de pago

  • Registro de los intentos de pago

  • Enmascarando de data sensitiva

API de Pagos

23

API de Horarios

  • Manejo de horario de días normales

  • Manejo de horario de días especiales

  • Manejo de recesos

  • Determina horarios hábiles

  • Suma tiempo hábil

API de Horarios

Interfaz Administrativa

La solución de E-Commerce cuenta con un sistema administrativo para manipular toda la configuración relacionada coin el e-commerec por ejemplo:

  • Administrar datos de productos

  • Administra esquemas de tarifarios

  • Administrar grupos de productos

  • Administra categorías

  • Administrar sucursales

  • Colocar pedidos en nombre de un cliente, etc.

Obviamente este sistema solo es una interfaz web que sirve como Front End de todas las APIs mencionadas en la sección anterior.

Reportes

Cada microservicio cuenta con una base de datos independiente, por lo tanto, el sistema tiene más d 20 bases de datos. Por lo tanto, hay procesos corriendo constantemente que sincronizan la información de estas bases a un solo Data Warehouse consolidado. Este Data Warehouse está integrado con Power BI para que el comercio pueda genera todos los reportes que necesita o utilizar los reportes ya existentes.

Metodos de Pago

En cualquier momento es posible agregar más metodo de pago ya que Bitworks tiene control total sobre el desarrollo del e-commerce. Pero ya se tien integración con los siguientes meodos d epago:

  • Tarjetas de crédito con Serfinsa sin 3DS

  • Tarjetas de crédito con Serfinsa con 3DS

  • Tarjetas de crédito con Wompi con 3DS

  • Tarjetas de crédito con BAC con la pasarela FAC con 3DS

  • Pago con puntos de Banco Agricola

  • Pago con puntos de Davivienda

  • Pago con puntos de Cuscatlán

  • Pago con N1CO con 3DS

  • Pago con Bitcoin con WOMPI

Administrador de Contenidos

El sitio público del e-commerce se entrega totalmente administrable utilizando el administrador de contendidos Strapi (Strapi - Open source Node.js Headless CMS 🚀 ). El proyecto de implementación del e-commerce incluye definir los modelos de datos de Strapi que cumplan los requerimientos del diseño gráfico definido.