shop.balmet.com

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

g2apay.php (12264B)


      1 <?php
      2 
      3 class ControllerExtensionPaymentG2APay extends Controller {
      4 
      5 	private $error = array();
      6 
      7 	public function index() {
      8 		$this->load->language('extension/payment/g2apay');
      9 
     10 		$this->document->setTitle($this->language->get('heading_title'));
     11 
     12 		$this->load->model('setting/setting');
     13 
     14 		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
     15 			$this->model_setting_setting->editSetting('payment_g2apay', $this->request->post);
     16 
     17 			$this->session->data['complete'] = $this->language->get('text_complete');
     18 
     19 			$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true));
     20 		}
     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['username'])) {
     29 			$data['error_username'] = $this->error['username'];
     30 		} else {
     31 			$data['error_username'] = '';
     32 		}
     33 
     34 		if (isset($this->error['secret'])) {
     35 			$data['error_secret'] = $this->error['secret'];
     36 		} else {
     37 			$data['error_secret'] = '';
     38 		}
     39 
     40 		if (isset($this->error['api_hash'])) {
     41 			$data['error_api_hash'] = $this->error['api_hash'];
     42 		} else {
     43 			$data['error_api_hash'] = '';
     44 		}
     45 
     46 		if (isset($this->request->post['payment_g2apay_order_status_id'])) {
     47 			$data['payment_g2apay_order_status_id'] = $this->request->post['payment_g2apay_order_status_id'];
     48 		} else {
     49 			$data['payment_g2apay_order_status_id'] = $this->config->get('payment_g2apay_order_status_id');
     50 		}
     51 
     52 		if (isset($this->request->post['payment_g2apay_complete_status_id'])) {
     53 			$data['payment_g2apay_complete_status_id'] = $this->request->post['payment_g2apay_complete_status_id'];
     54 		} else {
     55 			$data['payment_g2apay_complete_status_id'] = $this->config->get('payment_g2apay_complete_status_id');
     56 		}
     57 
     58 		if (isset($this->request->post['payment_g2apay_rejected_status_id'])) {
     59 			$data['payment_g2apay_rejected_status_id'] = $this->request->post['payment_g2apay_rejected_status_id'];
     60 		} else {
     61 			$data['payment_g2apay_rejected_status_id'] = $this->config->get('payment_g2apay_rejected_status_id');
     62 		}
     63 
     64 		if (isset($this->request->post['payment_g2apay_cancelled_status_id'])) {
     65 			$data['payment_g2apay_cancelled_status_id'] = $this->request->post['payment_g2apay_cancelled_status_id'];
     66 		} else {
     67 			$data['payment_g2apay_cancelled_status_id'] = $this->config->get('payment_g2apay_cancelled_status_id');
     68 		}
     69 
     70 		if (isset($this->request->post['payment_g2apay_pending_status_id'])) {
     71 			$data['payment_g2apay_pending_status_id'] = $this->request->post['payment_g2apay_pending_status_id'];
     72 		} else {
     73 			$data['payment_g2apay_pending_status_id'] = $this->config->get('payment_g2apay_pending_status_id');
     74 		}
     75 
     76 		if (isset($this->request->post['payment_g2apay_refunded_status_id'])) {
     77 			$data['payment_g2apay_refunded_status_id'] = $this->request->post['payment_g2apay_refunded_status_id'];
     78 		} else {
     79 			$data['payment_g2apay_refunded_status_id'] = $this->config->get('payment_g2apay_refunded_status_id');
     80 		}
     81 
     82 		if (isset($this->request->post['payment_g2apay_partially_refunded_status_id'])) {
     83 			$data['payment_g2apay_partially_refunded_status_id'] = $this->request->post['payment_g2apay_partially_refunded_status_id'];
     84 		} else {
     85 			$data['payment_g2apay_partially_refunded_status_id'] = $this->config->get('payment_g2apay_partially_refunded_status_id');
     86 		}
     87 
     88 		$data['breadcrumbs'] = array();
     89 
     90 		$data['breadcrumbs'][] = array(
     91 			'text' => $this->language->get('text_home'),
     92 			'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
     93 		);
     94 
     95 		$data['breadcrumbs'][] = array(
     96 			'text' => $this->language->get('text_extension'),
     97 			'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
     98 		);
     99 
    100 		$data['breadcrumbs'][] = array(
    101 			'text' => $this->language->get('heading_title'),
    102 			'href' => $this->url->link('extension/payment/g2apay', 'user_token=' . $this->session->data['user_token'], true)
    103 		);
    104 
    105 		$this->load->model('localisation/order_status');
    106 		$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
    107 
    108 		$data['action'] = $this->url->link('extension/payment/g2apay', 'user_token=' . $this->session->data['user_token'], true);
    109 
    110 		$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
    111 
    112 		if (isset($this->request->post['payment_g2apay_username'])) {
    113 			$data['payment_g2apay_username'] = $this->request->post['payment_g2apay_username'];
    114 		} else {
    115 			$data['payment_g2apay_username'] = $this->config->get('payment_g2apay_username');
    116 		}
    117 
    118 		if (isset($this->request->post['payment_g2apay_secret'])) {
    119 			$data['payment_g2apay_secret'] = $this->request->post['payment_g2apay_secret'];
    120 		} else {
    121 			$data['payment_g2apay_secret'] = $this->config->get('payment_g2apay_secret');
    122 		}
    123 
    124 		if (isset($this->request->post['payment_g2apay_api_hash'])) {
    125 			$data['payment_g2apay_api_hash'] = $this->request->post['payment_g2apay_api_hash'];
    126 		} else {
    127 			$data['payment_g2apay_api_hash'] = $this->config->get('payment_g2apay_api_hash');
    128 		}
    129 
    130 		if (isset($this->request->post['payment_g2apay_environment'])) {
    131 			$data['payment_g2apay_environment'] = $this->request->post['payment_g2apay_environment'];
    132 		} else {
    133 			$data['payment_g2apay_environment'] = $this->config->get('payment_g2apay_environment');
    134 		}
    135 
    136 		if (isset($this->request->post['payment_g2apay_total'])) {
    137 			$data['payment_g2apay_total'] = $this->request->post['payment_g2apay_total'];
    138 		} else {
    139 			$data['payment_g2apay_total'] = $this->config->get('payment_g2apay_total');
    140 		}
    141 
    142 		if (isset($this->request->post['payment_g2apay_secret_token'])) {
    143 			$data['payment_g2apay_secret_token'] = $this->request->post['payment_g2apay_secret_token'];
    144 		} elseif ($this->config->get('payment_g2apay_secret_token')) {
    145 			$data['payment_g2apay_secret_token'] = $this->config->get('payment_g2apay_secret_token');
    146 		} else {
    147 			$data['payment_g2apay_secret_token'] = sha1(uniqid(mt_rand(), 1));
    148 		}
    149 
    150 		$data['g2apay_ipn_url'] = HTTPS_CATALOG . 'index.php?route=extension/payment/g2apay/ipn&token=' . $data['payment_g2apay_secret_token'];
    151 
    152 		if (isset($this->request->post['payment_g2apay_ipn_uri'])) {
    153 			$data['payment_g2apay_ipn_uri'] = $this->request->post['payment_g2apay_ipn_uri'];
    154 		} else {
    155 			$data['payment_g2apay_ipn_uri'] = $this->config->get('payment_g2apay_ipn_uri');
    156 		}
    157 
    158 		$this->load->model('localisation/order_status');
    159 
    160 		$data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
    161 
    162 		if (isset($this->request->post['payment_g2apay_geo_zone_id'])) {
    163 			$data['payment_g2apay_geo_zone_id'] = $this->request->post['payment_g2apay_geo_zone_id'];
    164 		} else {
    165 			$data['payment_g2apay_geo_zone_id'] = $this->config->get('payment_g2apay_geo_zone_id');
    166 		}
    167 
    168 		$this->load->model('localisation/geo_zone');
    169 
    170 		$data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();
    171 
    172 		if (isset($this->request->post['payment_g2apay_status'])) {
    173 			$data['payment_g2apay_status'] = $this->request->post['payment_g2apay_status'];
    174 		} else {
    175 			$data['payment_g2apay_status'] = $this->config->get('payment_g2apay_status');
    176 		}
    177 
    178 		if (isset($this->request->post['payment_g2apay_debug'])) {
    179 			$data['payment_g2apay_debug'] = $this->request->post['payment_g2apay_debug'];
    180 		} else {
    181 			$data['payment_g2apay_debug'] = $this->config->get('payment_g2apay_debug');
    182 		}
    183 
    184 		if (isset($this->request->post['payment_g2apay_sort_order'])) {
    185 			$data['payment_g2apay_sort_order'] = $this->request->post['payment_g2apay_sort_order'];
    186 		} else {
    187 			$data['payment_g2apay_sort_order'] = $this->config->get('payment_g2apay_sort_order');
    188 		}
    189 
    190 		$data['header'] = $this->load->controller('common/header');
    191 		$data['column_left'] = $this->load->controller('common/column_left');
    192 		$data['footer'] = $this->load->controller('common/footer');
    193 
    194 		$this->response->setOutput($this->load->view('extension/payment/g2apay', $data));
    195 	}
    196 
    197 	public function order() {
    198 
    199 		if ($this->config->get('payment_g2apay_status')) {
    200 
    201 			$this->load->model('extension/payment/g2apay');
    202 
    203 			$g2apay_order = $this->model_extension_payment_g2apay->getOrder($this->request->get['order_id']);
    204 
    205 			if (!empty($g2apay_order)) {
    206 				$this->load->language('extension/payment/g2apay');
    207 
    208 				$g2apay_order['total_released'] = $this->model_extension_payment_g2apay->getTotalReleased($g2apay_order['g2apay_order_id']);
    209 
    210 				$g2apay_order['total_formatted'] = $this->currency->format($g2apay_order['total'], $g2apay_order['currency_code'], false);
    211 				$g2apay_order['total_released_formatted'] = $this->currency->format($g2apay_order['total_released'], $g2apay_order['currency_code'], false);
    212 
    213 				$data['g2apay_order'] = $g2apay_order;
    214 
    215 				$data['order_id'] = $this->request->get['order_id'];
    216 				
    217 				$data['user_token'] = $this->request->get['user_token'];
    218 
    219 				return $this->load->view('extension/payment/g2apay_order', $data);
    220 			}
    221 		}
    222 	}
    223 
    224 	public function refund() {
    225 		$this->load->language('extension/payment/g2apay');
    226 		$json = array();
    227 
    228 		if (isset($this->request->post['order_id']) && !empty($this->request->post['order_id'])) {
    229 			$this->load->model('extension/payment/g2apay');
    230 
    231 			$g2apay_order = $this->model_extension_payment_g2apay->getOrder($this->request->post['order_id']);
    232 
    233 			$refund_response = $this->model_extension_payment_g2apay->refund($g2apay_order, $this->request->post['amount']);
    234 
    235 			$this->model_extension_payment_g2apay->logger($refund_response);
    236 
    237 			if ($refund_response == 'ok') {
    238 				$this->model_extension_payment_g2apay->addTransaction($g2apay_order['g2apay_order_id'], 'refund', $this->request->post['amount'] * -1);
    239 
    240 				$total_refunded = $this->model_extension_payment_g2apay->getTotalRefunded($g2apay_order['g2apay_order_id']);
    241 				$total_released = $this->model_extension_payment_g2apay->getTotalReleased($g2apay_order['g2apay_order_id']);
    242 
    243 				if ($total_released <= 0 && $g2apay_order['release_status'] == 1) {
    244 					$this->model_extension_payment_g2apay->updateRefundStatus($g2apay_order['g2apay_order_id'], 1);
    245 					$refund_status = 1;
    246 					$json['msg'] = $this->language->get('text_refund_ok_order');
    247 				} else {
    248 					$refund_status = 0;
    249 					$json['msg'] = $this->language->get('text_refund_ok');
    250 				}
    251 
    252 				$json['data'] = array();
    253 				$json['data']['date_added'] = date("Y-m-d H:i:s");
    254 				$json['data']['amount'] = $this->currency->format(($this->request->post['amount'] * -1), $g2apay_order['currency_code'], false);
    255 				$json['data']['total_released'] = (float)$total_released;
    256 				$json['data']['total_refunded'] = (float)$total_refunded;
    257 				$json['data']['refund_status'] = $refund_status;
    258 				$json['error'] = false;
    259 			} else {
    260 				$json['error'] = true;
    261 				$json['msg'] = 'Unable to refund: ' . $refund_response;
    262 			}
    263 		} else {
    264 			$json['error'] = true;
    265 			$json['msg'] = 'Missing data';
    266 		}
    267 
    268 		$this->response->addHeader('Content-Type: application/json');
    269 		$this->response->setOutput(json_encode($json));
    270 	}
    271 
    272 	public function install() {
    273 		$this->load->model('extension/payment/g2apay');
    274 		$this->model_extension_payment_g2apay->install();
    275 	}
    276 
    277 	public function uninstall() {
    278 		$this->load->model('extension/payment/g2apay');
    279 		$this->model_extension_payment_g2apay->uninstall();
    280 	}
    281 
    282 	protected function validate() {
    283 		if (!$this->user->hasPermission('modify', 'extension/payment/g2apay')) {
    284 			$this->error['warning'] = $this->language->get('error_permission');
    285 		}
    286 
    287 		if (!$this->request->post['payment_g2apay_username']) {
    288 			$this->error['username'] = $this->language->get('error_username');
    289 		}
    290 
    291 		if (!$this->request->post['payment_g2apay_secret']) {
    292 			$this->error['secret'] = $this->language->get('error_secret');
    293 		}
    294 
    295 		if (!$this->request->post['payment_g2apay_api_hash']) {
    296 			$this->error['api_hash'] = $this->language->get('error_api_hash');
    297 		}
    298 
    299 		return !$this->error;
    300 	}
    301 
    302 }