Skip to content
← Todas las publicaciones
· Delta1 Labs LicenciamientoGuía

Convertir una prueba en una licencia de pago sin reinstalar

Un usuario de prueba que paga debería convertirse en usuario con licencia en el sitio: misma instalación, mismos datos, sin clave que volver a introducir. Esto es cómo funciona una conversión limpia de prueba a pago: mejorar la clave en el sitio, refrescar los derechos cacheados, y diseñar la caducidad de la prueba para que pagar simplemente restaure lo que ya estaba.

La prueba hizo su trabajo: alguien instaló tu software, lo usó y decidió pagar. La conversión que sigue debería ser el momento más fácil de toda la relación, y demasiado a menudo es el más torpe: exige una clave nueva por correo, una reintroducción, a veces una reinstalación, y de vez en cuando el descubrimiento de que su trabajo de prueba desapareció. Nada de eso es necesario. Una prueba y una licencia de pago son el mismo tipo de cosa —una concesión firmada de derechos— así que convertir una en otra es un cambio de atributos, no un reemplazo.

Mejora la clave en el sitio

El modelo más limpio no emite ninguna clave nueva. La clave de prueba que el cliente ya activó se convierte en su licencia de pago. En el servidor, cuando el pago tiene éxito, cambias el nivel de esa licencia del nivel de prueba al de pago y extiendes o eliminas su caducidad:

// On a successful payment for a customer who is already on a trial key:
await licenses.Upgrade(trialKey, new UpgradeRequest
{
    Tier     = "pro",      // trial tier → paid tier
    ExpiryUtc = null,      // perpetual; or a renewal date for a subscription
    Seats    = seatsPaid,  // bump the seat count if the plan includes more
});

Nada de la máquina del cliente cambia. La clave en su app es la misma cadena; solo cambió lo que esa clave significa, en el servidor. Comparado con emitir una clave nueva, esto elimina un correo, un copiar-pegar y toda una clase de tickets de soporte de «nunca recibí mi clave».

Si tu facturación está automatizada, esta mejora es exactamente lo que un webhook de fulfillment debería hacer en un evento paid para un pedido vinculado a una prueba existente, de forma idempotente, con clave en la referencia del pedido.

Refresca los derechos cacheados

Aquí es donde la conversión en el sitio normalmente parece rota: el cliente paga, vuelve a abrir la app, y sigue diciendo «Prueba — 0 días restantes». La mejora funcionó; la app está leyendo una caché obsoleta.

Los SDK de licenciamiento cachean una lease firmada para que la app valide sin conexión entre check-ins. Esa lease cacheada se acuñó mientras la clave era una prueba, así que todavía lleva el nivel y la caducidad de prueba. El arreglo es forzar una validación nueva tras la conversión en vez de confiar en la caché:

// After the user completes payment (or on app resume), re-validate ONLINE.
var info = await client.ActivateAsync(key);     // re-activate pulls a fresh lease
// or: await client.ValidateOnlineAsync(key);

if (info.Status == LicenseStatus.Valid && !info.IsTrial)
{
    ApplyEntitlements(info.Entitlements);  // paid tier's flags + limits now apply
    ShowStatus("Licensed");                // trial banner gone
}

La nueva lease lleva los derechos del nivel de pago, reemplazando la lease de prueba cacheada. Da al usuario una opción obvia de «He comprado — refrescar mi licencia», y revalida también en el próximo arranque, para que incluso un usuario que cierra la app antes de refrescar se mejore automáticamente la próxima vez.

Clave de pruebatier=trial, caducidadpagarMejora in situmisma clave → tier=prorevalidarApp: con licencialease nueva, derechos de pago

Diseña la caducidad para que pagar solo restaure

La conversión no siempre es el mismo día. Muchos clientes prueban, dejan que caduque y vuelven semanas después. Lo que tu app hace al caducar decide si ese regreso es una mejora de un clic o un callejón sin salida.

La regla: la caducidad degrada, nunca destruye. Cuando una prueba termina, pasa a un modo de solo lectura o gratuito y deja todo el trabajo del usuario en su sitio. Entonces el regreso es trivial: paga, la clave se mejora, la app revalida y las funciones se reactivan sobre datos que lo estaban esperando. Si en cambio borras proyectos o lo bloqueas de sus propios archivos al caducar, has eliminado la razón más fuerte que tenía para comprar, y has convertido «clic para mejorar» en «empezar de cero». Una prueba que caduca en solo lectura convierte; una prueba que caduca en una puerta cerrada no.

Por eso también fallar en cerrado para el licenciamiento debería significar «desactivar las funciones de pago», no «desactivar la app». El cliente en la ventana de conversión es tu mejor prospecto; lo peor que puedes hacer es tomar sus datos como rehenes.

Unos detalles que compensan

  • Una prueba por cliente. Ata la prueba a un correo o a un dispositivo para que una prueba caducada no pueda simplemente reiniciarse gratis. Al convertir, esa misma identidad vincula la licencia de pago con la prueba, que es cómo mides la tasa de prueba a pago más tarde.
  • Lleva el contexto hacia adelante. Como es la misma instalación y la misma clave, los ajustes, proyectos y preferencias sobreviven automáticamente. No reinicies nada en la mejora; el objetivo es la continuidad.
  • Haz obvio «¿ya pagaste?». Una única acción visible que revalida convierte un confuso «sigue diciendo prueba» en un problema resuelto sin un ida y vuelta de soporte.
  • Maneja el caso caducado-luego-pagó de forma explícita. Si la prueba ya caducó, la mejora puede necesitar reactivar la clave en la máquina actual; asegúrate de que esa ruta también refresca la lease.

Emitir una prueba es cómo te ganas la oportunidad de convertir. Convertirla bien es un trabajo más silencioso —mejora en el sitio, refresca la lease, protege los datos— pero es la diferencia entre un cliente que hace clic una vez y uno que se pregunta a dónde fue su clave. Trata la prueba y la licencia de pago como el mismo objeto en dos estados, y la mejora se vuelve lo que debería ser: casi invisible.

Prueba Nebula.NET

Endurece tu código .NET en minutos — empieza con la edición gratuita.