MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/lms_cafsinfotech_in/application/controllers/Payment.php
<?php
class Payment extends Public_Controller { //CI_Controller 
	 
	public function __construct()
	{
		parent::__construct();
		$this->load->library("paypal");
        $this->load->model('Payment_model');
		$this->load->helper("url");

		if(empty($this->user['id']))
		{
			$this->session->set_flashdata('error', 'Plz Login First');
			return redirect(base_url("login"));
		}
	}


	public function payment_mode($quiz_id)
	{

		// $quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paypal_status($quiz_id);
		
		// if($quiz_last_paymetn_status)
		// {
		// 	return redirect(base_url("instruction/$quiz_id"));
		// }

		$quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paymetn_status($quiz_id);
		
		if($quiz_last_paymetn_status)
		{
			return redirect(base_url("instruction/$quiz_id"));
		}


 
		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}
		$payment_pending_status = $this->Payment_model->get_paymetn_status($quiz_id,$this->user['id']);
		

        $this->set_title(sprintf(lang('home'), $this->settings->site_name));

        $this->add_external_js(base_url("/assets/themes/admin/js/payment_custome_script.js"));

        $content_data = array('Page_message' => lang('welcome_to_online_quiz'), 'page_title' => lang('home'),'quiz_id' => $quiz_id, 'quiz_data' => $quiz_data,'payment_pending_status'=>$payment_pending_status,);

        $data = $this->includes;

        // $data['content'] = $this->load->view('index', $content_data, TRUE); 
        $data['content'] = $this->load->view('payment_method', $content_data, TRUE);
        
