Portal para cambiar planes de suscripción
POST/payment/changePlans
Genera una URL para acceder al portal de facturación de Stripe y gestionar la suscripción actual.
Flujo técnico:
- Verifica autenticación del usuario
- Obtiene la compañía asociada al usuario
- Valida que exista una suscripción activa
- Verifica que la compañía tenga cuenta Stripe asociada
- Crea sesión en el portal de facturación de Stripe
- Devuelve URL para redireccionar al usuario
Validaciones:
- Usuario debe estar autenticado (JWT válido)
- Usuario debe pertenecer a una compañía válida
- La compañía debe tener cuenta Stripe asociada
- Debe existir una suscripción activa no expirada
- Parámetro returnUrl es obligatorio
Parámetros requeridos:
- returnUrl: URL a la que Stripe redirigirá después de gestionar la suscripción
Ejemplo de request:
{
"returnUrl": "https://app.cargoffer.com/payment/success"
}
Ejemplo de respuesta exitosa:
{
"url": "https://billing.stripe.com/session/xyz123"
}
Casos de error:
- 400 Bad Request:
- Falta parámetro returnUrl
- Suscripción no activa o expirada
- 401 Unauthorized:
- Token JWT inválido
- Usuario no tiene compañía asociada
- No hay cuenta Stripe configurada
- 500 Internal Server Error: Error al conectar con Stripe
Ejemplo de uso en frontend:
// Frontend: Acceder al portal de facturación
const accessBillingPortal = async (returnUrl) => {
try {
const response = await axios.post(
'/truckers/payment/changePlans',
{ returnUrl },
{ headers: { Authorization: `Bearer ${token}` } }
);
if (response.data.url) {
window.location.href = response.data.url; // Redirigir a Stripe
}
} catch (error) {
handleError(error);
}
};
Notas importantes:
- Permite cambiar/cancelar suscripción actual
- Muestra historial de pagos y facturas
- Requiere suscripción activa para funcionar
- La URL generada tiene validez limitada (30 min)
Request
Responses
- 200
- 400
- 401
URL del portal de facturación de Stripe
Solicitud incorrecta. Posibles causas:
- Falta parámetro returnUrl
- Suscripción no activa o expirada
No autorizado. Posibles causas:
- Token JWT inválido
- Usuario no tiene compañía asociada
- No hay cuenta Stripe configurada