Entender Productos, Precios y Clientes en Stripe

Video
25 min~4 min lectura

Reproductor de video

Concepto clave

En Stripe, los Productos, Precios y Clientes son los tres pilares fundamentales para construir cualquier sistema de suscripciones y facturación. Piensa en ellos como los componentes basicos de una tienda digital: el producto es lo que vendes (como "Suscripcion Premium"), el precio define cuanto cuesta y con que frecuencia (como "$20 mensuales"), y el cliente es quien lo compra.

La separacion entre Producto y Precio es crucial. Un mismo producto puede tener multiples precios: por ejemplo, tu "Suscripcion Premium" podria tener un precio mensual de $20, otro anual de $200, y otro de prueba de $5 por la primera semana. Esto te permite flexibilidad sin duplicar productos. Los clientes, por otro lado, son entidades que pueden tener multiples metodos de pago, suscripciones activas y facturas historicas.

Como funciona en la practica

Imagina que estas construyendo una plataforma de cursos online. Primero, defines un producto llamado "Acceso Completo a Cursos". Luego, creas dos precios para ese producto: uno de $30 al mes (recurrente) y otro de $300 al ano (tambien recurrente). Cuando un usuario se registra, creas un cliente en Stripe asociado a su email. Finalmente, cuando elige un plan, creas una suscripcion vinculando al cliente con el precio seleccionado.

Paso a paso:

  1. Crea un producto en el Dashboard de Stripe o via API.
  2. Agrega precios a ese producto, especificando moneda, monto y intervalo (mensual, anual, etc.).
  3. Cuando un usuario se registra en tu app, crea un cliente en Stripe con su informacion.
  4. Usa el ID del cliente y el ID del precio para iniciar una suscripcion.

Codigo en accion

Crear un producto y precio con la API de Stripe (Node.js):

// Antes: Crear producto y precio por separado (menos eficiente)
const stripe = require('stripe')('sk_test_...');

// Crear producto
const product = await stripe.products.create({
  name: 'Suscripcion Premium',
  description: 'Acceso a todas las funciones premium.',
});

// Luego crear precio vinculado
const price = await stripe.prices.create({
  product: product.id,
  unit_amount: 2000, // $20.00 en centavos
  currency: 'usd',
  recurring: { interval: 'month' },
});

console.log('Producto ID:', product.id);
console.log('Precio ID:', price.id);

Crear un cliente y suscripcion:

// Despues: Flujo completo con cliente
// Crear cliente
const customer = await stripe.customers.create({
  email: '[email protected]',
  name: 'Juan Perez',
});

// Crear suscripcion usando el ID del cliente y del precio
const subscription = await stripe.subscriptions.create({
  customer: customer.id,
  items: [
    { price: price.id }, // Usa el precio creado anteriormente
  ],
});

console.log('Cliente ID:', customer.id);
console.log('Suscripcion ID:', subscription.id);

Errores comunes

  • Crear un nuevo producto por cada variante de precio: Esto lleva a duplicacion y dificulta la gestion. En su lugar, usa un solo producto con multiples precios.
  • No validar la moneda del precio: Asegurate de que la moneda del precio coincida con la configuracion de tu cuenta Stripe para evitar errores de pago.
  • Olvidar manejar webhooks al crear clientes: Los eventos como customer.created deben ser procesados para mantener sincronizada tu base de datos.
  • Usar emails duplicados para clientes: Stripe permite emails duplicados, pero puede causar confusion. Considera usar un identificador unico interno.

Checklist de dominio

  1. Puedo explicar la diferencia entre un Producto y un Precio en Stripe.
  2. He creado al menos un producto con dos precios diferentes usando la API.
  3. Se como crear un cliente y asociarlo a una suscripcion.
  4. Entiendo como los webhooks notifican cambios en clientes (ej., customer.updated).
  5. Puedo listar todos los precios de un producto especifico.
  6. Se actualizar la informacion de un cliente, como su email o metodo de pago por defecto.
  7. He manejado un caso donde un cliente tiene multiples suscripciones activas.

Implementa un flujo basico de suscripcion con Stripe

En este ejercicio, crearas un sistema simple que simule el registro de un usuario y la activacion de una suscripcion usando la API de Stripe. Sigue estos pasos:

  1. Configura un entorno de prueba con Node.js y la libreria stripe. Usa la clave de prueba sk_test_... (puedes obtenerla en el Dashboard de Stripe).
  2. Crea un producto llamado "Plan Basico" con una descripcion adecuada.
  3. Agrega dos precios a ese producto: uno mensual de $10 y otro anual de $100. Ambos deben ser recurrentes.
  4. Simula la creacion de un cliente con datos ficticios (nombre, email).
  5. Crea una suscripcion para ese cliente usando el precio mensual.
  6. Verifica en el Dashboard de Stripe que el cliente y la suscripcion aparecen correctamente.

Entrega el codigo completo y capturas de pantalla del Dashboard mostrando el producto, precios, cliente y suscripcion.

Pistas
  • Usa stripe.products.create, stripe.prices.create, stripe.customers.create y stripe.subscriptions.create en orden.
  • Recuerda que los montos en Stripe estan en centavos (ej., $10 = 1000).
  • Si tienes errores, revisa que los IDs de producto y precio esten correctamente vinculados.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.