Створення інтерфейсу модуля оплати в OpenCart: частина 2

274

Від автора: в ядрі OpenCart існує безліч способів оплати, і безліч інших доступні в магазині OpenCart у вигляді сторонніх розширень. Але все ж ситуація може скластися так, що знадобиться щось інше, або не буде відповідного способу, доступного для вашого платіжного шлюзу, або з якоїсь іншої причини. У будь-якому випадку у вас залишається тільки один варіант: створити новий модуль оплати OpenCart.

У цьому уроці ми побачимо back-end користувальницького методу, розглянемо, як внести в список обраний спосіб оплати, а також інші способи. Крім того, ми перевіримо вміння створити форму конфігурації для цього способу оплати.

Припустимо, що «custom» — власне ім’я методу оплати. Для установки товарів необхідно створити як мінімум три файлу. Давайте розглянемо це більш детально.

Налаштування контролера

Створюємо файл контролера admin/controller/payment/custom.php. Вставте цей вміст в створений файл контролера custom.php. Цей файл буде відповідати за відображення форми конфігурації back-end, викликавши відповідний вид файлу, і в той же час зберігаючи post значення форми в базу даних.

language->load(‘payment/custom’);
$this->document->setTitle(‘Custom Payment Method Configuration’);
$this->load->model(‘setting/setting’);
if (($this->request->server[‘REQUEST_METHOD’] == ‘POST’)) {
$this->model_setting_setting->editSetting(‘custom’, $this->request->post);
$this->session->data[‘success’] = ‘Saved.’;
$this->redirect($this->url->link(‘extension/payment’, ‘token=’ . $this->session->data[‘token’], ‘SSL’));
}
$this->data[‘heading_title’] = $this->language->get(‘heading_title’);
$this->data[‘entry_text_config_one’] = $this->language->get(‘text_config_one’);
$this->data[‘entry_text_config_two’] = $this->language->get(‘text_config_two’);
$this->data[‘button_save’] = $this->language->get(‘text_button_save’);
$this->data[‘button_cancel’] = $this->language->get(‘text_button_cancel’);
$this->data[‘entry_order_status’] = $this->language->get(‘entry_order_status’);
$this->data[‘text_enabled’] = $this->language->get(‘text_enabled’);
$this->data[‘text_disabled’] = $this->language->get(‘text_disabled’);
$this->data[‘entry_status’] = $this->language->get(‘entry_status’);
$this->data[‘action’] = $this->url->link(‘payment/custom’, ‘token=’ . $this->session->data[‘token’], ‘SSL’);
$this->data[‘cancel’] = $this->url->link(‘extension/payment’, ‘token=’ . $this->session->data[‘token’], ‘SSL’);
if (isset($this->request->post[‘text_config_one’])) {
$this->data[‘text_config_one’] = $this->request->post[‘text_config_one’];
} else {
$this->data[‘text_config_one’] = $this->config->get(‘text_config_one’);
}
if (isset($this->request->post[‘text_config_two’])) {
$this->data[‘text_config_two’] = $this->request->post[‘text_config_two’];
} else {
$this->data[‘text_config_two’] = $this->config->get(‘text_config_two’);
}
if (isset($this->request->post[‘custom_status’])) {
$this->data[‘custom_status’] = $this->request->post[‘custom_status’];
} else {
$this->data[‘custom_status’] = $this->config->get(‘custom_status’);
}
if (isset($this->request->post[‘custom_order_status_id’])) {
$this->data[‘custom_order_status_id’] = $this->request->post[‘custom_order_status_id’];
} else {
$this->data[‘custom_order_status_id’] = $this->config->get(‘custom_order_status_id’);
}
$this->load->model(‘localisation/order_status’);
$this->data[‘order_statuses’] = $this->model_localisation_order_status->getOrderStatuses();
$this->template = ‘payment/custom.tpl’;
$this->children = array(
‘common/header’,
‘common/footer’
);
$this->response->setOutput($this->render());
}
}

Як ми можемо бачити, ім’я класу слід стандартними угодами про імена OpenCart. Давайте розберемося з кожним розділом. На початок index методу ми завантажуємо мовний файл і встановлюємо значення тега title.

Створення інтерфейсу модуля оплати в OpenCart: частина 2

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

$this->language->load(‘payment/custom’);
$this->document->setTitle(‘Custom Payment Method Configuration’);

У наступному розділі ми завантажимо файл моделі «setting.php, який надасть нам методи збереження значень post в базі даних. Ми також перевіряємо, чи доступні значення post , які ми збережемо в базі даних.

$this->load->model(‘setting/setting’);
if (($this->request->server[‘REQUEST_METHOD’] == ‘POST’)) {
$this->model_setting_setting->editSetting(‘custom’, $this->request->post);
$this->session->data[‘success’] = ‘Saved.’;
$this->redirect($this->url->link(‘extension/payment’, ‘token=’ . $this->session->data[‘token’], ‘SSL’));
}

