T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/public_html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/public_html/ESSENTIAL_SUBSCRIPTION_SETUP.md
# Essential Subscription Package - Implementation Complete ✅

## What Was Implemented

### 1. Database Setup ✅
- **File**: `create_subscription_tables.php`
- **Tables Created**:
  - `user_subscriptions` - Tracks active subscriptions
  - `monthly_track_usage` - Tracks monthly track creation limits
- **Users Table Updated**: Added `essential` to plan ENUM, added `stripe_customer_id` column

### 2. Track Creation Limit Check ✅
- **File**: `create_music.php` (modified)
- **Functionality**: 
  - Checks monthly limit before allowing track creation
  - Blocks creation if limit reached
  - Increments usage after successful creation
  - Works alongside existing credit system

### 3. Subscription Signup ✅
- **File**: `subscribe_essential.php`
- **Features**:
  - Stripe Checkout integration
  - Customer creation/retrieval
  - Subscription creation

### 4. Subscription Management ✅
- **Files**: 
  - `manage_subscription.php` - User-facing management
  - `admin_includes/subscription_management.php` - Admin panel
- **Features**:
  - View subscription status
  - View monthly usage
  - Cancel subscription
  - Admin overview of all subscriptions

### 5. Webhook Handlers ✅
- **File**: `webhooks/stripe.php` (modified)
- **Events Handled**:
  - `customer.subscription.created` - Creates subscription record
  - `customer.subscription.updated` - Updates subscription, resets limits on renewal
  - `customer.subscription.deleted` - Cancels subscription

### 6. Monthly Reset Cron ✅
- **File**: `cron/reset_monthly_limits.php`
- **Functionality**: Resets monthly track usage on 1st of each month
- **Cron Setup**: `0 0 1 * *` (runs at midnight on 1st of each month)

### 7. Helper Functions ✅
- **File**: `utils/subscription_helpers.php`
- **Functions**:
  - `hasActiveSubscription()` - Check if user has active subscription
  - `getMonthlyTrackUsage()` - Get/create monthly usage record
  - `canCreateTrack()` - Check if user can create track
  - `incrementMonthlyTrackUsage()` - Increment usage counter
  - `getSubscriptionInfo()` - Get subscription details

## Next Steps (Required)

### 1. Run Database Setup
Visit: `https://soundstudiopro.com/create_subscription_tables.php`
- This will create all necessary tables and update the users table

### 2. Create Stripe Product & Price
1. Go to Stripe Dashboard → Products
2. Create new Product:
   - **Name**: "Essential Plan"
   - **Description**: "5 tracks per month subscription"
3. Create Price:
   - **Type**: Recurring
   - **Billing Period**: Monthly
   - **Price**: $5.00 USD
   - **Metadata** (optional): `plan_name: essential`
4. **Copy the Price ID** (starts with `price_`)

### 3. Update Subscription Page
Edit `subscribe_essential.php` line ~20:
```php
$stripe_price_id = 'price_YOUR_PRICE_ID_HERE'; // Replace with actual Price ID
```

### 4. Configure Webhook
In Stripe Dashboard → Webhooks:
- Ensure these events are enabled:
  - `customer.subscription.created`
  - `customer.subscription.updated`
  - `customer.subscription.deleted`
- Webhook URL: `https://soundstudiopro.com/webhooks/stripe.php`

### 5. Setup Cron Job
Add to your server's crontab:
```bash
0 0 1 * * /usr/bin/php /home/gositeme/domains/soundstudiopro.com/public_html/cron/reset_monthly_limits.php
```

Or if you prefer web-based cron:
- Set up a cron job that calls: `https://soundstudiopro.com/cron/reset_monthly_limits.php?cron_key=YOUR_SECRET_CRON_KEY`
- **IMPORTANT**: Change `YOUR_SECRET_CRON_KEY` to a secure random string

### 6. Test the System
1. Create a test subscription
2. Try creating tracks (should work up to 5)
3. Try creating 6th track (should be blocked)
4. Check admin panel → Subscriptions tab

## Package Details

- **Name**: Essential Plan
- **Price**: $5/month
- **Tracks**: 5 per month
- **Reset**: 1st of each month
- **Cancellation**: Anytime (remains active until period end)

## Files Created/Modified

### New Files:
- `create_subscription_tables.php`
- `subscribe_essential.php`
- `subscription_success.php`
- `manage_subscription.php`
- `utils/subscription_helpers.php`
- `cron/reset_monthly_limits.php`
- `admin_includes/subscription_management.php`

### Modified Files:
- `create_music.php` - Added monthly limit check
- `webhooks/stripe.php` - Added subscription handlers
- `admin.php` - Updated subscriptions tab label

## Admin Panel Access

- **Tab**: "Subscriptions" (was "Credits")
- **Location**: Admin Panel → Subscriptions
- **Features**:
  - View all subscriptions
  - Filter by status/plan
  - View monthly usage
  - Statistics dashboard

## User-Facing Pages

- **Signup**: `/subscribe_essential.php`
- **Success**: `/subscription_success.php`
- **Management**: `/manage_subscription.php`

## Notes

- Existing credit-based system continues to work
- Subscription users bypass credit checks
- Monthly limits reset automatically
- Webhooks handle subscription lifecycle automatically
- All subscription data is logged for debugging


CasperSecurity Mini