![]() 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/private_html/config/ |
<?php
/**
* Event Ticket Pricing Configuration
* Competitive with Eventbrite's pricing model
*
* Eventbrite charges:
* - Service fee: 3.7% + $1.79 per ticket
* - Payment processing: 2.9% per order
* - Total: ~6.6% + $1.79 per ticket
*
* Our competitive pricing:
* - Free plan: 2.5% + $0.99 per ticket (better than Eventbrite)
* - Pro plan: 2.0% + $0.99 per ticket (even better)
* - Enterprise: 1.5% + $0.99 per ticket (best rate)
*/
// Define config array
$event_pricing_config = [
// Fee structure: [percentage, fixed_fee_per_ticket]
'pricing_tiers' => [
'free' => [
'name' => 'Free Plan',
'service_fee_percentage' => 2.5, // 2.5% (vs Eventbrite's 3.7%)
'fixed_fee_per_ticket' => 0.99, // $0.99 (vs Eventbrite's $1.79)
'payment_processing_percentage' => 2.9, // Stripe's standard rate
'description' => 'Best value - lower fees than Eventbrite'
],
'starter' => [
'name' => 'Starter Plan',
'service_fee_percentage' => 2.2,
'fixed_fee_per_ticket' => 0.99,
'payment_processing_percentage' => 2.9,
'description' => 'Reduced fees for Starter members'
],
'pro' => [
'name' => 'Pro Plan',
'service_fee_percentage' => 2.0, // 2.0% (vs Eventbrite's 3.7%)
'fixed_fee_per_ticket' => 0.99,
'payment_processing_percentage' => 2.9,
'description' => 'Even lower fees for Pro members'
],
'premium' => [
'name' => 'Premium Plan',
'service_fee_percentage' => 1.8,
'fixed_fee_per_ticket' => 0.99,
'payment_processing_percentage' => 2.9,
'description' => 'Premium rates for Premium members'
],
'enterprise' => [
'name' => 'Enterprise Plan',
'service_fee_percentage' => 1.5, // Best rate
'fixed_fee_per_ticket' => 0.99,
'payment_processing_percentage' => 2.9,
'description' => 'Lowest fees for Enterprise members'
]
],
// Free events have no fees
'free_event_fee' => [
'service_fee_percentage' => 0,
'fixed_fee_per_ticket' => 0,
'payment_processing_percentage' => 0
],
// Fee payment options
'fee_payment_options' => [
'attendee_pays' => [
'name' => 'Attendee Pays Fees',
'description' => 'Fees are added to ticket price (default)',
'default' => true
],
'organizer_absorbs' => [
'name' => 'Organizer Absorbs Fees',
'description' => 'Fees are deducted from ticket revenue',
'default' => false
]
],
// Minimum ticket price (to cover fees)
'minimum_ticket_price' => 1.00,
// Comparison with Eventbrite
'eventbrite_comparison' => [
'eventbrite_service_fee' => 3.7,
'eventbrite_fixed_fee' => 1.79,
'eventbrite_payment_processing' => 2.9,
'our_advantage' => 'Lower service fees and fixed fees on all plans'
]
];
/**
* Get the pricing config (used internally by functions)
*/
function getEventPricingConfig() {
static $config = null;
if ($config === null) {
// Get config from global scope (set when file is included)
global $event_pricing_config;
if (isset($event_pricing_config)) {
$config = $event_pricing_config;
} else {
// Fallback: load it directly
$config = require __DIR__ . '/event_pricing.php';
}
}
return $config;
}
/**
* Calculate fees for a ticket sale
*
* @param float $ticket_price The ticket price
* @param string $user_plan User's subscription plan (free, starter, pro, etc.)
* @param bool $is_free_event Whether this is a free event
* @param bool $organizer_absorbs Whether organizer absorbs fees (vs attendee pays)
* @return array ['service_fee', 'payment_processing_fee', 'total_fees', 'organizer_receives']
*/
function calculateEventTicketFees($ticket_price, $user_plan = 'free', $is_free_event = false, $organizer_absorbs = false) {
$config = getEventPricingConfig();
// Free events have no fees
if ($is_free_event || $ticket_price == 0) {
return [
'service_fee' => 0,
'payment_processing_fee' => 0,
'total_fees' => 0,
'organizer_receives' => 0,
'attendee_pays' => 0
];
}
// Get pricing tier
$plan = strtolower($user_plan ?? 'free');
if (!isset($config['pricing_tiers'][$plan])) {
$plan = 'free'; // Default to free plan
}
$tier = $config['pricing_tiers'][$plan];
// Calculate service fee (percentage + fixed)
$service_fee = ($ticket_price * ($tier['service_fee_percentage'] / 100)) + $tier['fixed_fee_per_ticket'];
// Calculate payment processing fee
$payment_processing_fee = $ticket_price * ($tier['payment_processing_percentage'] / 100);
// Total fees
$total_fees = $service_fee + $payment_processing_fee;
if ($organizer_absorbs) {
// Organizer absorbs fees - they receive less
$organizer_receives = $ticket_price - $total_fees;
$attendee_pays = $ticket_price;
} else {
// Attendee pays fees - they pay more, organizer gets full ticket price
$organizer_receives = $ticket_price;
$attendee_pays = $ticket_price + $total_fees;
}
return [
'service_fee' => round($service_fee, 2),
'payment_processing_fee' => round($payment_processing_fee, 2),
'total_fees' => round($total_fees, 2),
'organizer_receives' => round($organizer_receives, 2),
'attendee_pays' => round($attendee_pays, 2),
'fee_breakdown' => [
'service_fee_percentage' => $tier['service_fee_percentage'],
'fixed_fee' => $tier['fixed_fee_per_ticket'],
'payment_processing_percentage' => $tier['payment_processing_percentage']
]
];
}
/**
* Get pricing tier for a user plan
*/
function getEventPricingTier($user_plan = 'free') {
$config = getEventPricingConfig();
$plan = strtolower($user_plan ?? 'free');
if (!isset($config['pricing_tiers'][$plan])) {
$plan = 'free';
}
return $config['pricing_tiers'][$plan];
}
// Return config for direct require usage
return $event_pricing_config;