282 lines
11 KiB
PHP

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Payment extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->model('Index_model');
}
public function index()
{
if(empty($this->session->userdata('cart')))
{
redirect(base_url());
}
else
{
$this->load->view("front/payment");
}
}
public function confirm()
{
$this->session->sess_destroy();
$this->load->view("front/confirm");
}
public function payment_order()
{
$cardsplit = str_split($this->input->post('card_number'));
$ssl_customer_code = $cardsplit[12].$cardsplit[13].$cardsplit[14].$cardsplit[15];
$ssl_invoice_number = $this->input->post('billing_contact').time();
$ssl_transaction_type = "ccsale";
$ssl_cvv2cvc2_indicator = 1;
$country = "USA";
$fields = array(
"ssl_merchant_id" => "500693",
"ssl_user_id" => "webpage",
"ssl_pin" => "MX0MD3",
"ssl_transaction_type" => urlencode($ssl_transaction_type),
"ssl_show_form" => "false",
"ssl_cvv2cvc2_indicator" => urlencode($ssl_cvv2cvc2_indicator), //0=Bypassed; 1=present; 2=Illegible; 9=Not Present.
"ssl_salestax" => "0",
"ssl_result_format" => "html",
"ssl_test_mode" => "false",
"ssl_receipt_apprvl_method" => "redg", // sends to page with long data string url
//"ssl_receipt_apprvl_method" => "link", // just posts receipt with link at bottom
"ssl_receipt_link_url" => "http://abc.mydataboxx.com/order-confirm",
"ssl_error_url" => "http://abc.mydataboxx.com/order-confirm",
//submitted details
"ssl_invoice_number" => urlencode($ssl_invoice_number),
"ssl_customer_code" => urlencode($ssl_customer_code),
"ssl_first_name" => urlencode($this->input->post('company_name')),
"ssl_last_name" => urlencode($this->input->post('billing_contact')),
"ssl_avs_address" => urlencode($this->input->post('street_adrs')),
"ssl_address2" => urlencode($this->input->post('customer_id')),
"ssl_avs_zip" => urlencode($this->input->post('post_code')),
"ssl_state" => urlencode($this->input->post('state')),
"ssl_city" => urlencode($this->input->post('city_name')),
"ssl_country" => urlencode($country),
"ssl_phone" => urlencode($this->input->post('phone_no')),
"ssl_email" => urlencode($this->input->post('emai_id')),
"ssl_card_number" => urlencode($this->input->post('card_number')),
"ssl_exp_date" => urlencode($this->input->post('exp_month').$this->input->post('exp_year')),
"ssl_cvv2cvc2" => urlencode($this->input->post('cvv_code')),
"ssl_amount" => urlencode($this->session->userdata('granttotal'))
);
$url = "https://api.demo.convergepay.com/VirtualMerchantDemo/process.do";
//initialize the post string variable
$fields_string = '';
//build the post string
foreach($fields as $key=>$value) { $fields_string .=$key.'='.$value.'&'; }
rtrim($fields_string, "&");
//open curl session
$ch = curl_init();
//begin seting curl options
//set URL
curl_setopt($ch, CURLOPT_URL, $url); //set method
curl_setopt($ch, CURLOPT_POST, 1);
//set post data string
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
//these two options are frequently necessary to avoid SSL errors with PHP
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//perform the curl post and store the result
$result = curl_exec($ch);
//close the curl session
curl_close($ch);
//a nice message to prevent people from seeing a blank screen
echo "Processing, please wait...";
//print_r($result);
$masterdata = array('reg_date'=>date("Y-m-d"),
'reg_total'=>$this->session->userdata('granttotal'),
'reg_class_count'=>count($this->session->userdata('cart')),
'payment_type'=>$this->input->post('payment_type'),
'card_holder_name'=>$this->input->post('card_holder_name'),
'card_number'=>$this->input->post('card_number'),
'card_type'=>$this->input->post('card_type'),
'exp_month'=>$this->input->post('exp_month'),
'exp_year'=>$this->input->post('exp_year'),
'cvv_code'=>$this->input->post('cvv_code'),
'company_name'=>$this->input->post('company_name'),
'billing_contact'=>$this->input->post('billing_contact'),
'customer_id'=>$this->input->post('customer_id'),
'street_adrs'=>$this->input->post('street_adrs'),
'city_name'=>$this->input->post('city_name'),
'state'=>$this->input->post('state'),
'post_code'=>$this->input->post('post_code'),
'phone_no'=>$this->input->post('phone_no'),
'fax_no'=>$this->input->post('fax_no'),
'adtnal_instrction'=>$this->input->post('adtnal_instrction'),
'details'=>$this->input->post('details'),
'email_id'=>$this->input->post('emai_id'),
'status'=>'unpaid');
$regid = $this->Index_model->regmaster($masterdata);
if($regid)
{
$attotal = 0;
$cart = $this->session->userdata('cart');/*Cart Session*/
foreach ($cart as $cartcount => $form)
{
$mcount = $this->session->userdata('mcount'.$form);
$mpluscount = $this->session->userdata('mpluscount'.$form);
$ncount = $this->session->userdata('ncount'.$form);
$npluscount = $this->session->userdata('npluscount'.$form);
$scount = $this->session->userdata('scount'.$form);
$attcount = ($mcount + $mpluscount + $ncount + $npluscount + $scount); /*Attendee Count*/
$classdata = array('reg_id'=>$regid,'form_id'=>$form,
'att_count'=>$attcount,
'regclass_total_price'=>$this->session->userdata('classtotal'.$form));
$classform = $this->Index_model->returnclass($form);
$remainseats = $classform->remain_seats-$attcount;
$this->Index_model->remainclass($remainseats,$form);
$regclassid = $this->Index_model->classdata($classdata);
$classform = $this->session->userdata('classform'.$form);
foreach ($classform as $formcount => $data)
{
$mprice = $data['class_price_m'];
$mplusprice = $data['class_price_m2'];
$nprice = $data['class_price_n'];
$nplusprice = $data['class_price_n2'];
$sprice = $data['class_price_s'];
}
if($regclassid)
{
$attmcount = 0;
$attmpcount = 0;
$attncount = 0;
$attnpcount = 0;
$attscount = 0;
$member = $this->session->userdata('member'.$form);
if (!empty($member) || isset($member['M']))
{
foreach ($member['M'] as $key => $val)
{
$attendedata = array(
'reg_id'=>$regid,
'regclass_id'=>$regclassid,
'reg_m_type'=>'M',
'att_f_name'=>isset($val['first_name'])? $val['first_name'] : '',
'att_l_name'=>isset($val['last_name'])? $val['last_name'] : '',
'att_email'=>isset($val['email_id'])? $val['email_id'] : '',
'att_number'=>isset($val['phone_no'])? $val['phone_no'] : '',
'att_ssn'=>isset($val['ssn'])? $val['ssn'] : '',
'att_price'=>$mprice );
$data = $this->Index_model->attendedata($attendedata);
$attmcount+=1;
}
}
$memplus = $this->session->userdata('memplus'.$form);
if (!empty($memplus) || isset($memplus['M2']))
{
foreach ($memplus['M2'] as $key => $val)
{
$attendedata = array(
'reg_id'=>$regid,
'regclass_id'=>$regclassid,
'reg_m_type'=>'M2',
'att_f_name'=>isset($val['first_name'])? $val['first_name'] : '',
'att_l_name'=>isset($val['last_name'])? $val['last_name'] : '',
'att_email'=>isset($val['email_id'])? $val['email_id'] : '',
'att_number'=>isset($val['phone_no'])? $val['phone_no'] : '',
'att_ssn'=>isset($val['ssn'])? $val['ssn'] : '',
'att_price'=>$mplusprice );
$data = $this->Index_model->attendedata($attendedata);
$attmpcount+=1;
}
}
$nonmember = $this->session->userdata('nonmember'.$form);
if (!empty($nonmember) || isset($nonmember['N']))
{
foreach ($nonmember['N'] as $key => $val)
{
$attendedata = array(
'reg_id'=>$regid,
'regclass_id'=>$regclassid,
'reg_m_type'=>'N',
'att_f_name'=>isset($val['first_name'])? $val['first_name'] : '',
'att_l_name'=>isset($val['last_name'])? $val['last_name'] : '',
'att_email'=>isset($val['email_id'])? $val['email_id'] : '',
'att_number'=>isset($val['phone_no'])? $val['phone_no'] : '',
'att_ssn'=>isset($val['ssn'])? $val['ssn'] : '',
'att_price'=>$nprice );
$data = $this->Index_model->attendedata($attendedata);
$attncount+=1;
}
}
$nonplus = $this->session->userdata('nonplus'.$form);
if (!empty($nonplus) || isset($nonplus['N2']))
{
foreach ($nonplus['N2'] as $key => $val)
{
$attendedata = array(
'reg_id'=>$regid,
'regclass_id'=>$regclassid,
'reg_m_type'=>'N2',
'att_f_name'=>isset($val['first_name'])? $val['first_name'] : '',
'att_l_name'=>isset($val['last_name'])? $val['last_name'] : '',
'att_email'=>isset($val['email_id'])? $val['email_id'] : '',
'att_number'=>isset($val['phone_no'])? $val['phone_no'] : '',
'att_ssn'=>isset($val['ssn'])? $val['ssn'] : '',
'att_price'=>$nplusprice );
$data = $this->Index_model->attendedata($attendedata);
$attnpcount+=1;
}
}
$semember = $this->session->userdata('semember'.$form);
if (!empty($semember) || isset($semember['S']))
{
foreach ($semember['S'] as $key => $val)
{
$attendedata = array(
'reg_id'=>$regid,
'regclass_id'=>$regclassid,
'reg_m_type'=>'S',
'att_f_name'=>isset($val['first_name'])? $val['first_name'] : '',
'att_l_name'=>isset($val['last_name'])? $val['last_name'] : '',
'att_email'=>isset($val['email_id'])? $val['email_id'] : '',
'att_number'=>isset($val['phone_no'])? $val['phone_no'] : '',
'att_ssn'=>isset($val['ssn'])? $val['ssn'] : '',
'att_price'=>$sprice );
$data = $this->Index_model->attendedata($attendedata);
$attscount+=1;
}
}
}
$attotal+= $attmcount + $attmpcount + $attncount + $attnpcount + $attscount; /*Attendee Total Count*/
}
$this->Index_model->attotal($attotal,$regid);
$this->session->set_flashdata('success_msg','Your Order Has Been Completed Successfully.');
redirect('order-confirm');
}
else
{
$this->session->set_flashdata('error_msg','Something Wrong Happen..! Register Again.');
redirect('order-confirm');
}
}
}
?>