Cashier — instala y configura cuentas de Nextcloud de pago
Instalación
- Asegúrate de que una app de registro está instalada, activada y con licencia: Sign-up 1.0 o posterior o IDRegister 2.1 o posterior (Cashier usa su página de registro, su confirmación por correo y su creación de cuentas). Sin una de ellas, Cashier solo ofrece una página de registro básica propia; Administración → Resumen (comprobación «Cashier (página de registro)») y la sección Página de registro de los ajustes de Cashier indican qué falta.
- Inicia sesión en tu cuenta de MediaLab Works, abre Licencias y descarga el archivo de la app
cashier-x.y.z.tar.gz. - Extrae la carpeta en
apps/(ocustom_apps/) de Nextcloud de modo que quedeapps/cashier/, con propietario el usuario del servidor web. - Actívalo:
sudo -u www-data php occ app:enable cashiero desde la página Aplicaciones. - Ajustes de administración → Cashier → Licencia: pega tu clave de licencia y guarda. La app se vincula a esta instancia de Nextcloud y muestra Activa.
Licencia
La licencia se comprueba una vez al día. Sin internet, la app sigue funcionando durante 7 días después de la última comprobación correcta. Sin una licencia válida no se aceptan nuevos registros de pago ni pagos y la tarea en segundo plano no se ejecuta, pero las cuentas y suscripciones existentes no se tocan: Stripe sigue cobrando, el webhook sigue registrando renovaciones, pagos fallidos y cancelaciones, y los suscriptores conservan su página de Ajustes personales → Suscripción y el portal de cliente de Stripe (tarjeta, facturas, cancelación). Las páginas de administración muestran un aviso y la sección Licencia. No se elimina nada.
La vía de pago también necesita una licencia válida de la app de registro (Sign-up o IDRegister): sin ella, la página de registro no está disponible y los nuevos registros de pago se detienen, mientras que los suscriptores existentes tampoco se ven afectados. Un pago que ya estaba en curso cuando la app de registro perdió su licencia aun así recibe su cuenta (Cashier la crea por sí mismo).
Conexión de Stripe
- En el Stripe Dashboard → Developers → API keys, copia la clave publicable y crea una clave restringida con acceso de escritura a Customers, Checkout Sessions, Customer portal, Products, Prices, Subscriptions y Webhook Endpoints, y acceso de lectura a Invoices (opcionalmente también Account, de lectura, para que la página de ajustes muestre el nombre y la moneda de la cuenta).
- Ajustes de administración → Cashier → Stripe: pega ambas claves. Empieza con las claves de prueba (
pk_test_…,rk_test_…) y pasa a las claves en vivo cuando todo funcione. - Pulsa Crear webhook: Cashier registra
https://<your-cloud>/index.php/apps/cashier/webhooken Stripe con los eventos que necesita y guarda el secreto de firma. (Alternativa manual: añade el endpoint tú mismo y pega el secretowhsec_….) - La comprobación de configuración «Cashier (Stripe)» en Administración → Resumen se pone verde cuando ha llegado un evento verificado: haz un pago de prueba o envía uno con el Stripe CLI (
stripe trigger checkout.session.completed) o desde la página de webhooks del Dashboard.
Planes
Ajustes de administración → Cashier → Planes → Añadir plan:
- Nombre y descripción en inglés y rumano.
- Precio: mensual, anual o ambos, en la moneda de tu cuenta de Stripe. Si usas Stripe Tax o Managed Payments, el IVA se calcula y se añade en la página de pago de Stripe (los planes se crean con un código de impuesto); la página de registro muestra el precio sin impuestos y lo indica.
- Cuota de almacenamiento (por ejemplo 100 GB) y grupos a los que se añade el suscriptor.
- Días de prueba gratuita (opcional; la tarjeta igualmente se solicita).
- Visible en la página de registro u oculto (solo mediante un enlace directo, p. ej. para una oferta de empresa).
Los planes se crean en Stripe automáticamente; al cambiar un precio se crea un nuevo precio en Stripe y los suscriptores existentes se mantienen en el antiguo hasta que cambian de plan.
La página de registro
Con Sign-up (recomendado para el registro de pago sencillo): la página de Sign-up (/index.php/apps/signup/) ofrece tus planes junto a la cuenta gratuita, o en lugar de ella (Sign-up → Registro). El visitante elige un plan, rellena el formulario de Sign-up (datos personales y contraseña), confirma la dirección, paga en la página de Stripe y vuelve con la sesión iniciada a una cuenta creada por Sign-up con la cuota y los grupos del plan. Consulta la guía de Sign-up.
Con IDRegister: con Cashier con licencia y al menos un plan visible, la página de registro de IDRegister (/index.php/apps/idregister/) ofrece «Paga un plan en lugar de escanear un documento» bajo la opción de documento de identidad, en móviles y en ordenadores. Un visitante que paga:
- elige un plan y un período de facturación (mensual o anual);
- introduce una dirección de correo, acepta las condiciones y confirma la dirección con el código de seis dígitos de IDRegister;
- paga en la página de Stripe (tarjeta, Apple Pay / Google Pay y los métodos que ofrezca Stripe);
- vuelve a la página de registro, que espera unos segundos a la confirmación de Stripe: la cuenta la crea IDRegister, marcada «verificada por pago», recibe la cuota y los grupos del plan, y el nombre de usuario y una contraseña se muestran una sola vez mientras el navegador inicia sesión por sí solo. También se envía un correo de bienvenida con un enlace para elegir contraseña.
Las cuentas creadas así se saltan el documento de identidad, la selfie y la aprobación del administrador; la dirección de correo queda bloqueada y el nombre lo puede cambiar el usuario. En Ajustes de administración → IDRegister → Registro de pago puedes desactivar la oferta de pago o desactivar «Exigir la comprobación de identidad solo para la vía gratuita» para que los visitantes que pagan también muestren su documento y se hagan la selfie primero (el nombre leído del documento queda entonces bloqueado).
El enlace propio de Cashier /index.php/apps/cashier/signup y el enlace directo de un plan oculto (…/signup/plan/<token>) llevan a la página de registro, con el plan ya elegido en el caso del enlace directo. Con Sign-up e IDRegister instalados a la vez, Reglas → Página de registro de pago elige a dónde van estos enlaces (automático: primero Sign-up); de cualquier modo, ambas páginas venden los planes. Un visitante que cancela en la página de Stripe vuelve a los planes y no se cobra nada. Un usuario existente compra un plan desde Ajustes personales → Suscripción.
Cuando un pago falla
- Stripe reintenta la tarjeta según tus ajustes de Stripe.
- El usuario recibe una notificación y un correo con un enlace para actualizar la tarjeta; la cuenta sigue funcionando durante el período de gracia (Administración → Cashier → Reglas, de 0 a 90 días, 7 por defecto; 0 aplica la regla siguiente en cuanto falla un pago).
- Tras el período de gracia la cuenta pasa a ser de solo lectura (cuota reducida al espacio usado) o desactivada (suspendida), según elegiste. Las cuentas registradas mediante Sign-up siguen la regla de Sign-up (suspendida por defecto). El usuario recibe un correo con el enlace para pagar la factura pendiente; un usuario suspendido que lo perdió puede pedirlo de nuevo en la página pública
/index.php/apps/cashier/billing(enlazada desde la página de Sign-up). Un pago correcto restaura la cuenta al instante, con un correo. - Nunca se elimina nada por una factura impagada: los archivos, las comparticiones y los datos se quedan como están; solo un administrador elimina cuentas.
- Correos: además de los anteriores, los suscriptores reciben un mensaje de «Factura nueva» cuando se emite una factura de renovación y un recibo cuando se paga (Reglas → «Enviar correo a los suscriptores sobre sus facturas»; Stripe también puede enviar sus propios recibos). Los webhooks existentes reciben el nuevo evento de factura automáticamente tras actualizar a 1.2.
- Una suscripción cancelada sigue activa hasta el final del período pagado.
Para usuarios
Ajustes personales → Suscripción muestra el plan, el próximo pago y las facturas, y abre el portal de cliente de Stripe para cambiar de plan, actualizar la tarjeta o cancelar.
Administración
La página de ajustes (Ajustes de administración → Cashier) es una página de ajustes normal de Nextcloud con las secciones Licencia, Página de registro (qué app — Sign-up o IDRegister — gestiona el registro de pago), Stripe, Planes, Reglas y Suscriptores.
- Suscriptores: usuario, plan, estado (activa, en prueba, con pago atrasado, cancelada), próximo pago, total pagado; filtros y búsqueda.
- Dar o ampliar un plan gratis (para amigos, familia o un caso de soporte) — sin cargo de Stripe.
- Cada fila enlaza al cliente y a la suscripción en el Stripe Dashboard.
Resolución de problemas
- Los pagos se procesan pero la cuenta no se activa: el webhook no llega a tu servidor. Comprueba la comprobación de configuración, que la dirección sea pública por HTTPS y el registro de entregas del endpoint en Stripe. La página de registro sigue esperando y dice al visitante que llegará un correo cuando la cuenta esté lista.
- La comprobación de configuración sigue en amarillo («Todavía no ha llegado ningún evento de Stripe»): haz un pago de prueba o ejecuta
stripe trigger checkout.session.completed; se pone verde tras el primer evento verificado. - «Signature verification failed» en el registro de Nextcloud: el secreto del webhook es incorrecto — pulsa de nuevo Crear webhook o pega el
whsec_…actual. - La opción de pago no aparece en la página de registro: falta la app de registro, es demasiado antigua (Sign-up 1.0 / IDRegister 2.1), no tiene licencia o tiene su opción de pago desactivada; no hay ningún plan visible (o Stripe no está conectado); o la licencia de Cashier no está activa. La comprobación «Cashier (página de registro)» en Administración → Resumen indica la causa.
Derechos de contenido
Cashier cobra a tus usuarios a través de tu propia cuenta de Stripe. Tú eres el único responsable de poseer los derechos del contenido o servicio por el que cobras (por ejemplo las películas, series o canales de tu servidor); MediaLab Works solo proporciona el software y no es parte de tus ventas. Stripe puede cerrar o restringir una cuenta que cobre por contenido sin los derechos correspondientes: consulta la lista de negocios restringidos de Stripe.