Ir al contenido

  • Cobertura global con soporte para 135+ monedas
  • APIs bien documentadas con excelente DX
  • Facturación automática, gestión de impuestos y prevención de fraude
  • Herramientas de prueba robustas (Stripe CLI)
  1. Inicia sesión en Dashboard de Stripe
  2. Activa Modo de Prueba (toggle superior derecho)
  3. Ve a Developers → API keys
  4. Copia:
    • Secret key (sk_test_...) → va al backend
    • Publishable key (pk_test_...) → va al frontend (si aplica)

Solo estas dos son obligatorias:

app/.env.server
STRIPE_API_KEY=sk_test_51...
STRIPE_WEBHOOK_SECRET=whsec_... # Lo obtienes en el Paso 4

Los Price IDs de los planes ya no son variables de entorno requeridas — se gestionan desde el Admin Panel en /admin/pricing. Si los tienes del setup anterior, el seed los migra automáticamente.

Ventana de terminal
# Opcionales — solo para migración inicial desde .env a la DB
PAYMENTS_MONTHLY_SUBSCRIPTION_PLAN_ID=price_xxx
PAYMENTS_ANNUAL_SUBSCRIPTION_PLAN_ID=price_xxx
PAYMENTS_CREDITS_10_PLAN_ID=price_xxx

Crea un producto por cada plan en Product catalog → Products. Copia el price_xxx de cada uno.

ProductoTipoMontoIntervalo
Monthly SubscriptionRecurring$19.00month
Annual SubscriptionRecurring$190.00year
10 CreditsOne time$10.00

Planes de equipos (crear cuando vayas a activarlos)

Sección titulada «Planes de equipos (crear cuando vayas a activarlos)»
ProductoTipoMontoIntervalo
Team 10Recurring$99.00month
Team 50Recurring$399.00month
Team 100Recurring$699.00month
Team 10 AnnualRecurring$950.40year
Team 50 AnnualRecurring$3820.80year
Team 100 AnnualRecurring$6700.80year
Ventana de terminal
# Instalar Stripe CLI
brew install stripe/stripe-cli/stripe
stripe login
# Suscripción mensual
stripe products create --name="Monthly Subscription" --description="Acceso mensual a todos los cursos"
stripe prices create --product=prod_XXX --unit-amount=1900 --currency=usd --recurring[interval]=month
# Suscripción anual
stripe products create --name="Annual Subscription" --description="Acceso anual a todos los cursos"
stripe prices create --product=prod_YYY --unit-amount=19000 --currency=usd --recurring[interval]=year
# Pack de créditos (pago único)
stripe products create --name="10 Credits" --description="Pack de 10 créditos"
stripe prices create --product=prod_ZZZ --unit-amount=1000 --currency=usd
# Team 10 mensual
stripe products create --name="Team 10" --description="Hasta 10 usuarios"
stripe prices create --product=prod_AAA --unit-amount=9900 --currency=usd --recurring[interval]=month
Ventana de terminal
# En una terminal separada, mientras desarrollas
stripe listen --forward-to localhost:3001/payments/stripe-webhook
# Copia el whsec_... que imprime → STRIPE_WEBHOOK_SECRET en .env.server
  1. Stripe Dashboard → Developers → Webhooks → Add endpoint
  2. URL: https://tu-dominio.com/payments/stripe-webhook
  3. Eventos requeridos:
    • checkout.session.completed
    • customer.subscription.created
    • customer.subscription.updated
    • customer.subscription.deleted
    • invoice.payment_succeeded
    • invoice.payment_failed
  4. Copia el Signing secret (whsec_...) → variable de entorno de producción

Una vez creados los productos en Stripe, tienes tres opciones para vincularlos:

Opción A — Botón “Sync con Stripe” (recomendado)

Sección titulada «Opción A — Botón “Sync con Stripe” (recomendado)»
  1. Ve a /admin/pricing
  2. Clic en Editar en un plan (p.ej. monthly-subscription)
  3. Clic en Sync con Stripe
  4. El sistema crea el producto + precio en Stripe automáticamente y guarda el ID
  1. Ve a /admin/pricing → Editar el plan
  2. Pega el price_xxx en el campo Stripe Price ID
  3. Guarda

