WebBlocks Memberships

Memberships 0.2.0 reúne cuentas de visitantes, paquetes de membresía gratuitos o asignados manualmente, suscripciones de pago y renovación automática en un solo plugin. Requiere WebBlocks CMS 1.100.0 o posterior de la serie 1.x. La facturación utiliza opcionalmente los proveedores de pago de Commerce 0.16.0; las membresías gratuitas y manuales siguen funcionando sin Commerce.

Requisitos e instalación

Esta guía documenta Memberships 0.2.0. Requiere PHP 8.4 o posterior y WebBlocks CMS ^1.100.0. Los planes de pago utilizan además Commerce ^0.16.

Descargue el ZIP compatible desde la página de Memberships en el catálogo. Instálelo en Sistema → Plugins, actívelo y compruebe que la configuración de la base de datos se haya completado correctamente. Antes de invitar a visitantes, configure el dominio canónico del sitio y el correo saliente del CMS. Abra Memberships y seleccione el sitio cuyas cuentas y paquetes desea administrar.

Cuentas de miembros

Utilice el bloque nativo Account o la ruta del sitio /plugins/webblocks-memberships/account para registrarse, iniciar sesión, restablecer contraseñas y consultar membresías. La inscripción en paquetes y el contenido exclusivo para miembros requieren verificar el correo electrónico. El sitio necesita un dominio canónico y correo saliente configurado en el CMS. Los enlaces de verificación caducan a las 24 horas y los de restablecimiento de contraseña a la hora. GET muestra un formulario de confirmación; solo un POST protegido contra CSRF consume el enlace. Restablecer la contraseña o desactivar la cuenta invalida las sesiones existentes del miembro.

Paquetes y acceso

El panel de Memberships administra paquetes y asignaciones de membresía dentro del sitio seleccionado. Los paquetes pueden permitir la inscripción gratuita por cuenta propia o exigir una asignación del operador. Los operadores establecen fechas de inicio y fin en UTC o con un desplazamiento horario explícito, amplían o revocan asignaciones y activan o desactivan cuentas. Las cuentas de visitantes son independientes de los administradores del CMS.

Desde el panel puede hacer que una página sea pública, accesible para miembros verificados o para titulares de un paquete concreto. Si Memberships no está disponible, las páginas protegidas permanecen cerradas y no aparecen en la búsqueda pública, el mapa del sitio ni las listas y la navegación de páginas automáticas. Restaurar una revisión de contenido no elimina la protección actual. Las copias la conservan. Una versión del CMS anterior a 1.99.0 no puede aplicar estas reglas nuevas; retire de publicación las páginas protegidas antes de volver a esa versión. Las páginas protegidas exportadas son borradores; los permisos de paquetes importados deben reasignarse expresamente a un paquete local para conceder acceso.

El control de acceso protege la página renderizada, no una URL de archivo que ya sea pública. Los medios confidenciales necesitan un disco privado del sistema de archivos sin acceso público. Un medio privado utilizado por un bloque publicado de una página protegida puede servirse mediante /plugins/webblocks-memberships/downloads/{page}/{media} con la misma comprobación de membresía.

Integración con Appointments

Appointments utiliza Memberships de forma opcional. Iniciar sesión puede completar previamente los datos del cliente y asociar una reserva al miembro verificado. Un servicio puede exigir un miembro verificado o un paquete activo. Sin Memberships siguen funcionando las reservas normales de invitados; los servicios restringidos no están disponibles. Se conservan los datos del cliente guardados en reservas anteriores.

Administración mediante API

La Internal Content API ofrece /webadmin/api/plugins/webblocks-memberships?site_id=... con memberships.read. Las operaciones POST requieren memberships.write y una site_id autorizada indicada expresamente: package, package/{id}, grant, revoke/{id}, member/{id} y access. Los tokens personales de API también deben cumplir el alcance delegado vigente del sitio.

La versión anterior, 0.1.0, admite membresías gratuitas y manuales sin facturación de pago. Los catálogos de idioma incluyen el texto fuente en inglés y traducciones al turco; los demás catálogos utilizan actualmente texto de respaldo en inglés.

