Codex · III

Suscripciones

Suscripciones

Coin Moebius puede vender suscripciones recurrentes en cada proveedor fiat de tu menú. El comerciante configura el precio y el intervalo una vez en un producto; el botón de compra en el sitio se queda exactamente igual. El proveedor de pago maneja la facturación recurrente, guarda la tarjeta, reintenta renovaciones fallidas y aloja la página de cancelación. Coin Moebius retransmite los eventos del ciclo de vida a tu código.

Configurar un producto recurrente

En la pestaña Productos del panel, configura el campo Facturación a Mensual o Anual en lugar de Única. Un campo opcional de Prueba gratuita aparece para los días de prueba que quieras otorgar antes del primer cargo. Guarda el producto.

El HTML del botón de compra no cambia. El mismo atributo product-id="pro-plan" funciona para único o recurrente; el worker verifica la configuración de facturación del producto al momento del checkout y lo enruta por la API de suscripción del proveedor cuando aplique.

<coin-moebius-buy
  project-id="proj_YOUR_ID"
  product-id="pro-plan"
  label="Subscribe to Pro">
</coin-moebius-buy>

Lo que no tienes que construir

El proveedor maneja la programación. No guardamos tarjetas. No ejecutamos cron jobs. No reintentamos cargos fallidos. No enviamos correos de cobro. No alojamos una página de cancelación. Todo ese lado del sistema vive dentro de Stripe (o el proveedor fiat que hayas conectado). Estás externalizando las partes difíciles de la facturación recurrente a la compañía que ya las maneja para millones de comerciantes.

Eventos de suscripción

Las renovaciones y cancelaciones aparecen como eventos de webhook a los que tu servidor puede reaccionar. Cinco tipos normalizados cubren el ciclo de vida:

EventoCuándo se dispara
subscription.createdNuevo registro. Lleva el monto del primer ciclo.
subscription.renewedUn ciclo no inicial tuvo éxito. Extiende el acceso hasta el nuevo fin de periodo.
subscription.payment_failedLa tarjeta de un ciclo fue rechazada. El reintento de cobro del proveedor sigue su propio calendario; usualmente solo registras esto para visibilidad.
subscription.canceledCancelación terminal. El comprador canceló, se agotaron los reintentos de cobro, o el comerciante canceló.
subscription.updatedCambio de estado, actualización de tarjeta, cambio de plan. Inspecciona el nuevo estado.

Identificar compradores sin almacenarlos

Coin Moebius es un enrutador de pagos, no una base de datos de clientes. Nunca almacenamos correos, nombres, direcciones ni los ids internos del proveedor de los compradores. Si tu aplicación tiene cuentas de usuario (la mayoría de las apps de suscripción las tienen), pasa tu propio id de usuario opaco como customer-ref en el botón de compra. El botón lo envía al worker como metadata.customerRef, lo pasamos al proveedor, lo devolvemos en cada evento, y solo almacenamos esa cadena opaca. Para nosotros no tiene significado; para ti es la llave foránea a tu propio sistema de usuarios.

<coin-moebius-buy
  project-id="proj_YOUR_ID"
  product-id="pro-plan"
  customer-ref="user_bob_42">
</coin-moebius-buy>

Cuando necesites más detalle del comprador (correo, últimos cuatro dígitos de la tarjeta, notas de disputa), el panel enlaza cada transacción con tarjeta al proveedor que la procesó (Stripe, PayPal, Square o Authorize.Net), donde realmente vive el registro del comprador. Haces clic; nunca lo duplicamos.

Cancelación: enlaza, no construyas

Los compradores cancelan en el portal alojado del proveedor: el Portal de Cliente de Stripe, la página de cuenta PayPal del comprador, y así sucesivamente. El portal maneja cancelación, actualizaciones de tarjeta, descarga de recibos y cambios de plan, toda la interfaz que no tienes que construir. Puedes llevar al comprador al portal con una sola llamada API:

const res = await fetch(
  `https://api.coinmoebius.com/api/subscriptions/${projectId}/${subId}/portal-url`,
  { method: 'POST', body: JSON.stringify({ returnUrl: 'https://you.example/account' }) },
);
const { url } = await res.json();
window.location.assign(url);

Qué proveedores soportan suscripciones hoy

Stripe y PayPal funcionan de principio a fin a través del botón de compra alojado. Configura un producto como Mensual o Anual en tu panel, pega el botón en tu página, y el clic inicia una suscripción real. El proveedor ejecuta las renovaciones.

Square y Authorize.Net no manejan suscripciones a través del botón de compra alojado. Creas la suscripción mediante tu propia integración con el proveedor (para Authorize.Net, eso significa recolectar la tarjeta en tu propia página con Accept.js; Square tiene su propio checkout de suscripción alojado que puedes usar), luego apuntas el webhook del proveedor hacia nosotros. A partir de ahí, el resto del sistema (enrutamiento de webhook, panel, endpoint de estado, vinculación de cliente) funciona exactamente igual que con las suscripciones de Stripe y PayPal. Consulta la siguiente sección.

Los proveedores de cripto (NOWPayments) no soportan facturación recurrente en este producto. La recurrencia cripto genera mucha fricción en cada gateway que hemos evaluado; preferimos no enviar nada que enviar una historia incompleta.

¿Listo para conectarlo?

El plan gratis cubre la mayoría de los sitios y nunca pide tarjeta.