~/VibeHandbook
PDF gratis

Capítulo 16 · 04

Conectando los pagos

Si quieres cobrar, el camino estándar para un creador en solitario es Stripe (o Lemon Squeezy / Paddle si quieres que ellos gestionen el impuesto sobre las ventas por ti — como , se quedan con una comisión mayor pero hacen desaparecer el dolor de cabeza fiscal). La mecánica es repetitiva y está bien documentada, lo que la hace ideal para delegar. Las piezas que necesitas:

  • Un flujo de checkout — Stripe Checkout es el más rápido; te entrega una página de pago alojada por ellos para que nunca toques datos de tarjeta en bruto.
  • Piensa en un como la empresa de pagos llamando a tu app en el instante en que se completa una venta, en lugar de que tu app tenga que estar preguntando "¿ya se completó?". Un webhook es exactamente eso: un (una en tu servidor) que el proveedor de pagos llama para que tu app sepa cuándo un pago realmente tuvo éxito. Esta es la parte que los principiantes se saltan y luego se preguntan por qué los pedidos nunca se completan. La redirección de vuelta a tu sitio puede cerrarse, bloquearse o falsificarse; el webhook es la fuente de verdad servidor a servidor. Nunca confíes solo en la redirección; confía en el webhook.
  • Una forma de almacenar los derechos — marcar al usuario como pagado en tu , para que un refresco de página o un dispositivo nuevo sigan viendo lo que compró.

La idea clave es cuál flecha confías. La redirección del usuario de vuelta a tu sitio puede perderse o falsificarse; el webhook es la línea servidor a servidor que realmente desbloquea el producto:

 ┌──────┐  1. click Buy   ┌───────────┐
 │ USER │────────────────▶│  YOUR APP │
 └──────┘                 └─────┬─────┘
    ▲                           │ 2. create checkout session
    │                           ▼
    │                    ┌─────────────┐
    │  3. pay on hosted  │   STRIPE    │
    └───────────────────▶│   Checkout  │
       (card details)    └──────┬──────┘
                                │
          ┌─────────────────────┴─────────────────────┐
          │ 4a. redirect back        4b. WEBHOOK call  │
          │     (can be lost/faked)      (server→server,│
          ▼                              signed, trusted)▼
   ┌──────────────┐                          ┌────────────────────┐
   │ thank-you    │   ✗ do NOT unlock here   │ YOUR APP /webhook   │
   │ page (UI only)│                         │ verify signature →  │
   └──────────────┘                          │ mark user PAID  ✓   │
                                             └────────────────────┘

Pídele a la IA que estructure las tres piezas y que explique la verificación de la firma del webhook, ya que ese es el único paso sensible en cuanto a seguridad — sin ella, cualquiera que encuentre la URL de tu webhook podría falsificar un evento de "pago exitoso" y desbloquear tu producto gratis. Prueba todo en el modo de prueba de Stripe con sus números de tarjeta de prueba (4242 4242 4242 4242 es el famoso) antes de pasar a claves en vivo, y usa la de Stripe para reenviar eventos de webhook a tu máquina local y así poder verlos dispararse. No te saltes el ensayo general en modo de prueba. El primer dinero real que pase por tu app debería ser una transacción que ya has visto funcionar una docena de veces.

¿Lo quieres sin conexión?

Descarga el libro entero en PDF o EPUB — gratis.