Mejoras al Plugin de Suscripciones

Hola, he realizado los siguientes cambios en este plugin y quería saber si el equipo de Discourse está abierto a una PR.

También me encantaría que otros pudieran realizar pruebas exhaustivas. Actualmente estoy probando los flujos con los escenarios que me resultan críticos.


El plugin original es una base excelente, pero se centra principalmente en suscripciones recurrentes a través de Stripe. He realizado los siguientes cambios:

Resumen de Nuevas Funciones y Mejoras

1. Sistema de Pago Multi-Proveedor (con Razorpay) El plugin ya no está codificado de forma rígida para Stripe. Ahora utiliza una arquitectura basada en proveedores que permite múltiples pasarelas de pago.

  • Integración con Razorpay: Razorpay se ha integrado completamente como un segundo proveedor de pago. Esto es crucial para comunidades en mercados como la India, donde Razorpay es una pasarela preferida.
  • Webhooks Seguros: La integración con Razorpay es robusta e incluye un manejador de webhooks seguro para confirmar pagos de servidor a servidor, asegurando que no se pierdan suscripciones si un usuario cierra el navegador después del pago.

2. Suscripciones de Pago Único y Limitadas en el Tiempo Esto introduce un nuevo y flexible tipo de producto más allá de las suscripciones recurrentes estándar.

  • Acceso Expirable: Los administradores ahora pueden crear planes de pago único que otorgan acceso a grupos por una duración fija (por ejemplo, un pase de evento de 7 días, una prueba de 30 días o un paquete de 90 días).
  • Expiración Automática: Un trabajo diario en segundo plano se ejecuta automáticamente para verificar las suscripciones expiradas y eliminar a los usuarios de los grupos relevantes, asegurando que el control de acceso esté completamente automatizado.

3. Renovación Completa de la Página de Precios La página de suscripción predeterminada para el usuario ha sido completamente reconstruida para mejorar las conversiones y la experiencia del usuario.

  • Interfaz de Usuario Moderna Basada en Tarjetas: La antigua lista de productos se reemplaza por un diseño limpio y receptivo basado en tarjetas, que es más fácil de leer y comparar.
  • Adaptado al Tema: El nuevo diseño utiliza las variables de tema de Discourse y es totalmente compatible con los modos claro y oscuro.
  • Pago en una Sola Página: Todo el proceso de pago ahora ocurre en la página de precios. Hacer clic en “Suscribirse” revela un formulario de pago directamente en la página, eliminando un paso redundante y reduciendo la fricción del usuario.

4. Lógica Avanzada de Venta Cruzada y Visualización de Valor Las nuevas tarjetas de precios están diseñadas para ser potentes herramientas de venta cruzada.

  • Costo Mensual Efectivo: La interfaz de usuario calcula y muestra automáticamente el “costo por mes” efectivo para todos los tipos de planes (incluidos los planes de pago único de 3 meses o anuales), lo que permite a los usuarios comparar fácilmente el valor de las diferentes opciones.
  • Ahorro Explícito: Una insignia “Ahorra ₹X” se muestra automáticamente en los planes a más largo plazo, comunicando claramente el beneficio de elegir un plan de mayor valor sobre la línea base.

5. Paneles Unificados de Administración y Usuario Tanto las páginas de facturación de administradores como de usuarios han sido refactorizadas para ser más simples y potentes.

  • Vista Unificada Única: En lugar de listas separadas para diferentes tipos de pago, ahora hay una única tabla que muestra todas las suscripciones de todos los proveedores (Stripe, Razorpay, Manual).
  • Información Clara: Estas vistas muestran claramente el proveedor, el estado, la fecha de expiración/renovación y el monto de cada transacción, brindando a administradores y usuarios un historial completo de sus derechos.

6. Gestión Manual de Suscripciones para Administradores Se ha agregado un nuevo conjunto de herramientas para dar a los administradores más control.

  • Otorgar Suscripción: Los administradores ahora pueden otorgar manualmente cualquier plan de suscripción a cualquier usuario por un período específico. Esto es perfecto para manejar pagos fuera de línea, proporcionar acceso gratuito o realizar correcciones.
  • Revocar Acceso: El acceso a planes no recurrentes se puede revocar inmediatamente desde el panel de administración.