Opción C — Seed automático desde env vars

Sección titulada «Opción C — Seed automático desde env vars»
  1. Agrega los Price IDs en .env.server
  2. Ejecuta wasp db seed seedPricingPlans
  3. El seed migra los IDs del env a la base de datos

Abre app/src/payment/paymentProcessor.ts y asegúrate de que Stripe esté activo:

// Stripe activo (por defecto en TalentBricksAI)
export { stripePaymentProcessor as paymentProcessor } from "./stripe/paymentProcessor";
// Alternativas (comentadas por defecto)
// export { lemonSqueezyPaymentProcessor as paymentProcessor } from './lemonSqueezy/paymentProcessor';
// export { polarPaymentProcessor as paymentProcessor } from './polar/paymentProcessor';
EscenarioNúmero de tarjeta
Pago exitoso4242 4242 4242 4242
Pago rechazado4000 0000 0000 0002
Requiere 3D Secure4000 0025 0000 3155
Fondos insuficientes4000 0000 0000 9995

Fecha: cualquier fecha futura · CVC: cualquier 3 dígitos · ZIP: cualquier 5 dígitos

Más tarjetas: stripe.com/docs/testing

  1. wasp db start (terminal 1)
  2. wasp start (terminal 2)
  3. stripe listen --forward-to localhost:3001/payments/stripe-webhook (terminal 3)
  4. Ir a http://localhost:3000/pricing
  5. Comprar un plan con tarjeta de prueba 4242 4242 4242 4242
  6. Verificar en terminal 3 que el webhook checkout.session.completed se activó
  7. Verificar en /admin/users que el usuario tiene suscripción activa

En /admin/pricing, la columna Stripe muestra:

  • price_xxx en verde → plan listo para checkout
  • ⚠️ “No configurado” en amarillo → falta el Price ID, el checkout fallará

Ya está habilitado en el checkout (app/src/payment/stripe/checkoutUtils.ts):

automatic_tax: {
enabled: true;
}

Actívalo en tu cuenta: Stripe Dashboard → Settings → Tax.

También habilitados por defecto:

allow_promotion_codes: true;

Para crear códigos: Stripe Dashboard → Product catalog → Coupons → Promotion codes.

Permite a los usuarios gestionar su suscripción (cancelar, actualizar pago, ver facturas). Actívalo en: Stripe Dashboard → Settings → Billing → Customer portal.

El enlace ya está integrado en la página /account.

Configúralo al crear el precio en Stripe Dashboard o con CLI:

Ventana de terminal
stripe prices create \
--product=prod_XXX \
--unit-amount=1900 \
--currency=usd \
--recurring[interval]=month \
--recurring[trial_period_days]=14
  1. Verifica que stripe listen esté corriendo en una terminal
  2. Confirma que STRIPE_WEBHOOK_SECRET en .env.server sea el whsec_... que imprimió el CLI
  3. Revisa los logs del servidor: wasp start muestra los webhooks recibidos
  1. Ve a /admin/pricing y verifica que el plan tiene stripePriceId configurado (columna Stripe verde)
  2. Si está en amarillo → usa el botón Sync o pega el Price ID manualmente
  • Verifica que STRIPE_API_KEY esté en .env.server
  • Reinicia wasp start después de agregar la variable
  • El STRIPE_WEBHOOK_SECRET debe coincidir con el secret mostrado por stripe listen
  • Reinicia la app después de actualizar el secret
  1. Activa tu cuenta de Stripe — completa información del negocio y verificación de identidad
  2. Cambia a claves en vivo — Stripe Dashboard → Live Mode → Developers → API keys
    • Actualiza STRIPE_API_KEY=sk_live_... en producción
  3. Recrea los productos en Live Mode — los productos de test no existen en Live
  4. Actualiza los Price IDs — desde el Admin Panel en producción (/admin/pricing)
  5. Configura webhook de producción — apuntando a tu dominio real
  6. Prueba con una tarjeta real — haz un pago pequeño, verifica y reembolsa