Створення модуля оплати Bitcoin в OpenCart: частина 1

306

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

Перш ніж приступити до створення розширення, встановіть OpenCart на локальну машину. Потім скачайте BitPay API Library із вкладення в цю статтю і помістіть цю папку в корінь магазину, як показано на скріншоті нижче:

Створення модуля оплати Bitcoin в OpenCart: частина 1

Для створення і налаштування Bitcoin Payment Module нам потрібен інтерфейс адміністратора. Тому ми створимо нашу панель адміністратора по шаблону MVC.

Створення контролера адмінки

Перейдіть у admin/controller/payment

Створення модуля оплати Bitcoin в OpenCart: частина 1

Інтернет-магазин на 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 */

Рендеринг шаблону подання

Наступний код додає дочірні елементи в наш шаблон подання та рендерить для користувача:

Створення модуля оплати Bitcoin в OpenCart: частина 1

Інтернет-магазин на 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.

Створення модуля оплати Bitcoin в OpenCart: частина 1

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

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

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