shop.balmet.com

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

securetrading_pp.php (21780B)


      1 <?php
      2 class ControllerExtensionPaymentSecureTradingPp extends Controller {
      3 	private $error = array();
      4 
      5 	public function index() {
      6 		$this->load->model('setting/setting');
      7 		$this->load->model('localisation/geo_zone');
      8 		$this->load->model('localisation/order_status');
      9 		$this->load->language('extension/payment/securetrading_pp');
     10 
     11 		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
     12 			$this->request->post['payment_securetrading_pp_site_reference'] = trim($this->request->post['payment_securetrading_pp_site_reference']);
     13 
     14 			$this->model_setting_setting->editSetting('payment_securetrading_pp', $this->request->post);
     15 
     16 			$this->session->data['success'] = $this->language->get('text_success');
     17 
     18 			$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true));
     19 		}
     20 
     21 		if (isset($this->request->post['payment_securetrading_pp_site_reference'])) {
     22 			$data['payment_securetrading_pp_site_reference'] = $this->request->post['payment_securetrading_pp_site_reference'];
     23 		} else {
     24 			$data['payment_securetrading_pp_site_reference'] = $this->config->get('payment_securetrading_pp_site_reference');
     25 		}
     26 
     27 		if (isset($this->request->post['payment_securetrading_pp_username'])) {
     28 			$data['payment_securetrading_pp_username'] = $this->request->post['payment_securetrading_pp_username'];
     29 		} else {
     30 			$data['payment_securetrading_pp_username'] = $this->config->get('payment_securetrading_pp_username');
     31 		}
     32 
     33 		if (isset($this->request->post['payment_securetrading_pp_password'])) {
     34 			$data['payment_securetrading_pp_password'] = $this->request->post['payment_securetrading_pp_password'];
     35 		} else {
     36 			$data['payment_securetrading_pp_password'] = $this->config->get('payment_securetrading_pp_password');
     37 		}
     38 
     39 		if (isset($this->request->post['payment_securetrading_pp_notification_password'])) {
     40 			$data['payment_securetrading_pp_notification_password'] = $this->request->post['payment_securetrading_pp_notification_password'];
     41 		} else {
     42 			$data['payment_securetrading_pp_notification_password'] = $this->config->get('payment_securetrading_pp_notification_password');
     43 		}
     44 
     45 		if (isset($this->request->post['payment_securetrading_pp_site_security_password'])) {
     46 			$data['payment_securetrading_pp_site_security_password'] = $this->request->post['payment_securetrading_pp_site_security_password'];
     47 		} else {
     48 			$data['payment_securetrading_pp_site_security_password'] = $this->config->get('payment_securetrading_pp_site_security_password');
     49 		}
     50 
     51 		if (isset($this->request->post['payment_securetrading_pp_site_security_status'])) {
     52 			$data['payment_securetrading_pp_site_security_status'] = $this->request->post['payment_securetrading_pp_site_security_status'];
     53 		} else {
     54 			$data['payment_securetrading_pp_site_security_status'] = $this->config->get('payment_securetrading_pp_site_security_status');
     55 		}
     56 
     57 		if (isset($this->request->post['payment_securetrading_pp_webservice_username'])) {
     58 			$data['payment_securetrading_pp_webservice_username'] = $this->request->post['payment_securetrading_pp_webservice_username'];
     59 		} else {
     60 			$data['payment_securetrading_pp_webservice_username'] = $this->config->get('payment_securetrading_pp_webservice_username');
     61 		}
     62 
     63 		if (isset($this->request->post['payment_securetrading_pp_webservice_password'])) {
     64 			$data['payment_securetrading_pp_webservice_password'] = $this->request->post['payment_securetrading_pp_webservice_password'];
     65 		} else {
     66 			$data['payment_securetrading_pp_webservice_password'] = $this->config->get('payment_securetrading_pp_webservice_password');
     67 		}
     68 
     69 		if (isset($this->request->post['payment_securetrading_pp_order_status_id'])) {
     70 			$data['payment_securetrading_pp_order_status_id'] = $this->request->post['payment_securetrading_pp_order_status_id'];
     71 		} elseif($this->config->get('payment_securetrading_pp_order_status_id') != '') {
     72 			$data['payment_securetrading_pp_order_status_id'] = $this->config->get('payment_securetrading_pp_order_status_id');
     73 		} else {
     74 			$data['payment_securetrading_pp_order_status_id'] = 1;
     75 		}
     76 
     77 		if (isset($this->request->post['payment_securetrading_pp_declined_order_status_id'])) {
     78 			$data['payment_securetrading_pp_declined_order_status_id'] = $this->request->post['payment_securetrading_pp_declined_order_status_id'];
     79 		} elseif($this->config->get('payment_securetrading_pp_declined_order_status_id') != '') {
     80 			$data['payment_securetrading_pp_declined_order_status_id'] = $this->config->get('payment_securetrading_pp_declined_order_status_id');
     81 		} else {
     82 			$data['payment_securetrading_pp_declined_order_status_id'] = 8;
     83 		}
     84 
     85 		if (isset($this->request->post['payment_securetrading_pp_refunded_order_status_id'])) {
     86 			$data['payment_securetrading_pp_refunded_order_status_id'] = $this->request->post['payment_securetrading_pp_refunded_order_status_id'];
     87 		} elseif($this->config->get('payment_securetrading_pp_refunded_order_status_id') != '') {
     88 			$data['payment_securetrading_pp_refunded_order_status_id'] = $this->config->get('payment_securetrading_pp_refunded_order_status_id');
     89 		} else {
     90 			$data['payment_securetrading_pp_refunded_order_status_id'] = 11;
     91 		}
     92 
     93 		if (isset($this->request->post['payment_securetrading_pp_authorisation_reversed_order_status_id'])) {
     94 			$data['payment_securetrading_pp_authorisation_reversed_order_status_id'] = $this->request->post['payment_securetrading_pp_authorisation_reversed_order_status_id'];
     95 		} elseif($this->config->get('payment_securetrading_pp_authorisation_reversed_order_status_id') != '') {
     96 			$data['payment_securetrading_pp_authorisation_reversed_order_status_id'] = $this->config->get('payment_securetrading_pp_authorisation_reversed_order_status_id');
     97 		} else {
     98 			$data['payment_securetrading_pp_authorisation_reversed_order_status_id'] = 12;
     99 		}
    100 
    101 		if (isset($this->request->post['payment_securetrading_pp_settle_status'])) {
    102 			$data['payment_securetrading_pp_settle_status'] = $this->request->post['payment_securetrading_pp_settle_status'];
    103 		} else {
    104 			$data['payment_securetrading_pp_settle_status'] = $this->config->get('payment_securetrading_pp_settle_status');
    105 		}
    106 
    107 		if (isset($this->request->post['payment_securetrading_pp_settle_due_date'])) {
    108 			$data['payment_securetrading_pp_settle_due_date'] = $this->request->post['payment_securetrading_pp_settle_due_date'];
    109 		} else {
    110 			$data['payment_securetrading_pp_settle_due_date'] = $this->config->get('payment_securetrading_pp_settle_due_date');
    111 		}
    112 
    113 		if (isset($this->request->post['payment_securetrading_pp_geo_zone_id'])) {
    114 			$data['payment_securetrading_pp_geo_zone_id'] = $this->request->post['payment_securetrading_pp_geo_zone_id'];
    115 		} else {
    116 			$data['payment_securetrading_pp_geo_zone_id'] = $this->config->get('payment_securetrading_pp_geo_zone_id');
    117 		}
    118 
    119 		if (isset($this->request->post['payment_securetrading_pp_status'])) {
    120 			$data['payment_securetrading_pp_status'] = $this->request->post['payment_securetrading_pp_status'];
    121 		} else {
    122 			$data['payment_securetrading_pp_status'] = $this->config->get('payment_securetrading_pp_status');
    123 		}
    124 
    125 		if (isset($this->request->post['payment_securetrading_pp_sort_order'])) {
    126 			$data['payment_securetrading_pp_sort_order'] = $this->request->post['payment_securetrading_pp_sort_order'];
    127 		} else {
    128 			$data['payment_securetrading_pp_sort_order'] = $this->config->get('payment_securetrading_pp_sort_order');
    129 		}
    130 
    131 		if (isset($this->request->post['payment_securetrading_pp_total'])) {
    132 			$data['payment_securetrading_pp_total'] = $this->request->post['payment_securetrading_pp_total'];
    133 		} else {
    134 			$data['payment_securetrading_pp_total'] = $this->config->get('payment_securetrading_pp_total');
    135 		}
    136 
    137 		if (isset($this->request->post['payment_securetrading_pp_parent_css'])) {
    138 			$data['payment_securetrading_pp_parent_css'] = $this->request->post['payment_securetrading_pp_parent_css'];
    139 		} else {
    140 			$data['payment_securetrading_pp_parent_css'] = $this->config->get('payment_securetrading_pp_parent_css');
    141 		}
    142 
    143 		if (isset($this->request->post['payment_securetrading_pp_child_css'])) {
    144 			$data['payment_securetrading_pp_child_css'] = $this->request->post['payment_securetrading_pp_child_css'];
    145 		} else {
    146 			$data['payment_securetrading_pp_child_css'] = $this->config->get('payment_securetrading_pp_child_css');
    147 		}
    148 
    149 		if (isset($this->request->post['payment_securetrading_pp_cards_accepted'])) {
    150 			$data['payment_securetrading_pp_cards_accepted'] = $this->request->post['payment_securetrading_pp_cards_accepted'];
    151 		} else {
    152 			$data['payment_securetrading_pp_cards_accepted'] = $this->config->get('payment_securetrading_pp_cards_accepted');
    153 
    154 			if ($data['payment_securetrading_pp_cards_accepted'] == null) {
    155 				$data['payment_securetrading_pp_cards_accepted'] = array();
    156 			}
    157 		}
    158 
    159 		$this->document->setTitle($this->language->get('heading_title'));
    160 
    161 		if (isset($this->error['warning'])) {
    162 			$data['error_warning'] = $this->error['warning'];
    163 		} else {
    164 			$data['error_warning'] = '';
    165 		}
    166 
    167 		if (isset($this->error['site_reference'])) {
    168 			$data['error_site_reference'] = $this->error['site_reference'];
    169 		} else {
    170 			$data['error_site_reference'] = '';
    171 		}
    172 
    173 		if (isset($this->error['cards_accepted'])) {
    174 			$data['error_cards_accepted'] = $this->error['cards_accepted'];
    175 		} else {
    176 			$data['error_cards_accepted'] = '';
    177 		}
    178 
    179 		if (isset($this->error['notification_password'])) {
    180 			$data['error_notification_password'] = $this->error['notification_password'];
    181 		} else {
    182 			$data['error_notification_password'] = '';
    183 		}
    184 
    185 		$data['breadcrumbs'] = array();
    186 
    187 		$data['breadcrumbs'][] = array(
    188 			'text' => $this->language->get('text_home'),
    189 			'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
    190 		);
    191 
    192 		$data['breadcrumbs'][] = array(
    193 			'text' => $this->language->get('text_extension'),
    194 			'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
    195 		);
    196 
    197 		$data['breadcrumbs'][] = array(
    198 			'text' => $this->language->get('heading_title'),
    199 			'href' => $this->url->link('extension/payment/securetrading_pp', 'user_token=' . $this->session->data['user_token'], true)
    200 		);
    201 
    202 		$data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();
    203 		$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
    204 		$data['cards'] = array(
    205 			'AMEX' => 'American Express',
    206 			'VISA' => 'Visa',
    207 			'DELTA' => 'Visa Debit',
    208 			'ELECTRON' => 'Visa Electron',
    209 			'PURCHASING' => 'Visa Purchasing',
    210 			'VPAY' => 'V Pay',
    211 			'MASTERCARD' => 'MasterCard',
    212 			'MASTERCARDDEBIT' => 'MasterCard Debit',
    213 			'MAESTRO' => 'Maestro',
    214 			'PAYPAL' => 'PayPal',
    215 		);
    216 
    217 		$data['settlement_statuses'] = array(
    218 			'0' => $this->language->get('text_pending_settlement'),
    219 			'1' => $this->language->get('text_pending_settlement_manually_overriden'),
    220 			'2' => $this->language->get('text_pending_suspended'),
    221 			'100' => $this->language->get('text_pending_settled'),
    222 		);
    223 
    224 		$data['action'] = $this->url->link('extension/payment/securetrading_pp', 'user_token=' . $this->session->data['user_token'], true);
    225 
    226 		$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
    227 
    228 		$data['header'] = $this->load->controller('common/header');
    229 		$data['column_left'] = $this->load->controller('common/column_left');
    230 		$data['footer'] = $this->load->controller('common/footer');
    231 
    232 		$this->response->setOutput($this->load->view('extension/payment/securetrading_pp', $data));
    233 	}
    234 
    235 	public function install() {
    236 		$this->load->model('extension/payment/securetrading_pp');
    237 		$this->model_extension_payment_securetrading_pp->install();
    238 	}
    239 
    240 	public function uninstall() {
    241 		$this->load->model('extension/payment/securetrading_pp');
    242 		$this->model_extension_payment_securetrading_pp->uninstall();
    243 	}
    244 
    245 	public function order() {
    246 		if ($this->config->get('payment_securetrading_pp_status')) {
    247 			$this->load->model('extension/payment/securetrading_pp');
    248 
    249 			$securetrading_pp_order = $this->model_extension_payment_securetrading_pp->getOrder($this->request->get['order_id']);
    250 
    251 			if (!empty($securetrading_pp_order)) {
    252 				$this->load->language('extension/payment/securetrading_pp');
    253 
    254 				$securetrading_pp_order['total_released'] = $this->model_extension_payment_securetrading_pp->getTotalReleased($securetrading_pp_order['securetrading_pp_order_id']);
    255 
    256 				$securetrading_pp_order['total_formatted'] = $this->currency->format($securetrading_pp_order['total'], $securetrading_pp_order['currency_code'], false, false);
    257 				$securetrading_pp_order['total_released_formatted'] = $this->currency->format($securetrading_pp_order['total_released'], $securetrading_pp_order['currency_code'], false, false);
    258 
    259 				$data['securetrading_pp_order'] = $securetrading_pp_order;
    260 
    261 				$data['auto_settle'] = $securetrading_pp_order['settle_type'];
    262 
    263 				$data['order_id'] = $this->request->get['order_id'];
    264 				
    265 				$data['user_token'] = $this->request->get['user_token'];
    266 
    267 				return $this->load->view('extension/payment/securetrading_pp_order', $data);
    268 			}
    269 		}
    270 	}
    271 
    272 	public function void() {
    273 		$this->load->language('extension/payment/securetrading_pp');
    274 		$json = array();
    275 
    276 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '') {
    277 			$this->load->model('extension/payment/securetrading_pp');
    278 
    279 			$securetrading_pp_order = $this->model_extension_payment_securetrading_pp->getOrder($this->request->post['order_id']);
    280 
    281 			$void_response = $this->model_extension_payment_securetrading_pp->void($this->request->post['order_id']);
    282 
    283 			$this->model_extension_payment_securetrading_pp->logger('Void result:\r\n' . print_r($void_response, 1));
    284 
    285 			if ($void_response !== false) {
    286 				$response_xml = simplexml_load_string($void_response);
    287 
    288 				if ($response_xml->response['type'] == 'ERROR' || (string)$response_xml->response->error->code != '0') {
    289 					$json['msg'] = (string)$response_xml->response->error->message;
    290 					$json['error'] = true;
    291 				} else {
    292 
    293 					$this->model_extension_payment_securetrading_pp->addTransaction($securetrading_pp_order['securetrading_pp_order_id'], 'reversed', 0.00);
    294 					$this->model_extension_payment_securetrading_pp->updateVoidStatus($securetrading_pp_order['securetrading_pp_order_id'], 1);
    295 
    296 					$this->data = array(
    297 						'order_status_id' => $this->config->get('payment_securetrading_pp_authorisation_reversed_order_status_id'),
    298 						'notify' => false,
    299 						'comment' => '',
    300 					);
    301 
    302 					$this->load->model('sale/order');
    303 
    304 					$this->model_sale_order->addOrderHistory($this->request->post['order_id'], $this->data);
    305 
    306 					$json['msg'] = $this->language->get('text_authorisation_reversed');
    307 					$json['data']['created'] = date("Y-m-d H:i:s");
    308 					$json['error'] = false;
    309 				}
    310 			} else {
    311 				$json['msg'] = $this->language->get('error_connection');
    312 				$json['error'] = true;
    313 			}
    314 		} else {
    315 			$json['error'] = true;
    316 			$json['msg'] = 'Missing data';
    317 		}
    318 
    319 		$this->response->setOutput(json_encode($json));
    320 	}
    321 
    322 	public function release() {
    323 		$this->load->language('extension/payment/securetrading_pp');
    324 		$json = array();
    325 
    326 		$amount = number_format($this->request->post['amount'], 2);
    327 
    328 		if (isset($this->request->post['order_id']) && $this->request->post['order_id'] != '' && isset($amount) && $amount > 0) {
    329 			$this->load->model('extension/payment/securetrading_pp');
    330 
    331 			$securetrading_pp_order = $this->model_extension_payment_securetrading_pp->getOrder($this->request->post['order_id']);
    332 
    333 			$release_response = $this->model_extension_payment_securetrading_pp->release($this->request->post['order_id'], $amount);
    334 
    335 			$this->model_extension_payment_securetrading_pp->logger('Release result:\r\n' . print_r($release_response, 1));
    336 
    337 			if ($release_response !== false) {
    338 				$response_xml = simplexml_load_string($release_response);
    339 
    340 				if ($response_xml->response['type'] == 'ERROR' || (string)$response_xml->response->error->code != '0') {
    341 					$json['error'] = true;
    342 					$json['msg'] = (string)$response_xml->response->error->message;
    343 				} else {
    344 					$this->model_extension_payment_securetrading_pp->addTransaction($securetrading_pp_order['securetrading_pp_order_id'], 'payment', $amount);
    345 
    346 					$total_released = $this->model_extension_payment_securetrading_pp->getTotalReleased($securetrading_pp_order['securetrading_pp_order_id']);
    347 
    348 					if ($total_released >= $securetrading_pp_order['total'] || $securetrading_pp_order['settle_type'] == 100) {
    349 						$this->model_extension_payment_securetrading_pp->updateReleaseStatus($securetrading_pp_order['securetrading_pp_order_id'], 1);
    350 						$release_status = 1;
    351 						$json['msg'] = $this->language->get('text_release_ok_order');
    352 
    353 						$this->load->model('sale/order');
    354 
    355 						$history = array();
    356 						$history['order_status_id'] = $this->config->get('securetrading_pp_order_status_success_settled_id');
    357 						$history['comment'] = '';
    358 						$history['notify'] = '';
    359 
    360 						$this->model_sale_order->addOrderHistory($this->request->post['order_id'], $history);
    361 					} else {
    362 						$release_status = 0;
    363 						$json['msg'] = $this->language->get('text_release_ok');
    364 					}
    365 
    366 					$json['data'] = array();
    367 					$json['data']['created'] = date("Y-m-d H:i:s");
    368 					$json['data']['amount'] = $amount;
    369 					$json['data']['release_status'] = $release_status;
    370 					$json['data']['total'] = (double)$total_released;
    371 					$json['error'] = false;
    372 				}
    373 			} else {
    374 				$json['error'] = true;
    375 				$json['msg'] = $this->language->get('error_connection');
    376 			}
    377 		} else {
    378 			$json['error'] = true;
    379 			$json['msg'] = $this->language->get('error_data_missing');
    380 		}
    381 
    382 		$this->response->setOutput(json_encode($json));
    383 	}
    384 
    385 	public function rebate() {
    386 		$this->load->language('extension/payment/securetrading_pp');
    387 		$json = array();
    388 
    389 		if (isset($this->request->post['order_id']) && !empty($this->request->post['order_id'])) {
    390 			$this->load->model('extension/payment/securetrading_pp');
    391 
    392 			$securetrading_pp_order = $this->model_extension_payment_securetrading_pp->getOrder($this->request->post['order_id']);
    393 
    394 			$amount = number_format($this->request->post['amount'], 2);
    395 
    396 			$rebate_response = $this->model_extension_payment_securetrading_pp->rebate($this->request->post['order_id'], $amount);
    397 
    398 			$this->model_extension_payment_securetrading_pp->logger('Rebate result:\r\n' . print_r($rebate_response, 1));
    399 
    400 			if ($rebate_response !== false) {
    401 				$response_xml = simplexml_load_string($rebate_response);
    402 
    403 				$error_code = (string)$response_xml->response->error->code;
    404 
    405 				if ($error_code == '0') {
    406 
    407 					$this->model_extension_payment_securetrading_pp->addTransaction($securetrading_pp_order['securetrading_pp_order_id'], 'rebate', $amount * -1);
    408 
    409 					$total_rebated = $this->model_extension_payment_securetrading_pp->getTotalRebated($securetrading_pp_order['securetrading_pp_order_id']);
    410 					$total_released = $this->model_extension_payment_securetrading_pp->getTotalReleased($securetrading_pp_order['securetrading_pp_order_id']);
    411 
    412 					if ($total_released <= 0 && $securetrading_pp_order['release_status'] == 1) {
    413 						$json['status'] = 1;
    414 						$json['message'] = $this->language->get('text_refund_issued');
    415 
    416 						$this->model_extension_payment_securetrading_pp->updateRebateStatus($securetrading_pp_order['securetrading_pp_order_id'], 1);
    417 						$rebate_status = 1;
    418 						$json['msg'] = $this->language->get('text_rebate_ok_order');
    419 
    420 						$this->load->model('sale/order');
    421 
    422 						$history = array();
    423 						$history['order_status_id'] = $this->config->get('payment_securetrading_pp_refunded_order_status_id');
    424 						$history['comment'] = '';
    425 						$history['notify'] = '';
    426 
    427 						$this->model_sale_order->addOrderHistory($this->request->post['order_id'], $history);
    428 					} else {
    429 						$rebate_status = 0;
    430 						$json['msg'] = $this->language->get('text_rebate_ok');
    431 					}
    432 
    433 					$json['data'] = array();
    434 					$json['data']['created'] = date("Y-m-d H:i:s");
    435 					$json['data']['amount'] = $amount * -1;
    436 					$json['data']['total_released'] = (double)$total_released;
    437 					$json['data']['total_rebated'] = (double)$total_rebated;
    438 					$json['data']['rebate_status'] = $rebate_status;
    439 					$json['error'] = false;
    440 				} else {
    441 					$json['error'] = true;
    442 					$json['msg'] = (string)$response_xml->response->error->message;
    443 				}
    444 			} else {
    445 				$json['status'] = 0;
    446 				$json['message'] = $this->language->get('error_connection');
    447 			}
    448 		} else {
    449 			$json['error'] = true;
    450 			$json['msg'] = 'Missing data';
    451 		}
    452 
    453 		$this->response->setOutput(json_encode($json));
    454 	}
    455 
    456 	protected function validate() {
    457 		if (!$this->user->hasPermission('modify', 'extension/payment/securetrading_pp')) {
    458 			$this->error['warning'] = $this->language->get('error_permission');
    459 		}
    460 
    461 		if (!$this->request->post['payment_securetrading_pp_site_reference']) {
    462 			$this->error['site_reference'] = $this->language->get('error_site_reference');
    463 		}
    464 
    465 		if (empty($this->request->post['payment_securetrading_pp_cards_accepted'])) {
    466 			$this->error['cards_accepted'] = $this->language->get('error_cards_accepted');
    467 		}
    468 
    469 		if (!$this->request->post['payment_securetrading_pp_notification_password']) {
    470 			$this->error['notification_password'] = $this->language->get('error_notification_password');
    471 		}
    472 
    473 		return !$this->error;
    474 	}
    475 }