'1105', 'vat0' => '1104', 'vat5' => '1108', 'vat7' => '1109', 'vat10' => '1103', 'vat22' => '1113', 'vat105' => '1110', 'vat107' => '1111', 'vat110' => '1107', 'vat122' => '1114', ]; private array $errors = []; /** * @throws \Exception */ public function index(): void { $this->load->language('extension/payanyway/payment/payanyway'); $this->document->setTitle($this->language->get('heading_title')); $data = []; $this->applyValidationErrors($data); $data['breadcrumbs'] = $this->getBreadcrumbs(); $data['save'] = $this->url->link('extension/payanyway/payment/payanyway.save', 'user_token=' . $this->session->data['user_token']); $data['back'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment'); $data['payment_payanyway_status'] = $this->retrieveValue('payment_payanyway_status'); $data['payment_payanyway_account'] = $this->retrieveValue('payment_payanyway_account'); $data['payment_payanyway_integrity_code'] = $this->getIntegrityCode(); $data['payment_payanyway_server'] = $this->retrieveValue('payment_payanyway_server'); $data['payment_payanyway_vat_rates'] = $this->getModuleVatRates(); $data['payment_payanyway_vat_rate'] = $this->retrieveValue('payment_payanyway_vat_rate'); $data['payment_payanyway_currencies'] = $this->getModuleCurrencies(); $data['payment_payanyway_currency'] = $this->retrieveValue('payment_payanyway_currency'); $data['order_statuses'] = $this->getAvailableOrderStatuses(); $data['payment_payanyway_pending_order_status_id'] = $this->retrieveValue('payment_payanyway_pending_order_status_id'); $data['payment_payanyway_success_order_status_id'] = $this->retrieveValue('payment_payanyway_success_order_status_id'); $data['payment_payanyway_error_order_status_id'] = $this->retrieveValue('payment_payanyway_error_order_status_id'); $data['geo_zones'] = $this->getAvailableGeoZones(); $data['payment_payanyway_geo_zone_id'] = $this->retrieveValue('payment_payanyway_geo_zone_id'); $data['payment_payanyway_sort_order'] = $this->retrieveValue('payment_payanyway_sort_order'); $data['payment_payanyway_cms_module_version'] = $this->getCmsModuleVersion(); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('extension/payanyway/payment/payanyway', $data)); } public function save(): void { $this->load->language('extension/payanyway/payment/payanyway'); $json = []; if (!$this->user->hasPermission('modify', 'extension/payanyway/payment/payanyway')) { $json['error'] = $this->language->get('error_permission'); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); return; } if (!$this->validate()) { $errorString = $this->language->get('error_validation') . "
\n"; foreach ($this->errors as $error) { $errorString .= $error . "\n"; } $errorString = substr($errorString, 0, -1) . "
"; $json['error'] = $errorString; } if (!$json) { $this->load->model('setting/setting'); $this->model_setting_setting->editSetting('payment_payanyway', $this->request->post); $json['success'] = $this->language->get('text_success'); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } /** * @throws \Exception */ public function install(): void { if (!$this->user->hasPermission('modify', 'extension/payment')) { return; } $defaultSettings = [ 'payment_payanyway_status' => 0, 'payment_payanyway_account' => '', 'payment_payanyway_integrity_code' => '', 'payment_payanyway_server' => 'prod', 'payment_payanyway_sort_order' => 0, 'payment_payanyway_cms_module_version' => $this->getCmsModuleVersion(), ]; $orderStatuses = $this->getAvailableOrderStatuses(); $pendingStatus = array_filter($orderStatuses, function ($status) { return (int)$status['order_status_id'] === 1; }); if (!empty($pendingStatus)) { $pendingKey = key($pendingStatus); $defaultSettings['payment_payanyway_pending_order_status_id'] = $pendingStatus[$pendingKey]['order_status_id']; } $successStatus = array_filter($orderStatuses, function ($status) { return (int)$status['order_status_id'] === 5; }); if (!empty($successStatus)) { $successKey = key($successStatus); $defaultSettings['payment_payanyway_success_order_status_id'] = $successStatus[$successKey]['order_status_id']; } $errorStatus = array_filter($orderStatuses, function ($status) { return (int)$status['order_status_id'] === 10; }); if (!empty($errorStatus)) { $errorKey = key($errorStatus); $defaultSettings['payment_payanyway_error_order_status_id'] = $errorStatus[$errorKey]['order_status_id']; } $this->load->model('setting/setting'); $this->model_setting_setting->editSetting('payment_payanyway', $defaultSettings); } public function uninstall(): void { if (!$this->user->hasPermission('modify', 'extension/payment')) { return; } $this->load->model('setting/setting'); $this->model_setting_setting->deleteSetting('payment_payanyway'); } private function validate(): bool { $this->errors = []; if (!isset($this->request->post['payment_payanyway_account']) || ((int)$this->request->post['payment_payanyway_account'] <= 0) ) { $this->errors['account'] = $this->language->get('error_account'); } if (empty($this->request->post['payment_payanyway_integrity_code'])) { $this->errors['integrity_code'] = $this->language->get('error_integrity_code'); } if (empty($this->request->post['payment_payanyway_pending_order_status_id'])) { $this->errors['pending_order_status'] = $this->language->get('error_pending_order_status'); } if (empty($this->request->post['payment_payanyway_success_order_status_id'])) { $this->errors['success_order_status'] = $this->language->get('error_success_order_status'); } if (empty($this->request->post['payment_payanyway_error_order_status_id'])) { $this->errors['error_order_status'] = $this->language->get('error_error_order_status'); } $sortOrder = isset($this->request->post['payment_payanyway_sort_order']) ? (int)$this->request->post['payment_payanyway_sort_order'] : self::MODULE_DEFAULT_SORT_ORDER; $this->request->post['payment_payanyway_sort_order'] = $sortOrder; $this->request->post['payment_payanyway_cms_module_version'] = $this->getCmsModuleVersion(); return empty($this->errors); } /** @param array