Saltar al contenido
MARTINEZAI STUDIOS
CONTRABANDEdge of the Fold
LA COLECCIÓN DE REFERENCIA ORIGINAL

Integración Stripe y Firebase

Archivo de la web original

Conservado de la edición original. El equilibrio y las mecánicas pueden diferir de la edición actual. Las entradas narrativas pueden revelar acontecimientos de la historia.

Juego y material actuales ↗

Archivado (2026): Esta página documenta el stack de checkout web retirado. CONTRABAND vende hoy en Steam. Este sitio ya no vende epílogos ni soundtrack. La carpeta api/ queda como referencia, no como tienda activa.

En el prototipo web, había que demostrar compras en servidor, sincronizar entre dispositivos y permitir compras de invitado antes del registro. Stripe Checkout + Firestore + cuatro funciones Vercel lo resolvieron.

Hoy: Steam gestiona el comercio

Llaves, DLC, banda sonora, reembolsos y precios regionales viven en Steam. Este sitio es wiki/lore/prensa — sin botones “Comprar epílogo” ni flujo de desbloqueo Stripe para jugadores nuevos.

Contexto de producto: Filosofía de monetización. Lo técnico siguiente es solo historia.

Stack navegador (archivado)

Comportamiento circa 2024–2025 cuando /play existía. Tiempo pasado a propósito.

Requisitos

  • Verificación server-side
  • Sync cross-device
  • Tolerancia offline
  • Compras de invitado

SKUs: cuatro epílogos ($4,99), bundle ($12,99), cosméticos ocasionales en api/checkout.js.

Cuatro funciones Vercel

  • checkout.js — sesión Stripe Checkout
  • stripe-webhook.js — escribía entitlements en Firestore
  • verify-purchase.js — consulta + caché localStorage
  • link-purchase.js — vinculaba compras guest a UID Firebase

Modelo Firestore

Colección users con entitlements, guestTokens, purchaseHistory. Invitados en guestEntitlements hasta el link.

Flujo de compra

  1. Clic “Comprar epílogo” en el juego web.
  2. Redirect a checkout Stripe.
  3. Webhook + poll de verify-purchase al volver.
  4. Desbloqueo cuando Firestore confirmaba el SKU.

Caché vs autoridad

localStorage para UX offline; Firestore como fuente de verdad. Manipular localStorage no servía contenido pagado sin check servidor.

Trampas comunes

  • Carrera webhook → poll 30 s
  • Pérdida de token guest → recuperación por recibo Stripe
  • Webhooks sin firma → vulnerabilidad crítica

Qué sigue siendo útil

El patrón ledger servidor + caché cliente + nunca confiar en el navegador para gates de pago sigue válido. Stripe + Firebase + Vercel fue barato para el prototipo web; Steam es la tienda final en PC.