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