<?php defined('BASEPATH') OR exit('No direct script access allowed'); if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Max-Age: 86400'); } if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); exit(0); } class Api extends CI_Controller { var $auth_token; public function __construct() { parent::__construct(); $this->load->model('Api_model'); $this->load->model('Validation_model'); $method = $this->router->fetch_method(); $data = (array) json_decode(file_get_contents('php://input')); if($method == 'profile') { $data = $_POST; } if (isset(apache_request_headers()['Auth'])) { $this->auth_token = apache_request_headers()['Auth']; $data['auth_token'] = $this->auth_token; } $res = $this->Validation_model->validation_check($method, $data); if($res['state'] == 1) { $this->errorResponse($res['response']['code'], $res['response']['message']); die; } } public function index() { $res = $this->Validation_model->validation_check('login',array('email_id'=>'adarsh')); } public function response($data) { $result = array( 'code' => 1, 'message' => 'Success', 'responseResult' =>$data ); print json_encode($result); } public function errorResponse($errorCode, $errorDesc) { $result = array( 'code' => 0, 'message' => 'Failure', 'errorCode'=> $errorCode, 'errorDesc'=> $errorDesc ); print json_encode($result); } public function login(){ $data = (array) json_decode(file_get_contents('php://input')); $res = $this->Api_model->login($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function register(){ $data = (array) json_decode(file_get_contents('php://input')); $res = $this->Api_model->register($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function forgot(){ $data = (array) json_decode(file_get_contents('php://input')); $res = $this->Api_model->forgot($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function popular() { $res = $this->Api_model->popular(); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function category() { $res = $this->Api_model->category(); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function locality() { $res = $this->Api_model->locality(); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function favourite(){ $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->favourite($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function favouritelist() { $data['auth_token'] = $this->auth_token; $res = $this->Api_model->favouritelist($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function bookedlist() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->bookedlist($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function bookingdetails() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->bookingdetails($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function cancel() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->cancel($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function confirm() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->confirm($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function userinfo() { $data['auth_token'] = $this->auth_token; $res = $this->Api_model->userinfo($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function profile() { $data = $_POST; if(isset($_FILES['profile_picture'])) { $data['file'] = $_FILES['profile_picture']; } $data['auth_token'] = $this->auth_token; $res = $this->Api_model->update_profile($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function tempbooking() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->tempbooking($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function recommend() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; $res = $this->Api_model->recommend($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function discover() { $data = (array) json_decode(file_get_contents('php://input')); //$data['auth_token'] = $this->auth_token; $res = $this->Api_model->discover($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function event() { $data = (array) json_decode(file_get_contents('php://input')); //$data['auth_token'] = $this->auth_token; $res = $this->Api_model->event($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function search() { $data = (array) json_decode(file_get_contents('php://input')); //$data['auth_token'] = $this->auth_token; $res = $this->Api_model->search($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function searchEvent($str = null) { $data['str'] = $str; $res = $this->Api_model->searchEvent($data); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function get_cms_data() { $res = $this->Api_model->get_cms_data(); if($res['status']!=0){ $this->response($res['data']); } else{ $this->errorResponse($res['code'],$res['message']); } } public function payNow($auth_token='',$amount=0,$booking_id='',$event_id=''){ if(empty($auth_token) || empty($amount) || empty($booking_id)){ redirect('https://projects.nuvento.com/failure'); } $payData = array('auth_token'=>$auth_token,'amount'=>$amount,'booking_id'=>$booking_id); $res = $this->Api_model->payNow($payData); if($res['status']==1){ $this->paymentGateway($amount,$res['transaction_id'],$event_id,$booking_id); } else{ redirect('https://projects.nuvento.com/failure?event_id='.$eventid); } } public function paymentSuccessUrl(){ $response = ''; $transaction_id = ''; BayanPayPayment(); $BayanPayArray = $this->bayanPayArray('0','0','0','0'); $BayanPayOnlineObject = new BayanPayBitmapPaymentIntegration($BayanPayArray); if(isset($_REQUEST['responseParameter']) && $_REQUEST['responseParameter'] != ''){ $response = $BayanPayOnlineObject->decryptData($_REQUEST['responseParameter'],$BayanPayOnlineObject->merchantKey,$BayanPayOnlineObject->iv); $ref_id = explode('|',$response['Transaction_related_information']); $transaction_id = $ref_id[1]; $last_id = explode('|',$response['Merchant_Information']); $lastid = $last_id[1]; $eventid = $last_id[2]; $booking_id = $last_id[3]; $this->Api_model->update_payment($response,$transaction_id,$lastid,'1') ; redirect('https://projects.nuvento.com/bookingdetails?booking_id='.$booking_id); } } public function paymentFailureUrl(){ $lastid = ''; $response = ''; $transaction_id = ''; BayanPayPayment(); $BayanPayArray = $this->bayanPayArray('0','0','0','0'); $BayanPayOnlineObject = new BayanPayBitmapPaymentIntegration($BayanPayArray); if(isset($_REQUEST['responseParameter']) && $_REQUEST['responseParameter'] != ''){ $response = $BayanPayOnlineObject->decryptData($_REQUEST['responseParameter'],$BayanPayOnlineObject->merchantKey,$BayanPayOnlineObject->iv); $ref_id = explode('|',$response['Transaction_related_information']); $transaction_id = $ref_id[1]; $last_id = explode('|',$response['Merchant_Information']); $lastid = $last_id[1]; $eventid = $last_id[2]; $booking_id = $last_id[3]; $this->Api_model->update_payment($response,$transaction_id,$lastid,'0'); redirect('https://projects.nuvento.com/failure?event_id='.$eventid); } } public function paymentGateway($amount='0',$lastid='0',$event_id='0',$booking_id='0'){ BayanPayPayment(); $BayanPayArray = $this->bayanPayArray($amount,$lastid,$event_id,$booking_id); $BayanPayOnlineObject = new BayanPayBitmapPaymentIntegration($BayanPayArray); $requestParameter = $BayanPayOnlineObject->BayanPostData; if($BayanPayOnlineObject->url){ $requestUrl = 'https://payments.bayanpay.sa/direcpay/secure/PaymentTxnServlet'; } else{ $requestUrl = 'https://staging.bayanpay.sa/direcpay/secure/PaymentTxnServlet'; } $this->load->view('payment/payment',array('requestUrl'=>$requestUrl, 'requestParameter'=>$requestParameter)); } function baseurl(){ if(isset($_SERVER['HTTPS'])) $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http"; else $protocol = 'http'; return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } function bayanPayArray($amount = '0',$lastid='',$event_id='',$booking_id=''){ $settings = getSettings(); $BayanPayArray = array( 'BayanPay_Online_setting' => array( 'merchantKey' => $settings['merchant_key'], 'merchantId' => $settings['merchant_id'], 'collaboratorId' => 'BAYANPAY', 'iv' => '0123456789abcdef', 'url' => false// Set to false if you are using testing environment , set to true if you are using live environment ), 'Block_Existence_Indicator'=> array( 'transactionDataBlock' => true, 'billingDataBlock' => true, 'shippingDataBlock' => true, 'paymentDataBlock' => false, 'merchantDataBlock' => true, 'otherDataBlock' => false, 'DCCDataBlock' => false ), 'Field_Existence_Indicator_Transaction' => array( 'merchantOrderNumber' => time(), 'amount' => $amount, 'successUrl' => base_url('Api/paymentSuccessUrl'), 'failureUrl' => base_url('Api/paymentFailureUrl'), 'transactionMode' => 'INTERNET', 'payModeType' => 'CC', 'transactionType' => '01', 'currency' => 'SAR' ), 'Field_Existence_Indicator_Billing' => array( 'billToFirstName' => 'Soloman', 'billToLastName' => 'Vandy', 'billToStreet1' => '123,ParkStreet', 'billToStreet2' => 'Park Street', 'billToCity' => 'Riyadh', 'billToState' => 'Riyadh', 'billtoPostalCode' => '400081', 'billToCountry' => 'IN', 'billToEmail' => 'solomanv@test.com', 'billToMobileNumber' => '9820998209', 'billToPhoneNumber1' => '', 'billToPhoneNumber2' => '', 'billToPhoneNumber3' => '' ), 'Field_Existence_Indicator_Shipping' => array( 'shipToFirstName' => 'Soloman', 'shipToLastName' => 'Vandy', 'shipToStreet1' => '123ParkStreet', 'shipToStreet2' => 'parkstreet', 'shipToCity' => 'Riyadh', 'shipToState' => 'Riyadh', 'shipToPostalCode' => '400081', 'shipToCountry' => 'IN', 'shipToPhoneNumber1' => '', 'shipToPhoneNumber2' => '', 'shipToPhoneNumber3' => '', 'shipToMobileNumber' => '9820998209' ), 'Field_Existence_Indicator_Payment' => array( 'cardNumber' => '4111111111111111', // 1. Card Number 'expMonth' => '08', // 2. Expiry Month 'expYear' => '2020', // 3. Expiry Year 'CVV' => '123', // 4. CVV 'cardHolderName' => 'Soloman', // 5. Card Holder Name 'cardType' => 'Visa', // 6. Card Type 'custMobileNumber' => '9820998209', // 7. Customer Mobile Number 'paymentID' => '123456', // 8. Payment ID 'OTP' => '123456', // 9. OTP field 'gatewayID' => '1026', // 10.Gateway ID 'cardToken' => '1202' // 11.Card Token ), 'Field_Existence_Indicator_Merchant' => array( 'UDF1' => $lastid, 'UDF2' => $event_id, 'UDF3' => $booking_id ), 'Field_Existence_Indicator_OtherData' => array( 'custID' => '12345', 'transactionSource' => 'IVR', 'productInfo' => 'Book', 'isUserLoggedIn' => 'Y', 'itemTotal' => '500.00, 1000.00', 'itemCategory' => 'CD, Book', 'ignoreValidationResult'=> 'FALSE' ), 'Field_Existence_Indicator_DCC' => array( 'DCCReferenceNumber' => '09898787', // DCC Reference Number 'foreignAmount' => '240.00', // Foreign Amount 'ForeignCurrency' => 'USD' // Foreign Currency ) ); return $BayanPayArray; } } ?>