uawdijnntqw1x1x1
IP : 216.73.216.93
Hostname : panel.codeskitter.com
Kernel : Linux panel.codeskitter.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
Disable Function : apache_child_terminate, apache_note, apache_setenv, define_syslog_variables, dl, link, opcache_get_status, openlog, pcntl_exec, pcntl_fork, pcntl_setpriority, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid
OS : Linux
PATH:
/
home
/
users
/
unlimited
/
www
/
eshop.codeskitter.site
/
application
/
controllers
/
Payment.php
/
/
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Payment extends CI_Controller { public function __construct() { parent::__construct(); $this->load->database(); $this->load->library(['Paypal_lib', 'paytm', 'my_fatoorah', 'phonepe']); $this->load->model(['cart_model', 'address_model', 'order_model', 'transaction_model']); $this->data['is_logged_in'] = ($this->ion_auth->logged_in()) ? 1 : 0; $this->data['user'] = ($this->ion_auth->logged_in()) ? $this->ion_auth->user()->row() : array(); $this->response['csrfName'] = $this->security->get_csrf_token_name(); $this->response['csrfHash'] = $this->security->get_csrf_hash(); $this->data['settings'] = get_settings('system_settings', true); $this->data['web_settings'] = get_settings('web_settings', true); $this->data['auth_settings'] = get_settings('authentication_settings', true); $this->data['web_logo'] = get_settings('web_logo'); } public function paystack_callback(){ if (!isset($_GET['reference'])){ redirect(base_url("payment/cancel")); return false; } $this->load->library(['paystack']); try { print_r("<pre>"); $response = $this->paystack->verify_transaction($_GET["reference"]); $response = json_decode($response, true); if(!$response["status"]){ redirect(base_url("payment/cancel")); return false; } if($response["data"]["status"] != "success"){ redirect(base_url("payment/cancel")); return false; } $orderId = $response["data"]["metadata"]["order_id"]; $amount = $response["data"]["amount"]; $order = fetch_details("orders", ["id" => $orderId]); if (count($order) == 0){ redirect(base_url("payment/cancel")); return false; } $order = $order[0]; $user_id = $order["user_id"]; $data = [ 'transaction_type' => 'transaction', 'user_id' => $user_id, 'order_id' => $orderId, 'type' => 'razorpay', 'txn_id' => $_GET["reference"], 'amount' => $amount, 'status' => 'success', 'message' => 'order placed successfully', ]; $this->transaction_model->add_transaction($data); update_details(['active_status' => 'received'], ['order_id' => $orderId], 'order_items'); $status = json_encode(array(array('received', date("d-m-Y h:i:sa")))); update_details(['status' => $status], ['order_id' => $orderId], 'order_items', false); return redirect(base_url("payment/success?order_id=$orderId")); }catch (Exception $e){ redirect(base_url("payment/cancel")); } } public function paypal() { $this->form_validation->set_rules('order_id', 'Order', 'trim|required|xss_clean|numeric'); if (!$this->form_validation->run()) { $this->response['error'] = true; $this->response['message'] = validation_errors(); $this->response['data'] = array(); print_r(json_encode($this->response)); return false; } $user_id = $this->data['user']->id; $order_id = $this->input->post('order_id', true); $order = $this->db->where('id', $order_id)->get('orders')->row_array(); if (empty($order)) { $this->response['error'] = true; $this->response['message'] = "No Order Found."; $this->response['data'] = array(); print_r(json_encode($this->response)); return false; } // Set variables for paypal form $returnURL = base_url() . 'payment/success'; $cancelURL = base_url() . 'payment/delete_order/' . $order_id; $notifyURL = base_url() . 'app/v1/api/ipn'; $txn_id = time() . "-" . rand(); $this->paypal_lib->add_field('return', $returnURL); $this->paypal_lib->add_field('cancel_return', $cancelURL); $this->paypal_lib->add_field('notify_url', $notifyURL); $this->paypal_lib->add_field('item_name', 'Test'); $this->paypal_lib->add_field('custom', $this->data['user']->id . '|' . $this->data['user']->email); $this->paypal_lib->add_field('item_number', $order['id']); $this->paypal_lib->add_field('amount', $order['total_payable']); // Render paypal form $this->paypal_lib->paypal_auto_form(); } public function delete_order() { if (!$this->ion_auth->logged_in()) { redirect(base_url()); } if ($_SERVER['HTTP_REFERER'] == 'https://www.sandbox.paypal.com/' || $_SERVER['HTTP_REFERER'] == 'https://www.paypal.com/') { $order_id = $this->uri->segment(3); $order_item = fetch_details('order_items', ['order_id' => $order_id], 'user_id,product_variant_id,quantity'); foreach ($order_item as $row) { $cart_data = [ 'user_id' => $row['user_id'], 'product_variant_id' => $row['product_variant_id'], 'qty' => $row['quantity'], 'is_saved_for_later' => 0, ]; $this->db->insert('cart', $cart_data); } $order = fetch_orders($order_id, false, false, false, false, false, false, false); $user_id = $order['order_data'][0]['user_id']; $returnable_amount = $order['order_data'][0]['final_total']; update_wallet_balance('credit', $user_id, $returnable_amount, 'Wallet Amount Credited for Order ID : ' . $order_id); if ($order['order_data'][0]['order_items'][0]['status'][0][0] == 'awaiting') { update_stock($order['order_data'][0]['order_items'][0]['product_variant_id'], $order['order_data'][0]['order_items'][0]['quantity'], 'plus'); } delete_details(['id' => $order_id], 'orders'); delete_details(['order_id' => $order_id], 'order_items'); redirect('payment/cancel'); } } public function paytm() { if ($this->ion_auth->logged_in()) { $this->form_validation->set_rules('mobile', 'Mobile', 'trim|required|numeric|xss_clean'); $this->form_validation->set_rules('promo_code', 'Promo Code', 'trim|xss_clean'); $this->form_validation->set_rules('latitude', 'Latitude', 'trim|numeric|xss_clean'); $this->form_validation->set_rules('longitude', 'Longitude', 'trim|numeric|xss_clean'); $this->form_validation->set_rules('deliver_date', 'Delivery Date', 'trim|xss_clean'); $this->form_validation->set_rules('deliver_time', 'Delivery time', 'trim|xss_clean'); $this->form_validation->set_rules('address_id', 'Address id', 'trim|required|numeric|xss_clean', array('required' => 'Please choose address')); $this->form_validation->set_rules('wallet_used', 'Wallet used', 'trim|xss_clean'); if (!$this->form_validation->run()) { $this->response['error'] = true; $this->response['message'] = strip_tags(validation_errors()); $this->response['data'] = array(); print_r(json_encode($this->response)); return; } $settings = get_settings('system_settings', true); $app_name = isset($settings['app_name']) && !empty($settings['app_name']) ? $settings['app_name'] : 'eShop - ecommerce'; $app_name = str_replace(" ", "", $settings['app_name']); $order_id = $app_name . "-" . time() . rand(1000, 9999); $credentials = $this->paytm->get_credentials(); $mid = $credentials['paytm_merchant_id']; $cart = get_cart_total($this->data['user']->id, false, '0', $_POST['address_id']); $promo_discount = 0; if (isset($_POST['promo_code']) && !empty($_POST['promo_code'])) { $validate = validate_promo_code($_POST['promo_code'], $this->data['user']->id, $cart['total_arr']); if ($validate['error'] == false) { $promo_discount = $validate['data'][0]['final_discount']; } else { $this->session->set_flashdata('message', $validate['message']); $this->session->set_flashdata('message_type', 'error'); redirect(base_url('cart/checkout'), 'refresh'); } } $wallet_amount = 0; if (isset($_POST['wallet_used']) && $_POST['wallet_used'] == 1) { $wallet_balance = fetch_details('users', 'id=' . $this->data['user']->id, 'balance'); $wallet_balance = $wallet_balance[0]['balance']; $final_total = $cart['overall_amount']; if ($wallet_balance > 0) { if ($wallet_balance >= $final_total) { $wallet_amount = $final_total; } else { $wallet_amount = $wallet_balance; } } else { $this->session->set_flashdata('message', 'Insufficient balance'); $this->session->set_flashdata('message_type', 'error'); redirect(base_url('cart/checkout'), 'refresh'); } } $overall_amount = $cart['overall_amount'] - $wallet_amount - $promo_discount; $overall_amount = number_format($overall_amount, 2, '.', ''); $paramList = array(); $paramList["MID"] = $mid; $paramList["ORDER_ID"] = $order_id; $paramList["CUST_ID"] = $this->data['user']->id; $paramList["INDUSTRY_TYPE_ID"] = $credentials['paytm_industry_type_id']; $paramList["CHANNEL_ID"] = "WEB"; $paramList["TXN_AMOUNT"] = $overall_amount; $paramList["WEBSITE"] = $credentials['paytm_website']; $paramList["CALLBACK_URL"] = base_url("payment/paytm-response"); $paramList["MERC_UNQ_REF"] = $_POST['address_id'] . '|' . $_POST['wallet_used'] . '|' . $_POST['promo_code'] . '|' . $_POST['latitude'] . '|' . $_POST['longitude'] . '|' . $_POST['deliver_date'] . '|' . $_POST['deliver_time'] . '|' . $_POST['mobile']; $checksum = $this->paytm->generateSignature($paramList, $credentials['paytm_merchant_key']); $form_html = "<body> <table align='center' cellspacing='4'> <tr> <td align='center'><STRONG>Transaction is being processed,</STRONG></td> </tr> <tr> <td align='center'> <font color='blue'>Please wait ...</font> </td> </tr> <tr> <td align='center'>(Please do not press 'Refresh' or 'Back' button)</td> </tr> <tr> <td align='center'><img src=" . base_url('assets/old-pre-loader.gif') . " alt='Please wait.. Loading' title='Please wait.. Loading..' width='140px' /></td> </tr> <tr> <td align='center'><a href='#' style='padding: 8px 12px;background-color: #008CBA;color:white;text-decoration:none;' onclick='document.forms[\"payment_form\"].submit();'>Click here if you are not automatically redirected..</a></td> </tr> </table> <FORM NAME='payment_form' ACTION='https://securegw-stage.paytm.in/theia/processTransaction' METHOD='POST'> <input type='hidden' name='MID' value='" . $credentials['paytm_merchant_id'] . "'> <input type='hidden' name='WEBSITE' value='" . $credentials['paytm_website'] . "'> <input type='hidden' name='ORDER_ID' value='" . $order_id . "'> <input type='hidden' name='CUST_ID' value='" . $this->data['user']->id . "'> <input type='hidden' name='INDUSTRY_TYPE_ID' value='" . $credentials['paytm_industry_type_id'] . "'> <input type='hidden' name='CHANNEL_ID' value='WEB'> <input type='hidden' name='TXN_AMOUNT' value='" . $overall_amount . "'> <input type='hidden' name='CALLBACK_URL' value='" . $paramList['CALLBACK_URL'] . "'> <input type='hidden' name='CHECKSUMHASH' value='" . $checksum . "'> <input type='hidden' name='MERC_UNQ_REF' value='" . $_POST['address_id'] . '|' . $_POST['wallet_used'] . '|' . $_POST['promo_code'] . '|' . $_POST['latitude'] . '|' . $_POST['longitude'] . '|' . $_POST['deliver_date'] . '|' . $_POST['deliver_time'] . '|' . $_POST['mobile'] . "'> </FORM> </body> <script type='text/javascript'> document.forms[0].submit(); </script>"; echo $form_html; } else { redirect(base_url(), 'refresh'); } } public function phonepe() { if ($this->ion_auth->logged_in()) { if ($_POST['type'] == 'wallet') { $overall_amount = $_POST['amount']; $amount = $overall_amount; $user_id = $this->data['user']->id; $settings = get_settings('system_settings', true); $order_id = $_POST['order_id']; $transation_id = $_POST['order_id']; $mobile = $this->data['user']->mobile; $data = array( 'merchantTransactionId' => $transation_id, 'merchantUserId' => $user_id, 'amount' => $amount * 100, 'redirectUrl' => base_url("payment/phonepe_response"), 'redirectMode' => 'POST', 'callbackUrl' => base_url("admin/webhook/phonepe_webhook"), 'mobileNumber' => $mobile, ); $res = $this->phonepe->pay($data); $this->response['error'] = false; $this->response['message'] = 'trasaction initiated successfully'; $this->response['data'] = $res; $this->response['data']['order_id'] = $order_id; print_r(json_encode($this->response)); return; } else { $_POST['user_id'] = $this->data['user']->id; $cart = get_cart_total($this->data['user']->id, false, '0', $_POST['address_id']); $wallet_balance = fetch_details('users', 'id=' . $this->data['user']->id, 'balance'); $wallet_balance = $wallet_balance[0]['balance']; $overall_amount = $cart['overall_amount']; $mobile = $cart['mobile']; if ($_POST['wallet_used'] == 1 && $wallet_balance > 0) { $overall_amount = $overall_amount - $wallet_balance; } if (!empty($_POST['promo_code'])) { $validate = validate_promo_code($_POST['promo_code'], $this->data['user']->id, $cart['total_arr']); if ($validate['error']) { $this->response['error'] = true; $this->response['message'] = $validate['message']; print_r(json_encode($this->response)); return false; } else { $overall_amount = $overall_amount - $validate['data'][0]['final_discount']; } } $amount = intval($overall_amount); $user_id = $this->data['user']->id; $transation_id = time() . "" . rand("100", "999"); $data = array( 'merchantTransactionId' => $transation_id, 'merchantUserId' => $user_id, 'amount' => $amount * 100, 'redirectUrl' => base_url("payment/phonepe_response"), 'redirectMode' => 'POST', 'callbackUrl' => base_url("admin/webhook/phonepe_webhook"), 'mobileNumber' => $mobile, ); $res = $this->phonepe->pay($data); $this->response['error'] = false; $this->response['data'] = $res; $this->response['transaction_id'] = $transation_id; $this->response['message'] = $res['message']; $this->response['url'] = ($res['data']['instrumentResponse']['redirectInfo']['url']) ? $res['data']['instrumentResponse']['redirectInfo']['url'] : " "; print_r(json_encode($this->response)); return; } } else { $this->response['error'] = true; $this->response['message'] = "Unauthorised access is not allowed."; print_r(json_encode($this->response)); return false; } } public function phonepe_response() { $paramList = array(); $paramList = $_POST; if (isset($_POST['transactionId']) && !empty($_POST['transactionId'])) { $transation_id = $_POST['transactionId']; $transaction = fetch_details("transactions", ["txn_id" => $transation_id]); } $user_id = (isset($transaction[0]['user_id'])) ? $transaction[0]['user_id'] : ""; $user_details = fetch_details('users', ['id' => $user_id]); session_start(); $_SESSION["mobile"] = (isset($user_details[0]['mobile'])) ? $user_details[0]['mobile'] : ""; $_SESSION["identity"] = (isset($user_details[0]['mobile'])) ? $user_details[0]['mobile'] : ""; $_SESSION["user_id"] = (isset($user_details[0]['id'])) ? $user_details[0]['id'] : ""; $_SESSION["email"] = (isset($user_details[0]['email'])) ? $user_details[0]['email'] : ""; $_SESSION["ion_auth_session_hash"] = "6583d6c4f205998ecacc9f51b68a2a2e44ea0006"; $transaction_type = (isset($transaction[0]['transaction_type'])) ? $transaction[0]['transaction_type'] : ""; $order_id = (isset($transaction[0]['order_id'])) ? $transaction[0]['order_id'] : ""; $response = $this->phonepe->check_status($_POST['transactionId']); $status = $paramList["code"]; if (!empty($transation_id)) { $transaction = fetch_details('transactions', ['txn_id' => $transation_id], '*'); $amount = $_POST['amount'] / 100; } else { $amount = 0; } if ($this->ion_auth->logged_in()) { if ($response) { if ($transaction_type == "wallet") { if ($status == 'PAYMENT_SUCCESS') { redirect(base_url("payment/wallet_success")); return false; } elseif ($status == "BAD_REQUEST" || $status == "AUTHORIZATION_FAILED" || $status == "PAYMENT_ERROR" || $status == "TRANSACTION_NOT_FOUND" || $status == "PAYMENT_DECLINED" || $status == "TIMED_OUT") { redirect(base_url("payment/cancel")); } else { $this->phonepe->check_status($transation_id); redirect(base_url("payment/wallet_success")); } } if (isset($order_id) && !empty($order_id)) { if ($status == "PAYMENT_SUCCESS") { redirect(base_url('payment/success'), 'refresh'); } elseif ($status == "BAD_REQUEST" || $status == "AUTHORIZATION_FAILED" || $status == "PAYMENT_ERROR" || $status == "TRANSACTION_NOT_FOUND" || $status == "PAYMENT_DECLINED" || $status == "TIMED_OUT") { redirect(base_url('payment/cancel'), 'refresh'); } else { redirect(base_url('payment/success'), 'refresh'); } } else { redirect(base_url(), 'refresh'); } } else { $this->session->set_flashdata('message', 'Order already exists with this transaction ID'); $this->session->set_flashdata('message_type', 'error'); redirect(base_url(), 'refresh'); } } else { redirect(base_url(), 'refresh'); } } public function initiate_paytm_transaction() { if ($this->data['is_logged_in']) { $_POST['user_id'] = $this->data['user']->id; $cart = get_cart_total($this->data['user']->id, false, '0', $_POST['address_id']); $wallet_balance = fetch_details('users', 'id=' . $this->data['user']->id, 'balance'); $wallet_balance = $wallet_balance[0]['balance']; $overall_amount = $cart['overall_amount']; if ($_POST['wallet_used'] == 1 && $wallet_balance > 0) { $overall_amount = $overall_amount - $wallet_balance; } if (!empty($_POST['promo_code'])) { $validate = validate_promo_code($_POST['promo_code'], $this->data['user']->id, $cart['total_arr']); if ($validate['error']) { $this->response['error'] = true; $this->response['message'] = $validate['message']; print_r(json_encode($this->response)); return false; } else { $overall_amount = $overall_amount - $validate['data'][0]['final_discount']; } } $amount = $overall_amount; $user_id = $this->data['user']->id; $settings = get_settings('system_settings', true); $app_name = isset($settings['app_name']) && !empty($settings['app_name']) ? $settings['app_name'] : 'eShop - ecommerce'; $app_name = str_replace(" ", "", $settings['app_name']); $order_id = $app_name . "-" . time() . rand(1000, 9999); $paytmParams = array(); $paytmParams["body"] = array( "requestType" => "Payment", "websiteName" => "WEBSTAGING", "orderId" => $order_id, "txnAmount" => array( "value" => $amount, "currency" => "INR", ), "callbackUrl" => base_url('payment/paytm_response'), "userInfo" => array( "custId" => $user_id, ), ); $res = $this->paytm->initiate_transaction($paytmParams); $this->response['error'] = false; $this->response['message'] = 'trasaction initiated successfully'; $this->response['data'] = $res; $this->response['data']['order_id'] = $order_id; print_r(json_encode($this->response)); return; } else { $this->response['error'] = true; $this->response['message'] = "Unauthorised access is not allowed."; print_r(json_encode($this->response)); return false; } } public function paytm_response() { if ($this->ion_auth->logged_in()) { $credentials = $this->paytm->get_credentials(); $paytmChecksum = ""; $paramList = array(); $isValidChecksum = "FALSE"; $paramList = $_POST; $paytmChecksum = isset($paramList["CHECKSUMHASH"]) ? $paramList["CHECKSUMHASH"] : ""; //Sent by Paytm pg $isValidChecksum = $this->paytm->verifySignature($paramList, $credentials['paytm_merchant_key'], $paytmChecksum); //will return TRUE or FALSE string. if ($isValidChecksum == "TRUE") { $response = verify_payment_transaction($paramList['ORDERID'], 'paytm'); $txn = fetch_details('transactions', ['txn_id' => $response['data']['body']['orderId']], 'COUNT(id) as total'); $total_txn = $txn[0]['total']; if ($total_txn == 0) { $status = $response['data']['body']['resultInfo']['resultStatus']; $custom_data = $response['data']['body']['merchantUniqueReference']; $custom_data = explode("|", $custom_data); $address_id = $custom_data[0]; $wallet_used = $custom_data[1]; $promo_code = $custom_data[2]; $latitude = $custom_data[3]; $longitude = $custom_data[4]; $delivery_date = $custom_data[5]; $delivery_time = $custom_data[6]; $mobile = $custom_data[7]; if ($status == "TXN_SUCCESS" || $status == "PENDING") { $cart = get_cart_total($this->data['user']->id, false, '0', $address_id); $_POST['delivery_charge'] = get_delivery_charge($address_id, $cart['total_arr'],$this->data['user']->id); $_POST['address_id'] = $address_id; $_POST['latitude'] = $latitude; $_POST['longitude'] = $longitude; $_POST['delivery_date'] = $delivery_date; $_POST['delivery_time'] = $delivery_time; $_POST['delivery_charge'] = str_replace(',', '', $_POST['delivery_charge']); $_POST['is_delivery_charge_returnable'] = intval($_POST['delivery_charge']) != 0 ? 1 : 0; $quantity = implode(',', array_column($cart, 'qty')); $_POST['product_variant_id'] = implode(',', array_column($cart, 'id')); $_POST['quantity'] = $quantity; $_POST['user_id'] = $this->data['user']->id; $_POST['promo_code'] = $promo_code ? $promo_code : ''; $final_total = $cart['overall_amount']; $wallet_balance = fetch_details('users', 'id=' . $_POST['user_id'], 'balance'); $_POST['mobile'] = $mobile; $wallet_balance = $wallet_balance[0]['balance']; $_POST['wallet_balance_used'] = 0; $_POST['payment_method'] = 'Paytm'; if ($wallet_used == 1) { $_POST['is_wallet_used'] = 1; if ($wallet_balance >= $final_total) { $_POST['wallet_balance_used'] = $final_total; $_POST['payment_method'] = 'wallet'; } else { $_POST['wallet_balance_used'] = $wallet_balance; } } $promo_discount = 0; if (isset($_POST['promo_code']) && !empty($_POST['promo_code'])) { $validate = validate_promo_code($_POST['promo_code'], $this->data['user']->id, $cart['total_arr']); if ($validate['error'] == false) { $promo_discount = $validate['data'][0]['final_discount']; $_POST['promo_discount'] = $validate['data'][0]['final_discount']; } } $_POST['final_total'] = $cart['overall_amount'] - $_POST['wallet_balance_used'] - $promo_discount; $_POST['active_status'] = $status == "TXN_SUCCESS" ? 'received' : 'awaiting'; $data['status'] = $status == "TXN_SUCCESS" ? 'Success' : 'Pending'; $data['txn_id'] = $response['data']['body']['orderId']; $data['message'] = 'Order placed Successfully'; $res = $this->order_model->place_order($_POST); $data['order_id'] = $res['order_id']; $data['user_id'] = $this->data['user']->id; $data['type'] = 'Paytm'; $data['amount'] = $response['data']['body']['txnAmount']; if ($res['error'] == false) { $this->transaction_model->add_transaction($data); } redirect(base_url('payment/success'), 'refresh'); } else { redirect(base_url('payment/cancel'), 'refresh'); } } else { redirect(base_url('payment/success'), 'refresh'); } } else { $this->session->set_flashdata('message', 'Order already exists with this transaction ID'); $this->session->set_flashdata('message_type', 'error'); redirect(base_url(), 'refresh'); } } else { redirect(base_url(), 'refresh'); } } public function process_myfatoorah() { /** * step 1 : validate transaction * step 2: if successful - place order * step 3: add transaction * step 4: if failed * step 5: just add transaction and don't place order * step 6: redirect based on the status to payment/success or payment/cancel */ $payment_id = (isset($_GET['paymentId']) && !empty($_GET['paymentId'])) ? trim($_GET['paymentId']) : ""; if (empty($payment_id)) { redirect(base_url("payment/cancel")); return; } $status = $this->my_fatoorah->getPaymentStatus($payment_id); $invoice_status = (isset($status->Data->InvoiceStatus) && !empty($status->Data->InvoiceStatus)) ? $status->Data->InvoiceStatus : ""; if ($invoice_status != 'Canceled') { update_details(['active_status' => 'received'], ['order_id' => $status->Data->UserDefinedField], 'order_items'); $order_status = json_encode(array(array('received', date("d-m-Y h:i:sa")))); update_details(['status' => $order_status], ['order_id' => $status->Data->UserDefinedField], 'order_items', false); update_details(['payu_txn_id' => $payment_id], ['order_id' => $status->Data->UserDefinedField], 'transactions'); redirect(base_url("payment/wallet_success")); return; } else { redirect(base_url("payment/cancel")); } } public function success() { $this->data['main_page'] = 'payment-success'; $this->data['title'] = 'Payment Success | ' . $this->data['web_settings']['site_title']; $this->data['keywords'] = 'Payment Success, ' . $this->data['web_settings']['meta_keywords']; $this->data['description'] = 'Payment Success | ' . $this->data['web_settings']['meta_description']; $this->data['meta_description'] = ''; $this->load->view('front-end/' . THEME . '/template', $this->data); } public function cancel() { $this->data['main_page'] = 'payment-cancel'; $this->data['title'] = 'Payment Cancel | ' . $this->data['web_settings']['site_title']; $this->data['keywords'] = 'Payment Cancel, ' . $this->data['web_settings']['meta_keywords']; $this->data['description'] = 'Payment Cancel | ' . $this->data['web_settings']['meta_description']; $this->data['meta_description'] = ''; $this->load->view('front-end/' . THEME . '/template', $this->data); } function app_payment_status() { $paypalInfo = $this->input->get(); if (!empty($paypalInfo) && isset($_GET['st']) && strtolower($_GET['st']) == "completed") { $response['error'] = false; $response['message'] = "Pagesa është kryer me sukses."; $response['data'] = $paypalInfo; } elseif (!empty($paypalInfo) && isset($_GET['st']) && strtolower($_GET['st']) == "authorized") { $response['error'] = false; $response['message'] = "Your payment has been Authorized successfully. We will capture your transaction within 30 minutes, once we process your order. After successful capture Ads wil be credited automatically."; $response['data'] = $paypalInfo; } else { $response['error'] = true; $response['message'] = "Pagesa është refuzuar. "; $response['data'] = (isset($_GET)) ? $this->input->get() : ""; } print_r(json_encode($response)); } /* Capture all the authorized transactions We are using another library and API for this operation */ function do_capture() { // Load PayPal library $this->config->load('paypal_lib'); $config = array( 'Sandbox' => $this->config->item('Sandbox'), // Sandbox / testing mode option. 'APIUsername' => $this->config->item('APIUsername'), // PayPal API username of the API caller 'APIPassword' => $this->config->item('APIPassword'), // PayPal API password of the API caller 'APISignature' => $this->config->item('APISignature'), // PayPal API signature of the API caller 'APISubject' => '', // PayPal API subject (email address of 3rd party user that has granted API permission for your app) 'APIVersion' => $this->config->item('APIVersion') // API version you'd like to use for your call. You can set a default version in the class and leave this blank if you want. ); // Show Errors if ($config['Sandbox']) { error_reporting(E_ALL); ini_set('display_errors', '1'); } $this->load->library('Paypal_pro', $config); $where = " `payment_type` = 'paypal' and (status = 'Pending' or status = 'pending') "; $q = $this->db->get_where('transaction', $where); $paypal_txns = $q->result_array(); foreach ($paypal_txns as $transaction) { $DCFields = array( 'authorizationid' => $transaction['transaction_id'], // Required. The authorization identification number of the payment you want to capture. This is the transaction ID returned from DoExpressCheckoutPayment or DoDirectPayment. 'amt' => $transaction['amount'] . '.00', // Required. Must have two decimal places. Decimal separator must be a period (.) and optional thousands separator must be a comma (,) 'completetype' => 'Complete', // Required. The value Complete indiciates that this is the last capture you intend to make. The value NotComplete indicates that you intend to make additional captures. 'currencycode' => 'USD', // Three-character currency code 'invnum' => 'NonVoIP#' . $transaction['id'], // Your invoice number 'note' => 'Transaction captured by nonVoIP system', // Informational note about this setlement that is displayed to the buyer in an email and in his transaction history. 255 character max. 'softdescriptor' => 'Transaction captured by nonVoIP system', // Per transaction description of the payment that is passed to the customer's credit card statement. 'storeid' => '', // ID of the merchant store. This field is required for point-of-sale transactions. Max: 50 char 'terminalid' => '' // ID of the terminal. 50 char max. ); $PayPalRequestData = array('DCFields' => $DCFields); $PayPalResult = $this->paypal_pro->DoCapture($PayPalRequestData); if (!$this->paypal_pro->APICallSuccessful($PayPalResult['ACK'])) { /* some error occured please display the approriate message */ } else { /* Successful call. Load view or whatever you need to do here. */ } } } public function wallet_success() { if (!$this->ion_auth->logged_in()) { redirect(base_url()); } $this->data['main_page'] = 'payment-wallet-success'; $this->data['title'] = 'Payment Success | ' . $this->data['web_settings']['site_title']; $this->data['keywords'] = 'Payment Success, ' . $this->data['web_settings']['meta_keywords']; $this->data['description'] = 'Payment Success | ' . $this->data['web_settings']['meta_description']; $this->data['meta_description'] = ''; $this->load->view('front-end/' . THEME . '/template', $this->data); } }
/home/users/unlimited/www/eshop.codeskitter.site/application/controllers/Payment.php