Від автора: в ядрі 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!
Створити інтернет-магазин на самій популярної 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!
Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!
Приступити до створення
Мова і файли шаблонів
Отже, тепер, коли ми закінчили з файлом контролера, давайте створимо файли мови та шаблону. Створюємо мовний файл admin/language/english/payment/custom.php. Переконайтеся, що ваш мовний файл виглядає як код, який ми надали нижче в прикладі custom.php.
Як бачите, ми тільки що встановили мовні змінні, раніше використовувані у файлі контролера. Це досить легко і просто.
Давайте створимо файл виду. Створюємо файл шаблону admin/view/template/payment/custom.tpl. Вставляємо наступне вміст в створений файл шаблону custom.tpl.
Знову ж, це досить легко зрозуміти: Мета цього файлу шаблону — надати форму конфігурації інтерфейсу способу оплати. Він використовує змінні, які ми встановили раніше у файлі контролера.
Як це виглядає
Ми закінчили роботу з файлами. Тепер прийшов час рухатися далі і побачити в дії. Перейдіть в розділ адміністрування OpenCart до Extensions > Payment. Ви повинні побачити, що власний метод вказано нижче як «Cash On Delivery».
Натисніть на посилання install, щоб встановити спосіб оплати. Після установки можна буде побачити посилання edit, щоб відкрити форму конфігурації. Натисніть edit.
Отже, це форма конфігурації, заради якої ми зробили всю важку роботу! Як бачите, ми надали поля Order Status і Status. Крім того, ми тільки що продемонстрували, як можна надати настроюються параметри, а також налаштувати One Parameter і Parameter Two.
Заповнити форму і зберегти її можна, натиснувши кнопку «Save» . Ми створили код для цього в нашому index методі контролера, тому він повинен працювати прямо з коробки! І так, не забудьте встановити статус «Enabled», якщо хочете, щоб метод був доступний в інтерфейсі!
Інтернет-магазин на OpenCart!
Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!
Приступити до створення