Cita a partir de mañana
Agendar revisión
99 €
Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.
- Sesión de trabajo en directo contigo
- Diagnóstico del error y del riesgo real
- Te quedas con el arreglo aplicado
Stripe te da dos claves y solo una de ellas es un secreto. La publicable, que empieza por pk_, va en el navegador a propósito para que funcione el formulario de pago. La secreta, que empieza por sk_, permite cobrar, devolver dinero y leer los datos de tus clientes. Si la que está en tu código empieza por sk_, ese es el problema.
Esto no da la cara solo: tu app funciona igual de bien esté abierta o cerrada. La única forma de saberlo es mirar.
Solo leemos lo que tu app ya le entrega a cualquier visitante.
Porque hacer un cobro de verdad requiere la clave secreta, y la forma más corta de que un cobro funcione es llamar a Stripe directamente desde el navegador con ella. Funciona a la primera. La alternativa correcta, que es crear una función de servidor que haga la llamada, son bastantes más pasos y no siempre sale sola.
También ocurre al copiar del panel de Stripe, donde las dos claves están juntas, o al configurar las variables de entorno con el prefijo que las publica en el navegador. Ahí no hay ni siquiera una decisión: la variable estaba bien y el prefijo la sacó a la calle.
Conviene saber qué está en juego, sin dramatizar. Con una clave secreta se pueden emitir devoluciones hacia otra tarjeta, consultar el listado completo de tus clientes con sus correos y sus importes, y crear cobros. No vacía tu cuenta bancaria de golpe, pero sí puede sacarte dinero y desde luego expone datos de tus clientes que son responsabilidad tuya.
Stripe permite tener varias claves secretas activas a la vez, y eso hace que este arreglo se pueda hacer sin cortar los cobros ni un minuto. Aprovéchalo: es lo que distingue hacerlo con calma de hacerlo con la tienda cerrada.
Si al sacar la clave del navegador dejan de funcionar los cobros, es exactamente lo que tenía que pasar: significa que se estaban haciendo desde ahí. La solución no es devolverla, es mover esa llamada a un servidor.
Pégaselo tal cual al agente que escribió tu app. Está redactado para que te diga lo que ha hecho, no solo para que lo haga.
Prompt para pegarle a tu agente
En mi app ha acabado publicada una clave secreta de Stripe (empieza por sk_) en el código que llega al navegador. Necesito que hagas esto: 1. Búscala en todo el proyecto y dime en qué ficheros y con qué variable aparece, sin pegarme el valor completo. 2. Dime qué operaciones de Stripe se están haciendo desde el navegador con esa clave: cobros, devoluciones, consultas de clientes o lo que sea. 3. Crea una función de servidor por cada una de esas operaciones, de forma que el navegador solo pida "quiero pagar esto" y sea el servidor quien hable con Stripe con la clave secreta. El navegador debe quedarse únicamente con la clave publicable. 4. Comprueba si hay un endpoint de webhook de Stripe y si verifica la firma. Si no la verifica, corrígelo: sin esa comprobación cualquiera puede simular un pago. 5. Deja el .env.example indicando claramente qué clave va en el servidor y cuál puede ir en el navegador. No revoques ni cambies ninguna clave: la rotación la hago yo en el panel de Stripe, en un orden concreto para no cortar los cobros.
Cerrar una puerta abierta tiene un orden: primero se corta el acceso, después se comprueba en los registros si alguien entró, y solo entonces se despliega. Hacerlo al revés deja la app caída y borra el rastro de lo que pasó. Si prefieres no hacerlo solo, elige cuándo lo hacemos.
Cita a partir de mañana
99 €
Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.
Hoy, en cola prioritaria
199 €
Entras en la cola de hoy. Reservas hueco y lo dejamos resuelto en el día.
Marc Sala
IT Manager
No es un rating anónimo de un marketplace: es la persona que va a entrar en tu app. Reviso el código, encuentro qué falla y lo arreglo contigo delante.