Montessori Library Subscription System

Montessori Library Subscription System Descripción

El sitio de subscripciones para la Librería Montessori fue desarrollado para administrar el acceso al contenido de la librería mediante un servicio de subscripciones.

Fase de incepción

El cliente se acercó a nosotros con la necesidad de continuar la tarea de desarrollo del sistema ya iniciado y validar los elementos que ya estaban implementados. Como una primera aproximación, se revisarlos los documentos de requerimientos enviados por el cliente y se comparó contra el código provisto para detectar cuales elementos faltaba completar y cuantos de ellos estaban incompletos. Una vez generado el reporte de la revision, se le proveyó al cliente un plan para completar todos los elementos faltantes y así completar los requerimientos en su totalidad.

Fase de desarrollo

La plataforma web fue desarrollada utilizando el framework PHP de Laravel 5 e integrando con el API de Stripe para administrar todas las suscripciones, de manera tal que permite al administrador del sistema ofrecer los diferentes materiales mediante suscripciones a un precio especifico teniendo un control de los diferentes suscriptores a cada plan y gestionando como clientes dentro de Stripe, donde la información de pagos y tarjetas de crédito es guardada. También provee la información de cuales son los suscriptores actuales, su estado de pago y notificaciones de cambios en las subscripciones, además de otros reportes importantes en la interfaz de administración.

En la versión recibida del sistema, permitía generar nuevos usuarios subscriptores los cuales ingresan su información de pago mediante tarjeta de crédito, seleccionan los materiales a los cuales desean suscribirse, haciendo la integración con la API de Stripe para guardar esa información dentro de su cliente y realizar todo el proceso de suscripción mensual.

En subsecuentes versiones del sistema, agregamos la capcaidad de cancelar subscripciones, agregamos notificaciones para cada evento del sistema hacia el administrador, permitimos cambiar el precio de las subscripciones dejandole saber con anterioridad al subscriptor, agregamos muchos nuevos reportes en el area de administración e hicimos muchas mejoras en la interfaz de usuario haciendoló más accesible y fácil de usar para nuevos subscriptores. Además se actualizaron todos los elementos visuales y lógicos relacionados a los cupones de escruento para que sea más fácil de utilizar en las pantallas de suscripción.

Como los materiales de la librería no son administrados dentro del sitio de suscripción, y si lo son en un sitio implementado con la plataforma Moodle, una nueva integración fue agregada para permitir al sistema de suscripción agregar nuevos usuarios en la plataforma Moodle, permitir a estos usuarios ver el contenido según las diferentes suscripciones que agregan y denegar el acceso al contenido cuando la suscripción finaliza o es cancelada. Esta implementación permite manejar múltiples sitios con la plataforma Moodle, permitiendo tener mayor flexibilidad para manejar los contenidos de manera sectorizada por temas.

Como el sitio de suscripción solo maneja el flujo de suscripcion y la infromación de promoción para los nuevos suscriptores a los cursos ya se encontraba desarrollada en el un sitio Wordpress, una integración con Javascript fue creada para obtener la información de los cursos en la página de suscripción . Esto permite mostrar información sobre los creadores del material, contenidos y materiales incluidos dentro del curso para que el subscriptor pueda ver mientras selecciona los cursos que desea suscribirse.

Además se modificó la forma de trabajo de la suscripción dentro del sitio para permitir a un usuario visitante suscribirse y registrarse como usuario dentro del sistema en una sola pantalla de 4 pasos, haciendo el proceso de registro y activación opcional. Esto permite obtener más subscriptores al facilitar el proceso de registro y suscripción a una sola pantalla.

Muchas mejoras fueron realizadas sobre la integración con la API de Stripe, ya que no solo estamos enviando información a Stripe desde el sitio de subscripción, sino que recibimos notificaciones desde la API a través de sus Webhooks. En caso de que un cliente cancela la suscripción a un curso dandola de baja desde el banco, la API de Stripe le avisa al sistema mediante un webhook el cual reacciones dejandole saber al administrador y denegando el acceso al contenido del curso para ese suario. Además, el sistema va a usar los webhooks que envía Stripe para saber cuando hay problemas para cobrar mensualmente una suscripción, permitiendo enviarle una notificación al suscriptor para que el problema pueda ser solucionado.

Como la comunicación entre los sistemas es asincrónica, muchas de las tareas a realizar no se realizan durante la interacción del usuario con el sitio. Un sistema de tareas de fondo fue agregado permitiendo ejecutar las tareas asíncronas sin afectar el rendimiento de la interfaz para el usuario. Esto también permite reintentar la tarea si hay una falla de comunicación con las aplicaciones de tercerlos. Esto permite tener una respuesta al usuario más rápida al delegar las tareas de mucho trabajo para ser realizadas de fondo.

Para tener el estado de suscripciones presente para los suscriptores que utilizan el sitio de la librería Moodle, se agregó un nuevo bloque de Moodle que obtiene el estado de la suscripciónes del sitio de suscripciones. De esta forma el suscriptor que está navegando por el contenido de la librería puede saber el estado de las suscripciones activas, la información del último pago realizado y si hay algún problema con alguno de los pagos a realizarse mensualmente.

Para mantener una interfaz coherente entre el sitio de promoción en Wordpress, el sitio de suscripciones y la librería administrada en Moodle, se realizaron modificaciónes de estilos para tener ambos tres sitios con una interfaz similar y coherente, permitiendo al usuario tener una experiencia similar en los 3 sitios. Además se evió tener diferentes contraseñas y usuarios para cada sitio, realizando una integracion entre el sitio de suscripción y la plataforma Moodle. De esta forma el usuario que ingresa con sus credenciales al sitio de suscripción es automaticamente autenticado en la plataforma Moodle.

Como parte del proceso de aseguramiento de la calidad del proyecto para asegurarnos de que tenemos la menor cantidad de problemas de regresión un sistema de testing automatizado fue agregado permitiendo validar el flujo de suscripcion y sus diferentes variantes. Esto permite que a medida que se van agregando los cambios al sistema podemos asegurarnos que el flujo de suscripción no presenta problemas.

Este fue un elemento muy importante ya que al tener integrados 3 APIs diferentes en el sitio de suscripciones, las cuales tienen que funcionar correctamente, podemos validar que todo funciona como es esperado luego de ingresar algún cambio y antes de mover esas modificaciones al sistema de producción.

Tecnologías 

  • Laravel 5: Framework MVC utilizado como servidor REST API y comunicación las otras API externas.
  • Stripe: Pasarela de pagos online, trabaja en mas de 25 paises y permite procesar tarjetas de crédito y débito de forma automatizada.  
  • MySQL: Base de datos relacional utilizando MariaDB para consultas relacionales.
  • Bootstrap 3: Framework de HTML5 + CSS3 + Javascript que proporciona herramientas para construir interfaces de usuarios dinámicas y compatibles con todos los navegadores modernos.
  • Gulp: gestor de rutinas javascript para automatizar tareas
  • SCSS: pre-procesador de hojas de estilo CSS

Etiquetado como

Etiquetas

Serfe info(at)serfe.com https://www.serfe.com/images/serfe_logo_text.png https://www.serfe.com/images/serfe_logo_text.png FALUCHO 2032, S3016LDB, SANTO TOME, SANTA FE, ARGENTINA 1-305-5375397