# WP Digital Download

A comprehensive WordPress plugin for creating a digital download marketplace where creators can sell digital products with PayPal integration.

## Features

### Core Functionality
- **Custom Post Type**: Products with rich metadata
- **User Roles**: Separate roles for customers and creators
- **File Management**: Secure file upload and protection
- **PayPal Integration**: Complete payment processing
- **Download Protection**: Secure, time-limited downloads
- **Watermarking**: Automatic watermarking for images and PDFs
- **Purchase History**: Customer account management
- **Admin Dashboard**: Complete order and sales management

### Key Components

#### Custom Post Types
- **wpdd_product**: Digital products with pricing, files, and settings
- **Product Categories & Tags**: Organization and filtering
- **Creator Attribution**: Products linked to their creators

#### User Management
- **Digital Customer Role**: Purchase and download permissions
- **Digital Creator Role**: Product management permissions
- **Admin Capabilities**: Full system management

#### Payment Processing
- **PayPal Integration**: Sandbox and live modes
- **Free Products**: No-payment downloads
- **Guest Checkout**: Optional account creation
- **Order Management**: Complete transaction tracking

#### File Protection
- **Protected Directory**: Files stored outside web root access
- **Secure Downloads**: Token-based download links
- **Download Limits**: Configurable per product
- **Expiry Dates**: Time-limited access

#### Watermarking
- **Image Watermarking**: PNG, JPG, GIF support
- **PDF Watermarking**: Text overlay on PDF files
- **Dynamic Content**: Customer info in watermarks
- **Configurable Settings**: Per-product control

## Installation

1. Upload the plugin files to `/wp-content/plugins/wp-digital-download/`
2. Activate the plugin through the WordPress admin
3. Configure PayPal settings in Digital Products > Settings
4. Create your first product
5. Add the shop shortcode `[wpdd_shop]` to a page

## Configuration

### PayPal Setup
1. Create a PayPal Developer account
2. Create a new application
3. Get Client ID and Secret
4. Configure in Settings > PayPal Settings

### Pages Setup
The plugin automatically creates these pages:
- **Shop**: `[wpdd_shop]` - Product listing
- **Checkout**: `[wpdd_checkout]` - Payment processing
- **My Purchases**: `[wpdd_customer_purchases]` - Customer downloads
- **Thank You**: `[wpdd_thank_you]` - Order confirmation

## Shortcodes

### Main Shortcodes
- `[wpdd_shop]` - Display product storefront
- `[wpdd_customer_purchases]` - Customer purchase history
- `[wpdd_checkout]` - Checkout form
- `[wpdd_thank_you]` - Thank you page
- `[wpdd_product id="123"]` - Single product display

### Shop Shortcode Options
```
[wpdd_shop columns="3" per_page="12" category="design" orderby="date" order="DESC" show_filters="yes"]
```

## Database Structure

### Tables Created
- `wp_wpdd_orders` - Purchase records
- `wp_wpdd_downloads` - Download tracking
- `wp_wpdd_download_links` - Secure download tokens

### Key Meta Fields
- `_wpdd_price` - Product price
- `_wpdd_sale_price` - Sale price
- `_wpdd_is_free` - Free product flag
- `_wpdd_files` - Associated files
- `_wpdd_download_limit` - Download restrictions
- `_wpdd_download_expiry` - Access duration
- `_wpdd_enable_watermark` - Watermark settings
- `_wpdd_sales_count` - Sales tracking

## File Structure

```
wp-digital-download/
├── wp-digital-download.php          # Main plugin file
├── includes/                        # Core functionality
│   ├── class-wpdd-install.php      # Installation routines
│   ├── class-wpdd-post-types.php   # Custom post types
│   ├── class-wpdd-roles.php        # User roles
│   ├── class-wpdd-metaboxes.php    # Product editing
│   ├── class-wpdd-shortcodes.php   # Frontend display
│   ├── class-wpdd-paypal.php       # Payment processing
│   ├── class-wpdd-download-handler.php # File delivery
│   ├── class-wpdd-customer.php     # Customer management
│   ├── class-wpdd-orders.php       # Order processing
│   ├── class-wpdd-file-protection.php # Security
│   ├── class-wpdd-watermark.php    # Image processing
│   └── class-wpdd-ajax.php         # AJAX handlers
├── admin/                          # Admin interface
│   ├── class-wpdd-admin.php       # Admin pages
│   └── class-wpdd-settings.php    # Configuration
└── assets/                         # Frontend resources
    ├── css/
    │   ├── frontend.css           # Public styling
    │   └── admin.css              # Admin styling
    └── js/
        ├── frontend.js            # Public scripts
        ├── admin.js               # Admin scripts
        └── paypal.js              # Payment integration
```

## Hooks & Filters

### Actions
- `wpdd_order_completed` - Fired when order is completed
- `wpdd_download_started` - Before file delivery
- `wpdd_customer_registered` - New customer account

### Filters
- `wpdd_product_price` - Modify displayed price
- `wpdd_download_url` - Customize download URLs
- `wpdd_watermark_text` - Modify watermark content
- `wpdd_email_content` - Customize email templates

## Security Features

### File Protection
- Files stored in protected directory with .htaccess rules
- Token-based download authentication
- Time-limited access links
- IP and user agent logging

### Input Validation
- All user inputs sanitized
- Nonce verification on forms
- Capability checks for admin functions
- SQL injection prevention

### Payment Security
- PayPal webhook verification
- Transaction ID tracking
- Duplicate payment prevention
- Secure credential storage

## Customization

### Template Override
Create templates in your theme:
```
your-theme/
└── wpdd-templates/
    ├── single-product.php
    ├── shop.php
    └── checkout.php
```

### CSS Customization
Override default styles:
```css
.wpdd-product-card {
    /* Your custom styles */
}
```

### Adding Payment Methods
Extend payment options by hooking into:
```php
add_action('wpdd_payment_methods', 'add_stripe_payment');
```

## Requirements

- WordPress 5.0+
- PHP 7.4+
- MySQL 5.6+
- cURL extension
- GD library (for watermarking)

## Changelog

### Version 1.0.0
- Initial release
- PayPal integration
- File protection system
- Watermarking capabilities
- Customer management
- Admin dashboard

## Support

For support and feature requests, please create an issue in the GitHub repository.

## License

This plugin is licensed under the GPL v2 or later.

---

**Note**: This plugin handles financial transactions. Always test thoroughly in a development environment before deploying to production.