db->table_exists(db_prefix() . 'paystack_transactions')) { $CI->db->query('CREATE TABLE `' . db_prefix() . 'paystack_transactions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoice_id` int(11) NOT NULL, `reference` varchar(100) NOT NULL, `email` varchar(100) NOT NULL, `amount` decimal(15,2) NOT NULL, `status` varchar(20) DEFAULT NULL, `transaction_date` datetime NOT NULL, `date_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `invoice_id` (`invoice_id`), KEY `reference` (`reference`), KEY `status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $CI->db->char_set . ';'); } // Paystack payment logs table if (!$CI->db->table_exists(db_prefix() . 'paystack_payment_logs')) { $CI->db->query('CREATE TABLE `' . db_prefix() . 'paystack_payment_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `transaction_id` int(11) DEFAULT NULL, `invoice_id` int(11) DEFAULT NULL, `amount` decimal(15,2) DEFAULT NULL, `message` text, `log_type` varchar(50) DEFAULT NULL, `ip_address` varchar(45) DEFAULT NULL, `user_agent` text, `date_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `transaction_id` (`transaction_id`), KEY `invoice_id` (`invoice_id`), KEY `log_type` (`log_type`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $CI->db->char_set . ';'); } // Paystack webhook logs table if (!$CI->db->table_exists(db_prefix() . 'paystack_webhook_logs')) { $CI->db->query('CREATE TABLE `' . db_prefix() . 'paystack_webhook_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `event` varchar(100) NOT NULL, `payload` text, `status` varchar(20) DEFAULT NULL, `ip_address` varchar(45) DEFAULT NULL, `date_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `event` (`event`), KEY `status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=' . $CI->db->char_set . ';'); } // Add payment gateway options if they don't exist $options = [ ['name' => 'paystack_test_mode', 'value' => '1'], ['name' => 'paystack_live_secret_key', 'value' => ''], ['name' => 'paystack_live_public_key', 'value' => ''], ['name' => 'paystack_test_secret_key', 'value' => ''], ['name' => 'paystack_test_public_key', 'value' => ''], ['name' => 'paystack_webhook_secret', 'value' => ''] ]; foreach ($options as $option) { if (!get_option($option['name'])) { add_option($option['name'], $option['value']); } }