El registro solicita primero nombre y correo electrónico. El POST de verificación establece la contraseña e invalida las sesiones anteriores, de modo que un tercero no pueda conservar una contraseña elegida antes de demostrar la propiedad del correo. Las solicitudes de restablecimiento de cuentas pendientes generan, en su lugar, un enlace de verificación.

Esta fase permanece dentro de Memberships. Requiere el contrato de pagos del CMS 1.100.0 y la implementación de proveedores de Commerce 0.16.0. Appointments 0.16.1 admite Memberships 0.1 y 0.2 mediante el directorio de miembros existente.

Configure una sola vez las credenciales de pago en Commerce. Memberships no las duplica. Cree en el panel un plan mensual o anual con precio entero en unidades monetarias mínimas, moneda y selección de proveedor. EUR 1000 significa EUR 10.00. El número de intervalos mensuales es de 1–12; para años es 1. Los precios de las suscripciones existentes permanecen fijos. Un plan nuevo no cambia silenciosamente una autorización anterior.

El miembro verificado autoriza expresamente la renovación. PayPal utiliza su propio proceso de aprobación y facturación de suscripciones. SumUp obtiene el consentimiento y un token de tarjeta guardada mediante su componente de pago; el pago temporal de configuración de 1 unidad se reembolsa y no compra membresía. El acceso comienza cuando el servidor verifica un pago de suscripción; las asignaciones manuales existentes siguen siendo independientes. El acceso mediante paquetes de pago también funciona en servicios restringidos de Appointments sin copiar allí la lógica de pagos.

Ejecute cada minuto el programador de Laravel del servidor. Memberships registra una conciliación cada cinco minutos y el procesamiento autorizado de renovaciones de SumUp. PayPal realiza sus propias renovaciones, que se concilian localmente. Un rechazo o un período pagado caducado no concede acceso. Las solicitudes de resultado desconocido se comprueban con la misma referencia del proveedor en vez de volver a cobrar a ciegas. Si se pierde por completo un período de SumUp, es necesaria una nueva inscripción. La cancelación detiene futuras solicitudes de renovación; los cargos ya solicitados pueden completarse. La cancelación permanece pendiente hasta confirmar la cancelación del acuerdo externo. El acceso liquidado dura hasta el final del período, salvo períodos reembolsados o revertidos.

Añada los temas de suscripción y venta al webhook existente de PayPal de Commerce. Los pagos de SumUp utilizan el callback de Memberships del sitio canónico. Antes de habilitar planes reales, verifique los permisos del comerciante, el comportamiento de tarjeta guardada/SCA y la entrega de callbacks en el entorno sandbox de ese comerciante. Cancele los acuerdos externos antes de eliminar permanentemente los plugins de facturación o su configuración de proveedor.

El alcance de sitio existente y memberships.read/memberships.write cubren planes, suscripciones e historial de pagos. POST /plugins/webblocks-memberships/plan crea un plan; /stop-plan/{id} lo cierra y solicita cancelar las renovaciones. POST /plugins/webblocks-memberships/billing/{subscription-uuid}/refresh o /cancel concilia o cancela una suscripción perteneciente al sitio. El servidor comprueba importes, pertenencia del miembro y alcance del paquete; los tokens de tarjeta y los secretos de aprobación/solicitud se excluyen de la respuesta de API.

Contratos de proveedores: suscripciones de PayPal, frecuencias de facturación de PayPal, tokenización de SumUp, pruebas de pagos y transacciones de SumUp.

Si no llega el correo de la cuenta, compruebe el correo saliente del CMS y el dominio canónico antes de solicitar otro mensaje de verificación. Si un miembro no puede abrir una página restringida, compruebe la verificación del correo, la actividad de la cuenta, el paquete requerido y las fechas de la asignación. El acceso de pago necesita además pruebas de pago verificadas por el proveedor; activar un plan por sí solo no concede acceso.

Vuelva a la descripción general de plugins, configure proveedores con la guía de Commerce o consulte la integración opcional con Appointments.