Blog · Problemas resueltos

Cómo añadir un nuevo plan de suscripción Stripe a una aplicación PHP

El cliente necesitaba un enlace mensual de 90 €, pero la aplicación solo reconocía los planes configurados previamente.

Cómo añadir un nuevo plan de suscripción Stripe a una aplicación PHP

Una aplicación generaba enlaces de Stripe Checkout para varios planes mensuales. El cliente necesitaba una nueva suscripción de 90 €, pero no recordábamos cómo se habían creado los enlaces anteriores. Antes de modificar código, estudié el recorrido completo.

El importe no se definía en la URL

La aplicación no aceptaba cualquier cantidad enviada como parámetro. Eso habría permitido manipular precios. Cada plan público se correspondía con un identificador price_... creado previamente en Stripe.

El enlace solo enviaba una clave interna, por ejemplo plan-6. El servidor la validaba contra una lista privada y utilizaba el identificador real para crear la sesión de Checkout.

El proceso correcto

  1. Abrir el producto correspondiente en Stripe.
  2. Crear un precio de 90 €, EUR, recurrente y mensual.
  3. Copiar el identificador del precio.
  4. Añadirlo al mapa privado de planes de la aplicación.
  5. Generar el enlace utilizando únicamente la clave interna.
  6. Completar una prueba y revisar el webhook.

Por qué utilizo un mapa cerrado

Evita que alguien modifique el importe desde el navegador. También permite retirar un plan, cambiar su nombre visible o mantener distintos precios para un mismo producto sin exponer secretos.

Checkout no termina el trabajo

La aplicación solicitaba nombre, documento y datos de facturación. Después del pago, el webhook debe confirmar la suscripción de forma independiente. No conviene confiar únicamente en la página de éxito, porque el usuario puede cerrarla o abrirla manualmente.

Qué verifico al añadir un plan

  • Moneda, periodicidad e impuestos.
  • Entorno de pruebas frente a producción.
  • Estado de la suscripción después del webhook.
  • Correos y portal de cliente.
  • Qué sucede con impagos, cancelaciones y reintentos.

La lección

Un enlace de pago parece una cadena de texto, pero representa reglas comerciales y estados posteriores. Documentar la relación entre producto, precio, plan interno y webhook evita depender de la memoria la próxima vez.

Si necesitas integrar pagos o suscripciones en una aplicación, puedo diseñar el flujo completo, no solo el botón de Checkout.

¿Quieres valorar nuestro artículo?