Configuración

Esto se hace una sola vez. No hace falta saber programar.

Verificando…

  • STRIPE_SECRET_KEY Tu clave secreta de Stripe. Mejor si usás una clave restringida con los permisos mínimos: escribir Checkout Sessions y leer/crear cupones.
  • SHOPIFY_STORE_DOMAIN El dominio interno de tu tienda, algo como tu-tienda.myshopify.com.
  • SHOPIFY_CLIENT_ID El Client ID de tu app en el nuevo Shopify Dev Dashboard.
  • SHOPIFY_CLIENT_SECRET El Client secret de esa misma app. Con estos dos datos el servidor pide un token temporal cada vez que lo necesita, y se renueva solo.
  • STRIPE_WEBHOOK_SECRET Se obtiene al registrar el webhook en Stripe (paso 5).
  • PRINTIFY_API_TOKEN Token de Printify (solo lectura de tarifas). Se usa para cotizar el envío real de la tienda SLOW STORE antes de cobrar. No se crean órdenes en Printify desde acá.

Por seguridad, las claves se guardan en el servidor y nunca se muestran acá ni llegan al navegador de tus clientes.

Autorizar la app en Shopify (una sola vez)

Estado: ⬜️ todavía sin autorizar. En el Shopify Dev Dashboard, dentro de tu app, agregá esta Redirect URL exacta:

/api/public/shopify/callback

Los permisos (scopes) deben ser read_orders,write_orders,read_products. Después tocá el botón de abajo, iniciá sesión con tu cuenta de Shopify y aceptá la instalación. El permiso queda guardado de forma segura en el servidor.

Autorizar con Shopify

Envío real de Printify

El botón del tema ya no va directo a Stripe: lleva al paso de entrega /checkout. Ahí el cliente carga nombre, email, país, dirección, ciudad, estado/provincia, código postal y teléfono opcional.

  • El servidor verifica el carrito contra Shopify, toma el SKU de cada variante y le pide a Printify (tienda SLOW STORE, id 27305970) las tarifas reales.
  • Se muestran solo los métodos que Printify devuelve —Standard, Economy, Priority, Express o Printify Express— con su importe. Standard viene elegido por defecto.
  • Al continuar, Stripe cobra exactamente ese importe en dólares. Si Printify no devuelve una tarifa válida, el pago no se abre y el cliente ve un mensaje claro en inglés.
  • Después del pago, el webhook crea la orden pagada en Shopify con la dirección y la línea de envío elegida, y Printify la produce y despacha como siempre.
  1. Paso 1 — Copiá tu clave de Stripe

    Entrá a dashboard.stripe.com/apikeys. Lo ideal es crear una clave restringida (Restricted key) con permiso de escritura en Checkout Sessions y lectura/escritura en Coupons. Si te resulta difícil, usá la clave secreta común que empieza con sk_test_ para probar.

  2. Paso 2 — Copiá el Client ID y el Client secret de tu app de Shopify

    En el Shopify Dev Dashboard abrí tu app y entrá a Settings / Client credentials. Copiá el Client ID y el Client secret. Los permisos de la app deben ser read_orders,write_orders,read_products. El token de acceso no se copia a mano: se obtiene una sola vez con el botón “Autorizar con Shopify” de arriba y queda guardado en el servidor.

  3. Paso 3 — Pegá los datos en las claves seguras

    En Lovable abrí Project Settings → Secrets y agregá, uno por uno, los nombres de la lista de arriba con sus valores. Nunca pegues estas claves en el tema de Shopify ni en un correo.

  4. Paso 4 — Publicá la app

    Tocá “Publish” en Lovable y anotá la dirección pública que te queda.

  5. Paso 5 — Registrá el webhook de Stripe

    En Stripe entrá a Developers → Webhooks → Add endpoint. Como URL poné la dirección de tu app publicada seguida de /api/public/stripe-webhook. Elegí únicamente el evento checkout.session.completed. Guardá, copiá el Signing secret (empieza con whsec_) y agregalo como STRIPE_WEBHOOK_SECRET en Secrets. Publicá de nuevo.

  6. Paso 6 — Probá

    Recargá esta página (el recuadro de arriba debería ponerse verde) y abrí el carrito de prueba. Con la clave de prueba podés pagar con la tarjeta 4242 4242 4242 4242, cualquier fecha futura y 3 dígitos.

Sobre la promo “2 remeras, 10% off”: el descuento se decide en el servidor mirando el tipo de producto, las etiquetas y el título en Shopify. Si un producto no se puede identificar claramente como remera, no se aplica descuento. Para asegurarte, poné el tipo de producto T-Shirt o la etiqueta tee en tus remeras.

Pedidos en Shopify: cuando Stripe confirma un pago (y solo entonces), la app crea automáticamente el pedido en Shopify como pagado, con las variantes, cantidades, email y dirección de envío del cliente. Así Printify lo recibe y lo procesa como cualquier otro pedido. Cada pedido queda marcado con la etiqueta stripe-session-…, que evita duplicados si Stripe reintenta el aviso. Para esto la app de Shopify necesita el permiso write_orders además de read_products.

Códigos de descuento: en la página de pago de Stripe aparece el campo “Add promotion code”, así que tus clientes pueden escribir cupones válidos. Para crear uno nuevo entrá a Stripe en Products → Coupons, creá el cupón y después tocá Create promotion code para elegir el texto que escribe el cliente (por ejemplo VERANO10). Ojo: cuando el carrito ya recibe la promo automática de “2 remeras, 10% off”, Stripe no permite sumar otro código en la misma compra, así que en ese caso el campo no se muestra.

Cuando quieras cobrar de verdad, repetí el paso 3 con la clave sk_live_ y registrá un webhook nuevo en el modo real de Stripe.