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.
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.
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.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.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.
Paso 4 — Publicá la app
Tocá “Publish” en Lovable y anotá la dirección pública que te queda.
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 eventocheckout.session.completed. Guardá, copiá el Signing secret (empieza conwhsec_) y agregalo comoSTRIPE_WEBHOOK_SECRETen Secrets. Publicá de nuevo.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.