Від автора: у цій серії ми вивчимо, як зробити модуль оплати Bitcoin OpenCart. Перш ніж приступити, рекомендую попрактикуватися в базовій розробці модулів OpenCart, якщо ви не вмієте створювати свої модулі. Після цього ви зможете перейти до розробки більш складних модулів. Ця серія націлена на досягнення цієї мети.
Перш ніж приступити до створення розширення, встановіть OpenCart на локальну машину. Потім скачайте BitPay API Library із вкладення в цю статтю і помістіть цю папку в корінь магазину, як показано на скріншоті нижче:
Для створення і налаштування Bitcoin Payment Module нам потрібен інтерфейс адміністратора. Тому ми створимо нашу панель адміністратора по шаблону MVC.
Створення контролера адмінки
Перейдіть у admin/controller/payment
Інтернет-магазин на OpenCart!
Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!
Приступити до створення
Створіть PHP файл, та назвіть його bitpay.php
Відкрийте цей файл у вашій IDE і створіть клас, дотримуючись способи іменування OpenCart. Наприклад, class ControllerPaymentBitpay extends Controller {}
Всередині класу контролера визначте стандартну функцію index
Усередині цієї функції вставте код нижче
Завантаження мови і моделей
$this->language->load(‘payment/bitpay’);
$this->load->model(‘localisation/order_status’); // loading the model to get system Order Statuses
Налаштування заголовка сторінки
Заголовок сторінки задається через:
$this->document->setTitle($this->language->get(‘text_title’)); // Setting the document title heading
Парсинг елементів контролера подання
/* Assigning and parsing the values from */
$this->data[‘heading_title’] = $this->language->get(‘text_title’);
$this->data[‘text_enabled’] = $this->language->get(‘text_enabled’); // gets default language text
$this->data[‘text_disabled’] = $this->language->get(‘text_disabled’); // gets default language text
$this->data[‘text_high’] = $this->language->get(‘text_high’);
$this->data[‘text_medium’] = $this->language->get(‘text_medium’);
$this->data[‘text_low’] = $this->language->get(‘text_low’);
$this->data[‘api_key’] = $this->language->get(‘text_api_key’);
$this->data[‘confirmed_status’] = $this->language->get(‘text_confirmed_status’);
$this->data[‘invalid_status’] = $this->language->get(‘text_invalid_status’);
$this->data[‘transaction_speed’] = $this->language->get(‘text_transaction_speed’);
$this->data[‘test_mode’] = $this->language->get(‘text_test_mode’);
$this->data[‘status’] = $this->language->get(‘text_status’);
$this->data[‘sort_order’] = $this->language->get(‘text_sort_order’);
$this->data[‘button_save’] = $this->language->get(‘button_save’); // gets default language text
$this->data[‘button_cancel’] = $this->language->get(‘button_cancel’); // gets default language text
$this->data[‘tab_general’] = $this->language->get(‘tab_general’); // gets default language text
/* End Text Assignation */
Роутинг кнопок save і cancel
Наступний код призначає тригери на Action / Save & Cancel ДО и:
$this->data[‘action’] = HTTPS_SERVER . ‘index.php?route=payment/’.$this->payment_module_name.’&token=’ . $this->session->data[‘token’];
$this->data[‘cancel’] = HTTPS_SERVER . ‘index.php?route=extension/payment&token=’ . $this->session->data[‘token’];
Отримання доступних статусів замовлення
Наступний код бере всі статуси замовлення з Localisation-Model (яка захардкодена в OpenCart) і парсити їх подання:
$this->data[‘order_statuses’] = $this->model_localisation_order_status->getOrderStatuses();
Отримання даних з бази даних
Наш процес збереження переходить у розділ моделі. Наступний код витягує дані модуля (якщо вони є) і парсити їх подання.
/* Fetching the Field Values saved in Database*/
$this->data[‘bitpay_api_key’] = $this->config->get(‘bitpay_api_key’);
$this->data[‘bitpay_confirmed_status_id’] = $this->config->get(‘bitpay_confirmed_status_id’);
$this->data[‘bitpay_invalid_status_id’] = $this->config->get(‘bitpay_invalid_status_id’);
$this->data[‘bitpay_transaction_speed’] = $this->config->get(‘bitpay_transaction_speed’);
$this->data[‘bitpay_test_mode’] = $this->config->get(‘bitpay_test_mode’);
$this->data[‘bitpay_status’] = $this->config->get(‘bitpay_status’);
$this->data[‘bitpay_sort_order’] = $this->config->get(‘bitpay_sort_order’);
/* Database fields fetching ends */
Рендеринг шаблону подання
Наступний код додає дочірні елементи в наш шаблон подання та рендерить для користувача:
Інтернет-магазин на OpenCart!
Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!
Приступити до створення
$this->template = ‘payment/bitpay.tpl’; // Template Assigning
$this->children = array(
‘common/header’,
‘common/footer’
); // Provide the list of template childeren
$this->response->setOutput($this->render(TRUE), $this->config->get(‘config_compression’)); // Rendering the Template Output
Створення подання адмінки
Перейдіть у admin/view/template/payment
Створіть файл bitplay.tpl
Можете помістити в нього свій HTML. Я зробив це таким чином.
Додавання хедера
Щоб завантажити хедер, який ми передали в якості дочірнього елемента в 1.6, використовуйте:
Блок попереджень
Блок попереджень – div секція, яка буде показувати попередження для користувача, якщо такі є:
Весь шаблон
Весь HTML буде приблизно таким:
Ми закінчили роботу з макетом модуля. Тепер необхідно зберегти Data Module в базу даних. Для цього нам знадобиться вставити трохи коду всередину контролера.
Збереження даних
Всередині стандартної функції контролера вставте код, як нижче:
if (($this->request->server[‘REQUEST_METHOD’] == ‘POST’) && ($this->validate())) // Checking if the data is coming through post and it validate
{
$this->model_setting_setting->editSetting($this->payment_module_name, $this->request->post); // saving all the data into the database
$this->session->data[‘success’] = $this->language->get(‘text_success’); // Success Identifier
$this->redirect(HTTPS_SERVER . ‘index.php?route=extension/payment&token=’ . $this->session->data[‘token’]); // Redirecting to the payment modules list
}
Валідація введення
Код нижче – це функція валідації обов’язкових даних:
private $error = array(); // All errors will be saved into this array
private function validate()
{
// User Module Permission Check
if (!$this->user->hasPermission(‘змінити’, ‘payment/’.$this->payment_module_name))
{
$this->error[‘warning’] = $this->language->get(‘error_permission’);
}
// User Module Permission Check Ends
// Check if the API Key is not empty
if (!$this->request->post[‘bitpay_api_key’])
{
$this->error[‘api_key’] = $this->language->get(‘error_api_key’);
}
// Api Check ends here
// If there is no error, the function returns True False else
if (!$this->error)
{
return TRUE;
}
else
{
return FALSE;
}
// Boolean Check Ends here
}
Ми створили макет модуля оплати для нашої панелі адміністратора. Можете перевірити панель. Але не забудьте дозволити користувачеві доступ.
Висновок
У цьому уроці ми вивчили адміністративну частину модуля оплати. Краще дати адміністратора сайту більше прав через інтерфейс, ніж змушувати його писати код. У наступній статті ми реалізуємо модуль оплати для front end.
Інтернет-магазин на OpenCart!
Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!
Приступити до створення