Далі, наступна пара рядків коду використовується лише для установки статичних міток, які будуть використовуватися у файлі шаблону.

$this->data[‘heading_title’] = $this->language->get(‘heading_title’);
$this->data[‘entry_text_config_one’] = $this->language->get(‘text_config_one’);
$this->data[‘entry_text_config_two’] = $this->language->get(‘text_config_two’);
$this->data[‘button_save’] = $this->language->get(‘text_button_save’);
$this->data[‘button_cancel’] = $this->language->get(‘text_button_cancel’);
$this->data[‘entry_order_status’] = $this->language->get(‘entry_order_status’);
$this->data[‘text_enabled’] = $this->language->get(‘text_enabled’);
$this->data[‘text_disabled’] = $this->language->get(‘text_disabled’);
$this->data[‘entry_status’] = $this->language->get(‘entry_status’);

Потім ми встановили змінну «action», щоб переконатися, що форма передається нашому методу «індекс» при відправці. І таким же чином користувач повертається до переліку способів оплати, якщо натискає кнопку «cancel».

$this->data[‘action’] = $this->url->link(‘payment/custom’, ‘token=’ . $this->session->data[‘token’], ‘SSL’);
$this->data[‘cancel’] = $this->url->link(‘extension/payment’, ‘token=’ . $this->session->data[‘token’], ‘SSL’);

Крім того, є код для заповнення полів форми конфігурації за замовчуванням або в режимі додавання, або в режимі редагування.

if (isset($this->request->post[‘text_config_one’])) {
$this->data[‘text_config_one’] = $this->request->post[‘text_config_one’];
} else {
$this->data[‘text_config_one’] = $this->config->get(‘text_config_one’);
}


if (isset($this->request->post[‘custom_order_status_id’])) {
$this->data[‘custom_order_status_id’] = $this->request->post[‘custom_order_status_id’];
} else {
$this->data[‘custom_order_status_id’] = $this->config->get(‘custom_order_status_id’);
}

У наступному розділі ми завантажимо різні значення статусу замовлення, які доступні в цій області, і які будуть використовуватися для розкривного списку у формі конфігурації для поля «Order Status» (Стан замовлення).

$this->load->model(‘localisation/order_status’);
$this->data[‘order_statuses’] = $this->model_localisation_order_status->getOrderStatuses();

Нарешті, ми призначаємо наш власний файл шаблону custom.tpl і пропонуємо подання.

$this->template = ‘payment/custom.tpl’;
$this->children = array(
‘common/header’,
‘common/footer’
);
$this->response->setOutput($this->render());

Це була налаштування для файлу контролера.

Створення інтерфейсу модуля оплати в OpenCart: частина 2

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

Мова і файли шаблонів

Отже, тепер, коли ми закінчили з файлом контролера, давайте створимо файли мови та шаблону. Створюємо мовний файл admin/language/english/payment/custom.php. Переконайтеся, що ваш мовний файл виглядає як код, який ми надали нижче в прикладі custom.php.

Як бачите, ми тільки що встановили мовні змінні, раніше використовувані у файлі контролера. Це досить легко і просто.

Давайте створимо файл виду. Створюємо файл шаблону admin/view/template/payment/custom.tpl. Вставляємо наступне вміст в створений файл шаблону custom.tpl.

Знову ж, це досить легко зрозуміти: Мета цього файлу шаблону — надати форму конфігурації інтерфейсу способу оплати. Він використовує змінні, які ми встановили раніше у файлі контролера.

Як це виглядає

Ми закінчили роботу з файлами. Тепер прийшов час рухатися далі і побачити в дії. Перейдіть в розділ адміністрування OpenCart до Extensions > Payment. Ви повинні побачити, що власний метод вказано нижче як «Cash On Delivery».

Створення інтерфейсу модуля оплати в OpenCart: частина 2

Натисніть на посилання install, щоб встановити спосіб оплати. Після установки можна буде побачити посилання edit, щоб відкрити форму конфігурації. Натисніть edit.

Створення інтерфейсу модуля оплати в OpenCart: частина 2

Отже, це форма конфігурації, заради якої ми зробили всю важку роботу! Як бачите, ми надали поля Order Status і Status. Крім того, ми тільки що продемонстрували, як можна надати настроюються параметри, а також налаштувати One Parameter і Parameter Two.

Заповнити форму і зберегти її можна, натиснувши кнопку «Save» . Ми створили код для цього в нашому index методі контролера, тому він повинен працювати прямо з коробки! І так, не забудьте встановити статус «Enabled», якщо хочете, щоб метод був доступний в інтерфейсі!

Створення інтерфейсу модуля оплати в OpenCart: частина 2

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення