Integrar Comercio en Mi App
Usa el SDK de Proyecta para crear clientes, iniciar checkouts, restringir funciones y cancelar suscripciones desde el código de tu app.
Una vez que hayas conectado Stripe y creado un producto, integras el comercio en tu app mediante el recurso SDK proyecta.commerce. Las cuatro operaciones más comunes son: crear un cliente, iniciar un checkout, verificar acceso a funciones y cancelar una suscripción.
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });1. Crear un cliente
Sección titulada «1. Crear un cliente»Un cliente es la entidad facturable en tu app — generalmente un usuario, una organización o un proyecto. Créalo en cuanto se cree la entidad correspondiente en tu base de datos y guarda el id devuelto para poder hacer referencia al cliente en checkouts y verificaciones de acceso.
const customer = await proyecta.commerce.customers.create({ email: 'alice@example.com', name: 'Alice Liddell',});
await db.users.update({ id: userId, proyectaCustomerId: customer.id });También puedes pasar una dirección de facturación (line1, line2, city, state, postal_code, country) al momento de la creación o mediante customers.update().
2. Iniciar un checkout
Sección titulada «2. Iniciar un checkout»commerce.checkout() crea una sesión de checkout hospedada en Stripe y devuelve una URL a la que redirigir al cliente. Después del pago, Stripe redirige al cliente a tu success_url.
const { url } = await proyecta.commerce.checkout({ customer_id: customer.id, line_items: [{ variant_id: 'var_pro_monthly', quantity: 1 }], success_url: 'https://myapp.com/welcome', cancel_url: 'https://myapp.com/pricing',});
return Response.redirect(url);Se admiten múltiples line_items. Para suscripciones, quantity representa la cantidad de asientos.
3. Verificar acceso a funciones
Sección titulada «3. Verificar acceso a funciones»Antes de permitir que un cliente use una función premium, llama a commerce.check() para verificar que tenga acceso:
const { has_access } = await proyecta.commerce.check({ customer_id: customer.id, resource_id: 'feat_pro_features',});
if (!has_access) { return Response.json({ error: 'Upgrade required' }, { status: 402 });}Esta es la forma recomendada de restringir contenido premium. Consulta Productos y Funciones para conocer el modelo de funciones y permisos.
4. Cancelar una suscripción
Sección titulada «4. Cancelar una suscripción»await proyecta.commerce.cancel({ customer_id: customer.id, subscription_id: 'sub_123', cancellation_timing: 'at_billing_period_end', // or 'immediate'});Por defecto, el cliente mantiene el acceso hasta el final del período de facturación.
Deja que la IA lo configure todo
Sección titulada «Deja que la IA lo configure todo»No necesitas escribir esto a mano. Algunos prompts comunes:
"Create a Proyecta customer when a user signs up. Store the proyecta_customer_id on the user record.""Build a /pricing page that shows my Proyecta products and starts a checkout when a button is clicked.""Gate the /admin route — only allow users whose Proyecta customer has access to feat_admin.""When a user clicks Cancel Subscription, call proyecta.commerce.cancel with at_billing_period_end."