# Despliegue en Hostinger (cPanel) — ERP Agua + Trial + Stripe Esta guía asume que vas a publicar el proyecto PHP en Hostinger con **cPanel** (Apache + PHP) y que quieres que Stripe funcione en **HTTPS**. ## 1) Dónde subir el proyecto Para publicarlo **en la raíz del dominio**: - Sube TODO el contenido del proyecto a: `public_html/` - Resultado: el sistema queda en `https://tudominio.com/` ## 2) Configurar la base de datos MySQL En cPanel: 1. **MySQL Databases** → crea una base de datos y un usuario. 2. Asigna el usuario a la base de datos con **ALL PRIVILEGES**. 3. En **phpMyAdmin**, importa tu estructura/datos iniciales si aplica. Luego, edita el archivo de conexión: - `conexion.php` - Ajusta `$DB_HOST`, `$DB_NAME`, `$DB_USER`, `$DB_PASS` - Ajusta también `$host`, `$dbname`, `$user`, `$pass` (PDO) Notas típicas de Hostinger/cPanel: - `DB_HOST` suele ser `localhost` - `DB_NAME` y `DB_USER` suelen venir con prefijo (ej. `usuario_agua`). ## 3) Vendor/Composer (Stripe SDK) Stripe requiere `vendor/`. ### Alternativa 1: Subir `vendor/` desde tu PC (más simple) En tu máquina local (Windows/XAMPP): - Ejecuta: - `composer install --no-dev --optimize-autoloader` - Sube al hosting: - la carpeta `vendor/` - `composer.json` y `composer.lock` ### Alternativa 2: Ejecutar Composer en el hosting Si tu cPanel tiene **Terminal** (o SSH habilitado): - Entra a la carpeta donde subiste el proyecto (ej. `public_html`) - Ejecuta: - `composer install --no-dev --optimize-autoloader` ## 4) Confirmar routing (URLs sin .php) El proyecto usa `.htaccess` para reescritura (ej. `/login` → `login.php`). - Verifica que el archivo `.htaccess` esté en la misma carpeta donde está `index.php`. - Prueba: - `https://tudominio.com/login` - `https://tudominio.com/precios` Si Hostinger no aplica reescritura: - Revisa en cPanel que Apache tenga `mod_rewrite` habilitado (normalmente sí). - Como fallback, puedes acceder con `.php` (ej. `login.php`). ## 5) SSL/HTTPS En cPanel: 1. **SSL/TLS Status** → habilita/instala AutoSSL para el dominio. 2. Activa el redirect a HTTPS (si aparece opción como “Force HTTPS Redirect”). Stripe Webhooks en producción requieren HTTPS. ## 6) Configurar Stripe (keys, price IDs, base URL) Edita: - `pago_config.php` Valores a poner en producción: - `PDA_APP_BASE_URL`: - `https://tudominio.com` - `PDA_STRIPE_SECRET_KEY`: `sk_test_...` o `sk_live_...` - `PDA_STRIPE_WEBHOOK_SECRET`: `whsec_...` - `PDA_STRIPE_PRICE_BASIC30`: Price recurrente mensual del plan US$30 - `PDA_STRIPE_PRICE_PRO70`: Price recurrente mensual del plan US$70 Recomendación de operación: - Primero configura **Stripe Test Mode** y valida el flujo. - Cuando todo funcione, cambias a Live keys y Live prices. ## 7) Configurar el Webhook en Stripe En Stripe Dashboard → Developers → Webhooks: - Endpoint URL: - Recomendado (sin depender de rewrite): - `https://tudominio.com/pago_webhook.php` - Events: - `checkout.session.completed` Copia el **Signing secret** (whsec_...) y colócalo en `PDA_STRIPE_WEBHOOK_SECRET`. ## 8) Instalar/asegurar tablas de suscripción Ejecuta una vez en navegador (mientras estás logueado o como admin, idealmente): - `https://tudominio.com/instalar_suscripciones.php` Esto crea/verifica las tablas `pda_suscripciones` y `pda_stripe_checkout`. ## 9) Prueba end-to-end (Test Mode) 1. Abre el sitio público: - `https://tudominio.com/precios` 2. Click “30 días gratis” → registra empresa + usuario. 3. Para probar rápido expiración: - puedes editar en BD `pda_suscripciones.trial_ends_at` a una fecha pasada. 4. Entra al sistema → debe mandar a `suscripcion`. 5. Elige plan/tipo/historial → pagar. 6. Confirma: - El webhook debe marcar la suscripción como activa en `pda_suscripciones`. - Debe dejarte entrar a `index`. ## 10) Checklist de problemas comunes - Webhook no llega: - endpoint debe ser HTTPS y accesible públicamente - verifica `PDA_STRIPE_WEBHOOK_SECRET` - Redirects con base URL incorrecta: - revisa `PDA_APP_BASE_URL` - Error de autoload/vendor: - confirma que `vendor/autoload.php` existe en el server - Reescritura no funciona: - confirma `.htaccess` junto a `index.php` - prueba con `.php` directo