shop.balmet.com

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

realex_remote.php (17307B)


      1 <?php
      2 class ControllerExtensionPaymentRealexRemote extends Controller {
      3 	private $error = array();
      4 
      5 	public function index() {
      6 		$this->load->language('extension/payment/realex_remote');
      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_realex_remote', $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 		if (isset($this->error['warning'])) {
     21 			$data['error_warning'] = $this->error['warning'];
     22 		} else {
     23 			$data['error_warning'] = '';
     24 		}
     25 
     26 		if (isset($this->error['error_merchant_id'])) {
     27 			$data['error_merchant_id'] = $this->error['error_merchant_id'];
     28 		} else {
     29 			$data['error_merchant_id'] = '';
     30 		}
     31 
     32 		if (isset($this->error['error_secret'])) {
     33 			$data['error_secret'] = $this->error['error_secret'];
     34 		} else {
     35 			$data['error_secret'] = '';
     36 		}
     37 
     38 		$data['breadcrumbs'] = array();
     39 
     40 		$data['breadcrumbs'][] = array(
     41 			'text' => $this->language->get('text_home'),
     42 			'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
     43 		);
     44 
     45 		$data['breadcrumbs'][] = array(
     46 			'text' => $this->language->get('text_extension'),
     47 			'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
     48 		);
     49 
     50 		$data['breadcrumbs'][] = array(
     51 			'text' => $this->language->get('heading_title'),
     52 			'href' => $this->url->link('extension/payment/realex_remote', 'user_token=' . $this->session->data['user_token'], true)
     53 		);
     54 
     55 		$data['action'] = $this->url->link('extension/payment/realex_remote', 'user_token=' . $this->session->data['user_token'], true);
     56 		$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
     57 
     58 		if (isset($this->request->post['payment_realex_remote_merchant_id'])) {
     59 			$data['payment_realex_remote_merchant_id'] = $this->request->post['payment_realex_remote_merchant_id'];
     60 		} else {
     61 			$data['payment_realex_remote_merchant_id'] = $this->config->get('payment_realex_remote_merchant_id');
     62 		}
     63 
     64 		if (isset($this->request->post['payment_realex_remote_secret'])) {
     65 			$data['payment_realex_remote_secret'] = $this->request->post['payment_realex_remote_secret'];
     66 		} else {
     67 			$data['payment_realex_remote_secret'] = $this->config->get('payment_realex_remote_secret');
     68 		}
     69 
     70 		if (isset($this->request->post['payment_realex_remote_rebate_password'])) {
     71 			$data['payment_realex_remote_rebate_password'] = $this->request->post['payment_realex_remote_rebate_password'];
     72 		} else {
     73 			$data['payment_realex_remote_rebate_password'] = $this->config->get('payment_realex_remote_rebate_password');
     74 		}
     75 
     76 		if (isset($this->request->post['payment_realex_remote_geo_zone_id'])) {
     77 			$data['payment_realex_remote_geo_zone_id'] = $this->request->post['payment_realex_remote_geo_zone_id'];
     78 		} else {
     79 			$data['payment_realex_remote_geo_zone_id'] = $this->config->get('payment_realex_remote_geo_zone_id');
     80 		}
     81 
     82 		$this->load->model('localisation/geo_zone');
     83 
     84 		$data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();
     85 
     86 		if (isset($this->request->post['payment_realex_remote_total'])) {
     87 			$data['payment_realex_remote_total'] = $this->request->post['payment_realex_remote_total'];
     88 		} else {
     89 			$data['payment_realex_remote_total'] = $this->config->get('payment_realex_remote_total');
     90 		}
     91 
     92 		if (isset($this->request->post['payment_realex_remote_sort_order'])) {
     93 			$data['payment_realex_remote_sort_order'] = $this->request->post['payment_realex_remote_sort_order'];
     94 		} else {
     95 			$data['payment_realex_remote_sort_order'] = $this->config->get('payment_realex_remote_sort_order');
     96 		}
     97 
     98 		if (isset($this->request->post['payment_realex_remote_status'])) {
     99 			$data['payment_realex_remote_status'] = $this->request->post['payment_realex_remote_status'];
    100 		} else {
    101 			$data['payment_realex_remote_status'] = $this->config->get('payment_realex_remote_status');
    102 		}
    103 
    104 		if (isset($this->request->post['payment_realex_remote_card_data_status'])) {
    105 			$data['payment_realex_remote_card_data_status'] = $this->request->post['payment_realex_remote_card_data_status'];
    106 		} else {
    107 			$data['payment_realex_remote_card_data_status'] = $this->config->get('payment_realex_remote_card_data_status');
    108 		}
    109 
    110 		if (isset($this->request->post['payment_realex_remote_debug'])) {
    111 			$data['payment_realex_remote_debug'] = $this->request->post['payment_realex_remote_debug'];
    112 		} else {
    113 			$data['payment_realex_remote_debug'] = $this->config->get('payment_realex_remote_debug');
    114 		}
    115 
    116 		if (isset($this->request->post['payment_realex_remote_account'])) {
    117 			$data['payment_realex_remote_account'] = $this->request->post['payment_realex_remote_account'];
    118 		} else {
    119 			$data['payment_realex_remote_account'] = $this->config->get('payment_realex_remote_account');
    120 		}
    121 
    122 		if (isset($this->request->post['payment_realex_remote_auto_settle'])) {
    123 			$data['payment_realex_remote_auto_settle'] = $this->request->post['payment_realex_remote_auto_settle'];
    124 		} else {
    125 			$data['payment_realex_remote_auto_settle'] = $this->config->get('payment_realex_remote_auto_settle');
    126 		}
    127 
    128 		if (isset($this->request->post['payment_realex_remote_tss_check'])) {
    129 			$data['payment_realex_remote_tss_check'] = $this->request->post['payment_realex_remote_tss_check'];
    130 		} else {
    131 			$data['payment_realex_remote_tss_check'] = $this->config->get('payment_realex_remote_tss_check');
    132 		}
    133 
    134 		if (isset($this->request->post['payment_realex_remote_3d'])) {
    135 			$data['payment_realex_remote_3d'] = $this->request->post['payment_realex_remote_3d'];
    136 		} else {
    137 			$data['payment_realex_remote_3d'] = $this->config->get('payment_realex_remote_3d');
    138 		}
    139 
    140 		if (isset($this->request->post['payment_realex_remote_liability'])) {
    141 			$data['payment_realex_remote_liability'] = $this->request->post['payment_realex_remote_liability'];
    142 		} else {
    143 			$data['payment_realex_remote_liability'] = $this->config->get('payment_realex_remote_liability');
    144 		}
    145 
    146 		if (isset($this->request->post['payment_realex_remote_order_status_success_settled_id'])) {
    147 			$data['payment_realex_remote_order_status_success_settled_id'] = $this->request->post['payment_realex_remote_order_status_success_settled_id'];
    148 		} else {
    149 			$data['payment_realex_remote_order_status_success_settled_id'] = $this->config->get('payment_realex_remote_order_status_success_settled_id');
    150 		}
    151 
    152 		if (isset($this->request->post['payment_realex_remote_order_status_success_unsettled_id'])) {
    153 			$data['payment_realex_remote_order_status_success_unsettled_id'] = $this->request->post['payment_realex_remote_order_status_success_unsettled_id'];
    154 		} else {
    155 			$data['payment_realex_remote_order_status_success_unsettled_id'] = $this->config->get('payment_realex_remote_order_status_success_unsettled_id');
    156 		}
    157 
    158 		if (isset($this->request->post['payment_realex_remote_order_status_decline_id'])) {
    159 			$data['payment_realex_remote_order_status_decline_id'] = $this->request->post['payment_realex_remote_order_status_decline_id'];
    160 		} else {
    161 			$data['payment_realex_remote_order_status_decline_id'] = $this->config->get('payment_realex_remote_order_status_decline_id');
    162 		}
    163 
    164 		if (isset($this->request->post['payment_realex_remote_order_status_decline_pending_id'])) {
    165 			$data['payment_realex_remote_order_status_decline_pending_id'] = $this->request->post['payment_realex_remote_order_status_decline_pending_id'];
    166 		} else {
    167 			$data['payment_realex_remote_order_status_decline_pending_id'] = $this->config->get('payment_realex_remote_order_status_decline_pending_id');
    168 		}
    169 
    170 		if (isset($this->request->post['payment_realex_remote_order_status_decline_stolen_id'])) {
    171 			$data['payment_realex_remote_order_status_decline_stolen_id'] = $this->request->post['payment_realex_remote_order_status_decline_stolen_id'];
    172 		} else {
    173 			$data['payment_realex_remote_order_status_decline_stolen_id'] = $this->config->get('payment_realex_remote_order_status_decline_stolen_id');
    174 		}
    175 
    176 		if (isset($this->request->post['payment_realex_remote_order_status_decline_bank_id'])) {
    177 			$data['payment_realex_remote_order_status_decline_bank_id'] = $this->request->post['payment_realex_remote_order_status_decline_bank_id'];
    178 		} else {
    179 			$data['payment_realex_remote_order_status_decline_bank_id'] = $this->config->get('payment_realex_remote_order_status_decline_bank_id');
    180 		}
    181 
    182 		$this->load->model('localisation/order_status');
    183 
    184 		$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
    185 
    186 		$data['header'] = $this->load->controller('common/header');
    187 		$data['column_left'] = $this->load->controller('common/column_left');
    188 		$data['footer'] = $this->load->controller('common/footer');
    189 
    190 		$this->response->setOutput($this->load->view('extension/payment/realex_remote', $data));
    191 	}
    192 
    193 	public function install() {
    194 		$this->load->model('extension/payment/realex_remote');
    195 		$this->model_extension_payment_realex_remote->install();
    196 	}
    197 
    198 	public function order() {
    199 		if ($this->config->get('payment_realex_remote_status')) {
    200 			$this->load->model('extension/payment/realex_remote');
    201 
    202 			$realex_order = $this->model_extension_payment_realex_remote->getOrder($this->request->get['order_id']);
    203 
    204 			if (!empty($realex_order)) {
    205 				$this->load->language('extension/payment/realex_remote');
    206 
    207 				$realex_order['total_captured'] = $this->model_extension_payment_realex_remote->getTotalCaptured($realex_order['realex_remote_order_id']);
    208 
    209 				$realex_order['total_formatted'] = $this->currency->format($realex_order['total'], $realex_order['currency_code'], 1, true);
    210 				$realex_order['total_captured_formatted'] = $this->currency->format($realex_order['total_captured'], $realex_order['currency_code'], 1, true);
    211 
    212 				$data['realex_order'] = $realex_order;
    213 
    214 				$data['auto_settle'] = $realex_order['settle_type'];
    215 
    216 				$data['order_id'] = $this->request->get['order_id'];
    217 				
    218 				$data['user_token'] = $this->request->get['user_token'];
    219 
    220 				return $this->load->view('extension/payment/realex_remote_order', $data);
    221 			}
    222 		}
    223 	}
    224 
    225 	public function void() {
    226 		$this->load->language('extension/payment/realex_remote');
    227 		$json = array();
    228 
    229 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '') {
    230 			$this->load->model('extension/payment/realex_remote');
    231 
    232 			$realex_order = $this->model_extension_payment_realex_remote->getOrder($this->request->post['order_id']);
    233 
    234 			$void_response = $this->model_extension_payment_realex_remote->void($this->request->post['order_id']);
    235 
    236 			$this->model_extension_payment_realex_remote->logger('Void result:\r\n' . print_r($void_response, 1));
    237 
    238 			if (isset($void_response->result) && $void_response->result == '00') {
    239 				$this->model_extension_payment_realex_remote->addTransaction($realex_order['realex_remote_order_id'], 'void', 0.00);
    240 				$this->model_extension_payment_realex_remote->updateVoidStatus($realex_order['realex_remote_order_id'], 1);
    241 
    242 				$json['msg'] = $this->language->get('text_void_ok');
    243 				$json['data'] = array();
    244 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    245 				$json['error'] = false;
    246 			} else {
    247 				$json['error'] = true;
    248 				$json['msg'] = isset($void_response->message) && !empty($void_response->message) ? (string)$void_response->message : 'Unable to void';
    249 			}
    250 		} else {
    251 			$json['error'] = true;
    252 			$json['msg'] = 'Missing data';
    253 		}
    254 
    255 		$this->response->addHeader('Content-Type: application/json');
    256 		$this->response->setOutput(json_encode($json));
    257 	}
    258 
    259 	public function capture() {
    260 		$this->load->language('extension/payment/realex');
    261 		$json = array();
    262 
    263 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '' && isset($this->request->post['amount']) && $this->request->post['amount'] > 0) {
    264 			$this->load->model('extension/payment/realex_remote');
    265 
    266 			$realex_order = $this->model_extension_payment_realex_remote->getOrder($this->request->post['order_id']);
    267 
    268 			$capture_response = $this->model_extension_payment_realex_remote->capture($this->request->post['order_id'], $this->request->post['amount']);
    269 
    270 			$this->model_extension_payment_realex_remote->logger('Settle result:\r\n' . print_r($capture_response, 1));
    271 
    272 			if (isset($capture_response->result) && $capture_response->result == '00') {
    273 				$this->model_extension_payment_realex_remote->addTransaction($realex_order['realex_remote_order_id'], 'payment', $this->request->post['amount']);
    274 				$total_captured = $this->model_extension_payment_realex_remote->getTotalCaptured($realex_order['realex_remote_order_id']);
    275 
    276 				if ($total_captured >= $realex_order['total'] || $realex_order['settle_type'] == 0) {
    277 					$this->model_extension_payment_realex_remote->updateCaptureStatus($realex_order['realex_remote_order_id'], 1);
    278 					$capture_status = 1;
    279 					$json['msg'] = $this->language->get('text_capture_ok_order');
    280 				} else {
    281 					$capture_status = 0;
    282 					$json['msg'] = $this->language->get('text_capture_ok');
    283 				}
    284 
    285 				$this->model_extension_payment_realex_remote->updateForRebate($realex_order['realex_remote_order_id'], $capture_response->pasref, $capture_response->orderid);
    286 
    287 				$json['data'] = array();
    288 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    289 				$json['data']['amount'] = (float)$this->request->post['amount'];
    290 				$json['data']['capture_status'] = $capture_status;
    291 				$json['data']['total'] = (float)$total_captured;
    292 				$json['data']['total_formatted'] = $this->currency->format($total_captured, $realex_order['currency_code'], 1, true);
    293 				$json['error'] = false;
    294 			} else {
    295 				$json['error'] = true;
    296 				$json['msg'] = isset($capture_response->message) && !empty($capture_response->message) ? (string)$capture_response->message : 'Unable to capture';
    297 
    298 			}
    299 		} else {
    300 			$json['error'] = true;
    301 			$json['msg'] = 'Missing data';
    302 		}
    303 
    304 		$this->response->addHeader('Content-Type: application/json');
    305 		$this->response->setOutput(json_encode($json));
    306 	}
    307 
    308 	public function rebate() {
    309 		$this->load->language('extension/payment/realex_remote');
    310 		$json = array();
    311 
    312 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '') {
    313 			$this->load->model('extension/payment/realex_remote');
    314 
    315 			$realex_order = $this->model_extension_payment_realex_remote->getOrder($this->request->post['order_id']);
    316 
    317 			$rebate_response = $this->model_extension_payment_realex_remote->rebate($this->request->post['order_id'], $this->request->post['amount']);
    318 
    319 			$this->model_extension_payment_realex_remote->logger('Rebate result:\r\n' . print_r($rebate_response, 1));
    320 
    321 			if (isset($rebate_response->result) && $rebate_response->result == '00') {
    322 				$this->model_extension_payment_realex_remote->addTransaction($realex_order['realex_remote_order_id'], 'rebate', $this->request->post['amount']*-1);
    323 
    324 				$total_rebated = $this->model_extension_payment_realex_remote->getTotalRebated($realex_order['realex_remote_order_id']);
    325 				$total_captured = $this->model_extension_payment_realex_remote->getTotalCaptured($realex_order['realex_remote_order_id']);
    326 
    327 				if ($total_captured <= 0 && $realex_order['capture_status'] == 1) {
    328 					$this->model_extension_payment_realex_remote->updateRebateStatus($realex_order['realex_remote_order_id'], 1);
    329 					$rebate_status = 1;
    330 					$json['msg'] = $this->language->get('text_rebate_ok_order');
    331 				} else {
    332 					$rebate_status = 0;
    333 					$json['msg'] = $this->language->get('text_rebate_ok');
    334 				}
    335 
    336 				$json['data'] = array();
    337 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    338 				$json['data']['amount'] = $this->request->post['amount'] * -1;
    339 				$json['data']['total_captured'] = (float)$total_captured;
    340 				$json['data']['total_rebated'] = (float)$total_rebated;
    341 				$json['data']['rebate_status'] = $rebate_status;
    342 				$json['error'] = false;
    343 			} else {
    344 				$json['error'] = true;
    345 				$json['msg'] = isset($rebate_response->message) && !empty($rebate_response->message) ? (string)$rebate_response->message : 'Unable to rebate';
    346 			}
    347 		} else {
    348 			$json['error'] = true;
    349 			$json['msg'] = 'Missing data';
    350 		}
    351 
    352 		$this->response->addHeader('Content-Type: application/json');
    353 		$this->response->setOutput(json_encode($json));
    354 	}
    355 
    356 	protected function validate() {
    357 		if (!$this->user->hasPermission('modify', 'extension/payment/realex_remote')) {
    358 			$this->error['warning'] = $this->language->get('error_permission');
    359 		}
    360 
    361 		if (!$this->request->post['payment_realex_remote_merchant_id']) {
    362 			$this->error['error_merchant_id'] = $this->language->get('error_merchant_id');
    363 		}
    364 
    365 		if (!$this->request->post['payment_realex_remote_secret']) {
    366 			$this->error['error_secret'] = $this->language->get('error_secret');
    367 		}
    368 
    369 		return !$this->error;
    370 	}
    371 }