7. Corrección Crítica de Errores para la Gestión de Grupos

  • Se ha corregido un error importante en la lógica original de eliminación de grupos. Cuando se cancela o revoca una suscripción, el sistema ahora realiza una “verificación de seguridad” para ver si el usuario tiene alguna otra suscripción activa para el mismo grupo. El usuario solo será eliminado del grupo si no tiene otra forma válida de acceder a él, lo que evita que los usuarios sean eliminados incorrectamente.
3 Me gusta

¿Puedes incluir un enlace a tu repositorio de GitHub?

1 me gusta

Sí, sí, por supuesto.. solo deme un día. Resolviendo algunos errores relacionados con el manejo de datos heredados de Stripe cuando cambiemos a esta versión del plugin con nuevos campos.

He actualizado la primera publicación con el repositorio.

Guía de Configuración e Instalación

Esta guía te guiará a través de la configuración de los proveedores de pago necesarios y la creación de tus primeros productos y planes.

1. Configuración del Proveedor

Primero, navega a `Admin

3 Me gusta

He actualizado el repositorio con los siguientes cambios/correcciones. Ahora estoy listo para instalarlo y usarlo en mi sitio de producción.

Resumen de Mejoras de Estabilidad y Seguridad

1. Integración Moderna de Stripe Checkout El plugin se ha actualizado para usar el flujo moderno de Stripe Checkout basado en redirección.

  • Qué significa esto: En lugar de un formulario de tarjeta de crédito en la página, los usuarios ahora son enviados a una página segura alojada por Stripe para completar su pago.
  • Por qué es mejor: Este es el enfoque recomendado por Stripe. Mejora la seguridad, reduce la carga de cumplimiento de PCI de su sitio y proporciona una mejor experiencia de usuario con soporte para métodos como Apple Pay y Google Pay.

2. Lógica de Recompra Sólida como una Roca La lógica que evita que los usuarios recompren un producto para el que ya tienen una suscripción activa ha sido completamente revisada.

  • La Corrección: Hemos añadido el product_id a cada registro de suscripción local. La verificación es ahora una consulta simple y ultrarrápida contra su base de datos local con cero llamadas a API externas, lo que la hace 100% confiable.
  • El Resultado: Un usuario con una suscripción activa (recurrente o por tiempo limitado) ahora será bloqueado correctamente para que no pueda recomprar ese mismo producto hasta que expire.

3. Integridad de Datos en Todos los Paneles La página de facturación del usuario y el panel de suscripciones del administrador se han corregido para garantizar que siempre muestren datos precisos y en tiempo real.

  • La Corrección: Ambas páginas ahora obtienen el estado más reciente y las fechas de renovación/expiración de cada suscripción directamente del proveedor de pagos (Stripe).
  • El Resultado: Lo que vea en el panel de administración siempre coincidirá perfectamente con lo que ve el usuario, y ambos reflejarán el estado real de la suscripción en Stripe. Los errores que mostraban “N/A” para los detalles del plan o estados “activos” incorrectos se han resuelto.

4. Procesamiento Robusto de Webhooks y Trabajos

  • No Más Suscripciones Duplicadas: El manejador de webhooks se ha corregido para manejar correctamente la secuencia de eventos de Stripe, asegurando que una transacción cree exactamente una registro de suscripción.
  • Trabajo de Expiración Confiable: El trabajo diario en segundo plano que expira los planes de pago único se ha reforzado. Ahora establece correctamente la clave API requerida y expirará una suscripción incluso si el plan original fue eliminado de Stripe, asegurando que sus permisos de grupo sean siempre precisos.
1 me gusta

¡Vaya, gracias por hacer todos estos cambios!

Sin embargo, no podemos simplemente fusionar cambios muy grandes todos a la vez. Si desea fusionar estos cambios en el plugin discourse-subscriptions, deberá separar cada cambio individualmente y crear PRs separadas con pruebas. Además, asegúrese de que no haya cambios disruptivos para los usuarios actuales que ya estén utilizando el plugin de suscripciones y que ya tengan muchos suscriptores.

5 Me gusta

Claro, gracias. Me tomaré tiempo y crearé varios PRs después de trabajar en las especificaciones.

4 Me gusta