shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

globalpay.php (17927B)


      1 <?php
      2 class ControllerExtensionPaymentGlobalpay extends Controller {
      3 	private $error = array();
      4 
      5 	public function index() {
      6 		$this->load->language('extension/payment/globalpay');
      7 
      8 		$this->document->setTitle($this->language->get('heading_title'));
      9 
     10 		$this->load->model('setting/setting');
     11 
     12 		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
     13 			$this->model_setting_setting->editSetting('payment_globalpay', $this->request->post);
     14 
     15 			$this->session->data['success'] = $this->language->get('text_success');
     16 
     17 			$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true));
     18 		}
     19 
     20 		$data['notify_url'] = HTTPS_CATALOG . 'index.php?route=extension/payment/globalpay/notify';
     21 
     22 		if (isset($this->error['warning'])) {
     23 			$data['error_warning'] = $this->error['warning'];
     24 		} else {
     25 			$data['error_warning'] = '';
     26 		}
     27 
     28 		if (isset($this->error['error_merchant_id'])) {
     29 			$data['error_merchant_id'] = $this->error['error_merchant_id'];
     30 		} else {
     31 			$data['error_merchant_id'] = '';
     32 		}
     33 
     34 		if (isset($this->error['error_secret'])) {
     35 			$data['error_secret'] = $this->error['error_secret'];
     36 		} else {
     37 			$data['error_secret'] = '';
     38 		}
     39 
     40 		if (isset($this->error['error_live_url'])) {
     41 			$data['error_live_url'] = $this->error['error_live_url'];
     42 		} else {
     43 			$data['error_live_url'] = '';
     44 		}
     45 
     46 		if (isset($this->error['error_demo_url'])) {
     47 			$data['error_demo_url'] = $this->error['error_demo_url'];
     48 		} else {
     49 			$data['error_demo_url'] = '';
     50 		}
     51 
     52 		$data['breadcrumbs'] = array();
     53 
     54 		$data['breadcrumbs'][] = array(
     55 			'text' => $this->language->get('text_home'),
     56 			'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
     57 		);
     58 
     59 		$data['breadcrumbs'][] = array(
     60 			'text' => $this->language->get('text_extension'),
     61 			'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
     62 		);
     63 
     64 		$data['breadcrumbs'][] = array(
     65 			'text' => $this->language->get('heading_title'),
     66 			'href' => $this->url->link('extension/payment/globalpay', 'user_token=' . $this->session->data['user_token'], true)
     67 		);
     68 
     69 		$data['action'] = $this->url->link('extension/payment/globalpay', 'user_token=' . $this->session->data['user_token'], true);
     70 		
     71 		$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
     72 
     73 		if (isset($this->request->post['payment_globalpay_merchant_id'])) {
     74 			$data['payment_globalpay_merchant_id'] = $this->request->post['payment_globalpay_merchant_id'];
     75 		} else {
     76 			$data['payment_globalpay_merchant_id'] = $this->config->get('payment_globalpay_merchant_id');
     77 		}
     78 
     79 		if (isset($this->request->post['payment_globalpay_secret'])) {
     80 			$data['payment_globalpay_secret'] = $this->request->post['payment_globalpay_secret'];
     81 		} else {
     82 			$data['payment_globalpay_secret'] = $this->config->get('payment_globalpay_secret');
     83 		}
     84 
     85 		if (isset($this->request->post['payment_globalpay_rebate_password'])) {
     86 			$data['payment_globalpay_rebate_password'] = $this->request->post['payment_globalpay_rebate_password'];
     87 		} else {
     88 			$data['payment_globalpay_rebate_password'] = $this->config->get('payment_globalpay_rebate_password');
     89 		}
     90 
     91 		if (isset($this->request->post['payment_globalpay_live_demo'])) {
     92 			$data['payment_globalpay_live_demo'] = $this->request->post['payment_globalpay_live_demo'];
     93 		} else {
     94 			$data['payment_globalpay_live_demo'] = $this->config->get('payment_globalpay_live_demo');
     95 		}
     96 
     97 		if (isset($this->request->post['payment_globalpay_geo_zone_id'])) {
     98 			$data['payment_globalpay_geo_zone_id'] = $this->request->post['payment_globalpay_geo_zone_id'];
     99 		} else {
    100 			$data['payment_globalpay_geo_zone_id'] = $this->config->get('payment_globalpay_geo_zone_id');
    101 		}
    102 
    103 		$this->load->model('localisation/geo_zone');
    104 
    105 		$data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();
    106 
    107 		if (isset($this->request->post['payment_globalpay_total'])) {
    108 			$data['payment_globalpay_total'] = $this->request->post['payment_globalpay_total'];
    109 		} else {
    110 			$data['payment_globalpay_total'] = $this->config->get('payment_globalpay_total');
    111 		}
    112 
    113 		if (isset($this->request->post['payment_globalpay_sort_order'])) {
    114 			$data['payment_globalpay_sort_order'] = $this->request->post['payment_globalpay_sort_order'];
    115 		} else {
    116 			$data['payment_globalpay_sort_order'] = $this->config->get('payment_globalpay_sort_order');
    117 		}
    118 
    119 		if (isset($this->request->post['payment_globalpay_status'])) {
    120 			$data['payment_globalpay_status'] = $this->request->post['payment_globalpay_status'];
    121 		} else {
    122 			$data['payment_globalpay_status'] = $this->config->get('payment_globalpay_status');
    123 		}
    124 
    125 		if (isset($this->request->post['payment_globalpay_debug'])) {
    126 			$data['payment_globalpay_debug'] = $this->request->post['payment_globalpay_debug'];
    127 		} else {
    128 			$data['payment_globalpay_debug'] = $this->config->get('payment_globalpay_debug');
    129 		}
    130 
    131 		if (isset($this->request->post['payment_globalpay_account'])) {
    132 			$data['payment_globalpay_account'] = $this->request->post['payment_globalpay_account'];
    133 		} else {
    134 			$data['payment_globalpay_account'] = $this->config->get('payment_globalpay_account');
    135 		}
    136 
    137 		if (isset($this->request->post['payment_globalpay_auto_settle'])) {
    138 			$data['payment_globalpay_auto_settle'] = $this->request->post['payment_globalpay_auto_settle'];
    139 		} else {
    140 			$data['payment_globalpay_auto_settle'] = $this->config->get('payment_globalpay_auto_settle');
    141 		}
    142 
    143 		if (isset($this->request->post['payment_globalpay_card_select'])) {
    144 			$data['payment_globalpay_card_select'] = $this->request->post['payment_globalpay_card_select'];
    145 		} else {
    146 			$data['payment_globalpay_card_select'] = $this->config->get('payment_globalpay_card_select');
    147 		}
    148 
    149 		if (isset($this->request->post['payment_globalpay_tss_check'])) {
    150 			$data['payment_globalpay_tss_check'] = $this->request->post['payment_globalpay_tss_check'];
    151 		} else {
    152 			$data['payment_globalpay_tss_check'] = $this->config->get('payment_globalpay_tss_check');
    153 		}
    154 
    155 		if (isset($this->request->post['globalpay_order_status_success_settled_id'])) {
    156 			$data['globalpay_order_status_success_settled_id'] = $this->request->post['globalpay_order_status_success_settled_id'];
    157 		} else {
    158 			$data['globalpay_order_status_success_settled_id'] = $this->config->get('globalpay_order_status_success_settled_id');
    159 		}
    160 
    161 		if (isset($this->request->post['payment_globalpay_order_status_success_unsettled_id'])) {
    162 			$data['payment_globalpay_order_status_success_unsettled_id'] = $this->request->post['payment_globalpay_order_status_success_unsettled_id'];
    163 		} else {
    164 			$data['payment_globalpay_order_status_success_unsettled_id'] = $this->config->get('payment_globalpay_order_status_success_unsettled_id');
    165 		}
    166 
    167 		if (isset($this->request->post['payment_globalpay_order_status_decline_id'])) {
    168 			$data['payment_globalpay_order_status_decline_id'] = $this->request->post['payment_globalpay_order_status_decline_id'];
    169 		} else {
    170 			$data['payment_globalpay_order_status_decline_id'] = $this->config->get('payment_globalpay_order_status_decline_id');
    171 		}
    172 
    173 		if (isset($this->request->post['payment_globalpay_order_status_decline_pending_id'])) {
    174 			$data['payment_globalpay_order_status_decline_pending_id'] = $this->request->post['payment_globalpay_order_status_decline_pending_id'];
    175 		} else {
    176 			$data['payment_globalpay_order_status_decline_pending_id'] = $this->config->get('payment_globalpay_order_status_decline_pending_id');
    177 		}
    178 
    179 		if (isset($this->request->post['payment_globalpay_order_status_decline_stolen_id'])) {
    180 			$data['payment_globalpay_order_status_decline_stolen_id'] = $this->request->post['payment_globalpay_order_status_decline_stolen_id'];
    181 		} else {
    182 			$data['payment_globalpay_order_status_decline_stolen_id'] = $this->config->get('payment_globalpay_order_status_decline_stolen_id');
    183 		}
    184 
    185 		if (isset($this->request->post['payment_globalpay_order_status_decline_bank_id'])) {
    186 			$data['payment_globalpay_order_status_decline_bank_id'] = $this->request->post['payment_globalpay_order_status_decline_bank_id'];
    187 		} else {
    188 			$data['payment_globalpay_order_status_decline_bank_id'] = $this->config->get('payment_globalpay_order_status_decline_bank_id');
    189 		}
    190 
    191 		$this->load->model('localisation/order_status');
    192 
    193 		$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
    194 
    195 		if (isset($this->request->post['payment_globalpay_live_url'])) {
    196 			$data['payment_globalpay_live_url'] = $this->request->post['payment_globalpay_live_url'];
    197 		} else {
    198 			$data['payment_globalpay_live_url'] = $this->config->get('payment_globalpay_live_url');
    199 		}
    200 
    201 		if (empty($data['payment_globalpay_live_url'])) {
    202 			$data['payment_globalpay_live_url'] = 'https://hpp.globaliris.com/pay';
    203 		}
    204 
    205 		if (isset($this->request->post['payment_globalpay_demo_url'])) {
    206 			$data['payment_globalpay_demo_url'] = $this->request->post['payment_globalpay_demo_url'];
    207 		} else {
    208 			$data['payment_globalpay_demo_url'] = $this->config->get('payment_globalpay_demo_url');
    209 		}
    210 
    211 		if (empty($data['payment_globalpay_demo_url'])) {
    212 			$data['payment_globalpay_demo_url'] = 'https://hpp.sandbox.globaliris.com/pay';
    213 		}
    214 
    215 		$data['header'] = $this->load->controller('common/header');
    216 		$data['column_left'] = $this->load->controller('common/column_left');
    217 		$data['footer'] = $this->load->controller('common/footer');
    218 
    219 		$this->response->setOutput($this->load->view('extension/payment/globalpay', $data));
    220 	}
    221 
    222 	public function install() {
    223 		$this->load->model('extension/payment/globalpay');
    224 
    225 		$this->model_extension_payment_globalpay->install();
    226 	}
    227 
    228 	public function order() {
    229 		if ($this->config->get('payment_globalpay_status')) {
    230 			$this->load->model('extension/payment/globalpay');
    231 
    232 			$globalpay_order = $this->model_extension_payment_globalpay->getOrder($this->request->get['order_id']);
    233 
    234 			if (!empty($globalpay_order)) {
    235 				$this->load->language('extension/payment/globalpay');
    236 
    237 				$globalpay_order['total_captured'] = $this->model_extension_payment_globalpay->getTotalCaptured($globalpay_order['globalpay_order_id']);
    238 
    239 				$globalpay_order['total_formatted'] = $this->currency->format($globalpay_order['total'], $globalpay_order['currency_code'], 1, true);
    240 				$globalpay_order['total_captured_formatted'] = $this->currency->format($globalpay_order['total_captured'], $globalpay_order['currency_code'], 1, true);
    241 
    242 				$data['globalpay_order'] = $globalpay_order;
    243 
    244 				$data['auto_settle'] = $globalpay_order['settle_type'];
    245 
    246 				$data['order_id'] = $this->request->get['order_id'];
    247 				
    248 				$data['user_token'] = $this->request->get['user_token'];
    249 
    250 				return $this->load->view('extension/payment/globalpay_order', $data);
    251 			}
    252 		}
    253 	}
    254 
    255 	public function void() {
    256 		$this->load->language('extension/payment/globalpay');
    257 		$json = array();
    258 
    259 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '') {
    260 			$this->load->model('extension/payment/globalpay');
    261 
    262 			$globalpay_order = $this->model_extension_payment_globalpay->getOrder($this->request->post['order_id']);
    263 
    264 			$void_response = $this->model_extension_payment_globalpay->void($this->request->post['order_id']);
    265 
    266 			$this->model_extension_payment_globalpay->logger('Void result:\r\n' . print_r($void_response, 1));
    267 
    268 			if (isset($void_response->result) && $void_response->result == '00') {
    269 				$this->model_extension_payment_globalpay->addTransaction($globalpay_order['globalpay_order_id'], 'void', 0.00);
    270 				$this->model_extension_payment_globalpay->updateVoidStatus($globalpay_order['globalpay_order_id'], 1);
    271 
    272 				$json['msg'] = $this->language->get('text_void_ok');
    273 				$json['data'] = array();
    274 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    275 				$json['error'] = false;
    276 			} else {
    277 				$json['error'] = true;
    278 				$json['msg'] = isset($void_response->message) && !empty($void_response->message) ? (string)$void_response->message : 'Unable to void';
    279 			}
    280 		} else {
    281 			$json['error'] = true;
    282 			$json['msg'] = 'Missing data';
    283 		}
    284 
    285 		$this->response->addHeader('Content-Type: application/json');
    286 		$this->response->setOutput(json_encode($json));
    287 	}
    288 
    289 	public function capture() {
    290 		$this->load->language('extension/payment/globalpay');
    291 		$json = array();
    292 
    293 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '' && isset($this->request->post['amount']) && $this->request->post['amount'] > 0) {
    294 			$this->load->model('extension/payment/globalpay');
    295 
    296 			$globalpay_order = $this->model_extension_payment_globalpay->getOrder($this->request->post['order_id']);
    297 
    298 			$capture_response = $this->model_extension_payment_globalpay->capture($this->request->post['order_id'], $this->request->post['amount']);
    299 
    300 			$this->model_extension_payment_globalpay->logger('Settle result:\r\n' . print_r($capture_response, 1));
    301 
    302 			if (isset($capture_response->result) && $capture_response->result == '00') {
    303 				$this->model_extension_payment_globalpay->addTransaction($globalpay_order['globalpay_order_id'], 'payment', $this->request->post['amount']);
    304 
    305 				$total_captured = $this->model_extension_payment_globalpay->getTotalCaptured($globalpay_order['globalpay_order_id']);
    306 
    307 				if ($total_captured >= $globalpay_order['total'] || $globalpay_order['settle_type'] == 0) {
    308 					$this->model_extension_payment_globalpay->updateCaptureStatus($globalpay_order['globalpay_order_id'], 1);
    309 					$capture_status = 1;
    310 					$json['msg'] = $this->language->get('text_capture_ok_order');
    311 				} else {
    312 					$capture_status = 0;
    313 					$json['msg'] = $this->language->get('text_capture_ok');
    314 				}
    315 
    316 				$this->model_extension_payment_globalpay->updateForRebate($globalpay_order['globalpay_order_id'], $capture_response->pasref, $capture_response->orderid);
    317 
    318 				$json['data'] = array();
    319 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    320 				$json['data']['amount'] = $this->request->post['amount'];
    321 				$json['data']['capture_status'] = $capture_status;
    322 				$json['data']['total'] = (float)$total_captured;
    323 				$json['error'] = false;
    324 			} else {
    325 				$json['error'] = true;
    326 				$json['msg'] = isset($capture_response->message) && !empty($capture_response->message) ? (string)$capture_response->message : 'Unable to capture';
    327 			}
    328 		} else {
    329 			$json['error'] = true;
    330 			$json['msg'] = $this->language->get('error_data_missing');
    331 		}
    332 
    333 		$this->response->addHeader('Content-Type: application/json');
    334 		$this->response->setOutput(json_encode($json));
    335 	}
    336 
    337 	public function rebate() {
    338 		$this->load->language('extension/payment/globalpay');
    339 		$json = array();
    340 
    341 		if (isset($this->request->post['order_id']) && !empty($this->request->post['order_id'])) {
    342 			$this->load->model('extension/payment/globalpay');
    343 
    344 			$globalpay_order = $this->model_extension_payment_globalpay->getOrder($this->request->post['order_id']);
    345 
    346 			$rebate_response = $this->model_extension_payment_globalpay->rebate($this->request->post['order_id'], $this->request->post['amount']);
    347 
    348 			$this->model_extension_payment_globalpay->logger('Rebate result:\r\n' . print_r($rebate_response, 1));
    349 
    350 			if (isset($rebate_response->result) && $rebate_response->result == '00') {
    351 				$this->model_extension_payment_globalpay->addTransaction($globalpay_order['globalpay_order_id'], 'rebate', $this->request->post['amount']*-1);
    352 
    353 				$total_rebated = $this->model_extension_payment_globalpay->getTotalRebated($globalpay_order['globalpay_order_id']);
    354 				$total_captured = $this->model_extension_payment_globalpay->getTotalCaptured($globalpay_order['globalpay_order_id']);
    355 
    356 				if ($total_captured <= 0 && $globalpay_order['capture_status'] == 1) {
    357 					$this->model_extension_payment_globalpay->updateRebateStatus($globalpay_order['globalpay_order_id'], 1);
    358 					$rebate_status = 1;
    359 					$json['msg'] = $this->language->get('text_rebate_ok_order');
    360 				} else {
    361 					$rebate_status = 0;
    362 					$json['msg'] = $this->language->get('text_rebate_ok');
    363 				}
    364 
    365 				$json['data'] = array();
    366 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    367 				$json['data']['amount'] = $this->request->post['amount']*-1;
    368 				$json['data']['total_captured'] = (float)$total_captured;
    369 				$json['data']['total_rebated'] = (float)$total_rebated;
    370 				$json['data']['rebate_status'] = $rebate_status;
    371 				$json['error'] = false;
    372 			} else {
    373 				$json['error'] = true;
    374 				$json['msg'] = isset($rebate_response->message) && !empty($rebate_response->message) ? (string)$rebate_response->message : 'Unable to rebate';
    375 			}
    376 		} else {
    377 			$json['error'] = true;
    378 			$json['msg'] = 'Missing data';
    379 		}
    380 
    381 		$this->response->addHeader('Content-Type: application/json');
    382 		$this->response->setOutput(json_encode($json));
    383 	}
    384 
    385 	protected function validate() {
    386 		if (!$this->user->hasPermission('modify', 'extension/payment/globalpay')) {
    387 			$this->error['warning'] = $this->language->get('error_permission');
    388 		}
    389 
    390 		if (!$this->request->post['payment_globalpay_merchant_id']) {
    391 			$this->error['error_merchant_id'] = $this->language->get('error_merchant_id');
    392 		}
    393 
    394 		if (!$this->request->post['payment_globalpay_secret']) {
    395 			$this->error['error_secret'] = $this->language->get('error_secret');
    396 		}
    397 
    398 		if (!$this->request->post['payment_globalpay_live_url']) {
    399 			$this->error['error_live_url'] = $this->language->get('error_live_url');
    400 		}
    401 
    402 		if (!$this->request->post['payment_globalpay_demo_url']) {
    403 			$this->error['error_demo_url'] = $this->language->get('error_demo_url');
    404 		}
    405 
    406 		return !$this->error;
    407 	}
    408 }