        $this->load->view($this->template, $data);

	}

	public function index($quiz_id)
	{

		// $quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paypal_status($quiz_id);
		// if($quiz_last_paymetn_status)
		// {
		// 	return redirect(base_url("instruction/$quiz_id"));
		// }

		$quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paymetn_status($quiz_id);
		if($quiz_last_paymetn_status)
		{
			return redirect(base_url("instruction/$quiz_id"));
		}


		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}

        $this->set_title(sprintf(lang('home'), $this->settings->site_name));
        $content_data = array('Page_message' => lang('welcome_to_online_quiz'), 'page_title' => lang('home'),'quiz_id' => $quiz_id, 'quiz_data' => $quiz_data);

        $data = $this->includes;

        // $data['content'] = $this->load->view('index', $content_data, TRUE);
        $data['content'] = $this->load->view('paypal_payment', $content_data, TRUE);
        
        $this->load->view($this->template, $data);
	}


	public function subscribe($quiz_id)
	{

		// $quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paypal_status($quiz_id);
		// if($quiz_last_paymetn_status)
		// {
		// 	return redirect(base_url("instruction/$quiz_id"));
		// }


		$quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paymetn_status($quiz_id);
		if($quiz_last_paymetn_status)
		{
			return redirect(base_url("instruction/$quiz_id"));
		}

		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}

		if ($_POST["plan_name"]) 
		{
			// $definition = "Regular Payments";
			$definition = $quiz_data->title;
			$type       = "REGULAR";
			$frequency  = "MONTH";
			$frequncy_interval = '1';
			$cycles = 0;
			$price = $quiz_data->price;


			$line1 = "Street - 1, Sector - 1";
			$city  = "Dhaka";
			$state = "Dhaka";
			$postalcode = "12345";
			$country = "AU";

			// $agreement_name = "Payment Agreement Name";
			// $agreement_description = "Payment Agreement Description";
			$agreement_name = $quiz_data->title;
			$agreement_description = $quiz_data->description;

			$return_url = base_url("paypal/quiz-pay/payment-success/$quiz_id");
			$cancel_url = base_url("paypal/quiz-pay/payment-fail/$quiz_id");
			
			$this->paypal->set_api_context();
			$this->paypal->set_plan( $_POST["plan_name"], $_POST["plan_description"], "INFINITE" );
			$this->paypal->set_billing_plan_definition( $definition, $type, $frequency, $frequncy_interval, $cycles, $price );
			$this->paypal->set_merchant_preferences($return_url, $cancel_url );
			$this->paypal->set_shipping_address( $line1, $city, $state, $postalcode, $country );
			$this->paypal->create_and_activate_billing_plan( $agreement_name, $agreement_description );

		}
		else
		{
			$this->session->set_flashdata('error', 'Someting Went Wrong !');
			return redirect(base_url("quiz-pay/payment-mode/$quiz_id"));
		}

	}


	public function create_payment($quiz_id)
	{
		
		// $quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paypal_status($quiz_id);
		// if($quiz_last_paymetn_status)
		// {
		// 	return redirect(base_url("instruction/$quiz_id"));
		// }

		$quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paymetn_status($quiz_id);
		if($quiz_last_paymetn_status)
		{
			return redirect(base_url("instruction/$quiz_id"));
		}


		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}




		$payment_method = "paypal";
		$return_url     = base_url("paypal/quiz-pay/pay-successfuly/$quiz_id");
		$cancel_url     = base_url("paypal/quiz-pay/payment-fail/$quiz_id");
		$total          = $quiz_data->price;
		$description    = $quiz_data->title;
		$intent         = "SALE";


		$this->paypal->set_api_context();
		$this->paypal->create_payment($payment_method, $return_url, $cancel_url, 
        $total, $description, $intent);

        return;

	}
	//After creating a payment successfully we will be redirected here
	

	public function cancel($quiz_id)
	{
		// $this->index($quiz_id);
		// return;

		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}


		if ($_GET['token'] )
		{
		    $payment_exist = $this->Payment_model->check_payment_by_token($_GET['token']);
		    if(empty($payment_exist))
		    {

			    $payment_data = array();
			    $payment_data['user_id'] = $this->user['id'];
			    $payment_data['quiz_id'] = $quiz_id;
			    $payment_data['name'] = $this->user['first_name'].' '.$this->user['last_name'];
			    $payment_data['email'] = $this->user['email'];
			    $payment_data['item_price'] = $quiz_data->price;
			    $payment_data['item_price_currency'] = $this->settings->paid_currency;
			    $payment_data['token_no'] = $_GET['token'];
			    $payment_data['payment_status'] = 'fail';
			    $payment_data['created'] = date("Y-m-d H:i:s");

			    $payment_id = $this->Payment_model->insert_payment($payment_data);
			}
			else
			{
				$payment_id = $payment_exist->id;
			}

			return redirect(base_url("paypal/quiz-pay/payment-status/$quiz_id/$payment_id"));

		}
		else
		{
			$this->session->set_flashdata('error', 'Someting Went Wrong !');
			return redirect(base_url("quiz-pay/payment-mode/$quiz_id"));
		}

	}

	//After successfully create an agreement we will be redirected to this function
	public function success($quiz_id)
	{
			
		// $quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paypal_status($quiz_id);
		// if($quiz_last_paymetn_status)
		// {
		// 	return redirect(base_url("instruction/$quiz_id"));
		// }

		$quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paymetn_status($quiz_id);
		if($quiz_last_paymetn_status)
		{
			return redirect(base_url("instruction/$quiz_id"));
		}

		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}

		if ($_GET['token'] ) 
		{

		    $token = $_GET['token'];
		    $this->paypal->execute_agreement( $token );

		    $payment_exist = $this->Payment_model->check_payment_by_token($token);
		    if(empty($payment_exist))
		    {

			    $payment_data = array();
			    $payment_data['user_id'] = $this->user['id'];
			    $payment_data['quiz_id'] = $quiz_id;
			    $payment_data['name'] = $this->user['first_name'].' '.$this->user['last_name'];
			    $payment_data['email'] = $this->user['email'];
			    $payment_data['item_price'] = $quiz_data->price;
			    $payment_data['item_price_currency'] = $this->settings->paid_currency;
			    $payment_data['token_no'] = $token;
			    $payment_data['payment_status'] = 'succeeded';
			    $payment_data['created'] = date("Y-m-d H:i:s");
			    $payment_data['payment_gateway'] = 'paypal';

			    $payment_id = $this->Payment_model->insert_paypal_detailll($payment_data);
			}
			else
			{
				$payment_id = $payment_exist->id;
			}

			return redirect(base_url("paypal/quiz-pay/payment-status/$quiz_id/$payment_id"));


		   // $this->index($quiz_id);

		}
		else
		{
			$this->session->set_flashdata('error', 'Someting Went Wrong !');
			return redirect(base_url("quiz-pay/payment-mode/$quiz_id"));
		}

		return;

	}

	public function success_payment($quiz_id)
	{

		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);

		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}

		// $quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paypal_status($quiz_id);

		// if($quiz_last_paymetn_status)
		// {
		// 	return redirect(base_url("instruction/$quiz_id"));
		// }

		$quiz_last_paymetn_status = $this->Payment_model->get_quiz_last_paymetn_status($quiz_id);

		if($quiz_last_paymetn_status)
		{
			return redirect(base_url("instruction/$quiz_id"));
		}

		if ( !empty( $_GET['paymentId'] ) && !empty( $_GET['PayerID'] ) ) 
		{

		    $this->paypal->execute_payment( $_GET['paymentId'], $_GET['PayerID'] );

		    $payment_exist = $this->Payment_model->check_payment_by_txn_id($_GET['paymentId']);

		    $get_max_invoice = $this->Payment_model->find_max_invoice_no();

		    if($get_max_invoice)
		    {
		    	$invoice_no = $get_max_invoice[0]->invoice_no+1;
		    	if($invoice_no < get_admin_setting('invoice_start_number'))
		    	{
		    		$invoice_no = get_admin_setting('invoice_start_number')+1;
		    	}
		    	else
		    	{
		    		$invoice_no = $invoice_no;
		    	}
		    	
		    }
		    else
		    {
		    	$invoice_no = get_admin_setting('invoice_start_number')+1;
		    }

		    if(empty($payment_exist))
		    {

			    $payment_data = array();
			    $payment_data['user_id'] = $this->user['id'];
			    $payment_data['payer_id'] = $_GET['PayerID'];
			    $payment_data['quiz_id'] = $quiz_id;
			    $payment_data['name'] = $this->user['first_name'].' '.$this->user['last_name'];
			    $payment_data['email'] = $this->user['email'];
			    $payment_data['item_name'] = $quiz_data->title;
			    $payment_data['item_price'] = $quiz_data->price;
			    $payment_data['item_price_currency'] = $this->settings->paid_currency;
			    $payment_data['txn_id'] = $_GET['paymentId'];
			    $payment_data['payment_status'] = 'succeeded';
			    $payment_data['created'] = date("Y-m-d H:i:s");
			    $payment_data['modified'] = date("Y-m-d H:i:s");
			    $payment_data['payment_gateway'] = 'paypal';
			    $payment_data['invoice_no'] = $invoice_no;

			    $payment_id = $this->Payment_model->insert_paypal_detail($payment_data);
					   
			}
			else
			{
				$payment_id = $payment_exist->id;
			}

			return redirect(base_url("paypal/quiz-pay/payment-status/$quiz_id/$payment_id"));

		}
		else
		{
			$this->session->set_flashdata('error', 'Someting Went Wrong !');
			return redirect(base_url("quiz-pay/payment-mode/$quiz_id"));
		}

		return;

	}


	public function paypal_payment_view($quiz_id, $payment_id)
	{

		$payment_data = $this->Payment_model->get_paypal_payment_by_id($payment_id);

		if(empty($payment_data))
		{
			return redirect(base_url('404_override'));
		}

		$quiz_data =  $this->Payment_model->get_paid_quiz_by_id($quiz_id);
		if(empty($quiz_data))
		{
			return redirect(base_url('404_override'));
		}

        $this->set_title(sprintf(lang('home'), $this->settings->site_name));
        $content_data = array('Page_message' => lang('welcome_to_online_quiz'), 'page_title' => lang('home'),'quiz_id' => $quiz_id, 'payment_id' => $payment_id, 'quiz_data' => $quiz_data, 'payment_data' => $payment_data,);

        $data = $this->includes;

        if($payment_data->payment_status == 'succeeded')
        {
        	$data['content'] = $this->load->view('paypal_success', $content_data, TRUE);
        }
        else
        {
        	$data['content'] = $this->load->view('paypal_error', $content_data, TRUE);
        }
        
        $this->load->view($this->template, $data);
	}

	public function save_bank_transfer()
	{
		$get_max_invoice = $this->Payment_model->find_max_invoice_no();

	    if($get_max_invoice)
	    {
	    	$invoice_no = $get_max_invoice[0]->invoice_no+1;
	    	if($invoice_no < get_admin_setting('invoice_start_number'))
	    	{
	    		$invoice_no = get_admin_setting('invoice_start_number')+1;
	    	}
	    	else
	    	{
	    		$invoice_no = $invoice_no;
	    	}
	    	
	    }
	    else
	    {
	    	$invoice_no = get_admin_setting('invoice_start_number')+1;
	    }

		$transaction_no = $_POST['transaction_no'];
		$response = array();
		$user_id = isset($this->user['id']) ? $this->user['id'] : 0;

		if($transaction_no)
		{
			$transaction_data = array();
			$transaction_data['user_id'] = $user_id;
			$transaction_data['quiz_id'] = $_POST['quiz_id'];
			$transaction_data['name'] = $this->user['first_name'].' '.$this->user['last_name'];
			$transaction_data['email'] = $this->user['email'];
			$transaction_data['item_name'] = $_POST['title'];
			$transaction_data['item_price'] = $_POST['price'];
			$transaction_data['item_price_currency'] = $this->settings->paid_currency;
			$transaction_data['payment_status'] = 'pending';
			$transaction_data['created'] = date("Y-m-d H:i:s");
			$transaction_data['modified'] = date("Y-m-d H:i:s");
			$transaction_data['payment_gateway'] = 'bank-transfer';
			$transaction_data['token_no'] = $transaction_no;
			$transaction_data['invoice_no'] = $invoice_no;
			
			$inserted_id = $this->Payment_model->insertTransaction($transaction_data);

			if($inserted_id)
			{
				$this->session->set_flashdata('message', lang('bank_transfer_added_successfully'));
				$response['success'] = 	lang('bank_transfer_added_successfully');
			}
		}
		else 
		{
			$response['empty'] = 'error';
		}
		echo json_encode($response);
	}

	function update_bank_transfer()
	{
		$transaction_no = $_POST['transaction_no'];
		$response = array();
		$user_id = isset($this->user['id']) ? $this->user['id'] : 0;
		if($transaction_no)
		{
			$transaction_data = array();
			$transaction_data['token_no'] = $transaction_no;
			$transaction_data['modified'] = date("Y-m-d H:i:s");
			$update_id = $this->Payment_model->update_bank_transfer_token($_POST['quiz_id'],$user_id,$transaction_data);
			if($update_id)
			{
				$this->session->set_flashdata('message', lang('bank_transfer_updated_successfully'));
				$response['success'] = lang('bank_transfer_updated_successfully');
			}
		}
		else
		{
			$response['empty'] = 'error';
		}	
		echo json_encode($response);
	}

}