Авторизация  
VaM

Переделываем модуль оплаты из osCommerce в VaM Shop Переделываем

Рекомендуемые сообщения

VaM

Переделываем модуль оплаты из osCommerce в VaM Shop.

Есть модуль - Western Union Module - http://www.oscommerce.com/community/contributions,3068

Модуль оплаты Western Union

Как Вы могли заметить, данный модуль для osCommerce.

Мы работаем в VaM Shop и, соответственно, нам нужно его переделать под VaM Shop.

Скачиваем модуль - http://www.oscommerce.com/community/contributions,3068 (в данной статье используется последняя версия на момент написания статьи - Minimum Amount to Enable Western Union Payments).

Распаковываем.

Начинаем переделывать модуль под VaM Shop.

1. Первое, что Вы должны знать об отличиях VaM Shop и osCommerce - это расположение языковых файлов.

В osCommerce: /includes/languages/язык.

В VaM Shop: /lang/язык.

Соотвественно, первое, что нам нужно сделать - переписать файл /includes/languages/english/modules/payment/west.php в /lang/english/modules/payment/west.php (это языковой файл для английского языка) и в /lang/russian/modules/payment/west.php (это языковой файл для русского языка).

Можно также перевести на русский текст в /lang/russian/modules/payment/west.php, но это уже по желанию.

2. Теперь нам нужно переделать сам модуль /includes/modules/payment/west.php.

Первое отличие структуры VaM Shop от osCommerce:

Все функции в VaM Shop начинаются с vam_ (а не tep_ как в osCommerce).

Соответственно, в файле /includes/modules/payment/west.php меняем все tep_ на vam_

Второе отличие структуры VaM Shop от osCommerce:

Все настройки модуля, т.е. названия и описания полей в VaM Shop, в отличии от osCommerce, хранятся в языковых файлах.

Нам нужно добавить языковые константы для названия поля и описания поля.

Открываем файл /lang/russian/modules/payment/west.php.

Смотрим на insert запросы, определяем, какие константы нам нужно добавить (т.е. смотрим на значения поля configuration_key) и видим следующие ключи:

MODULE_PAYMENT_WEST_STATUS

MODULE_PAYMENT_WEST_PAYTO

MODULE_PAYMENT_WEST_EMAIL

MODULE_PAYMENT_WEST_SORT_ORDER

MODULE_PAYMENT_WEST_MIN_AMOUNT

MODULE_PAYMENT_WEST_ZONE

MODULE_PAYMENT_WEST_ORDER_STATUS_ID

Создаём языковые константы для данных ключей, добавляя к каждому ключу в конце:

_TITLE - это будет название настройки.

_DESC - это будет описание настройки.

Учитывая всё, что я сказал выше, Вы должны добавить в /lang/russian/modules/payment/west.php (можно также перевести данный текст на русский) следующее:

define('MODULE_PAYMENT_WEST_STATUS_TITLE', 'Enable Western Union Module');

define('MODULE_PAYMENT_WEST_STATUS_DESC', 'Do you want to accept Western Union payments?');

define('MODULE_PAYMENT_WEST_PAYTO_TITLE', 'Make Payable to:');

define('MODULE_PAYMENT_WEST_PAYTO_DESC', 'Who should payments be made payable to?');

define('MODULE_PAYMENT_WEST_EMAIL_TITLE', 'Your email address:');

define('MODULE_PAYMENT_WEST_EMAIL_DESC', 'Where will the customer send confirmation of payment.');

define('MODULE_PAYMENT_WEST_SORT_ORDER_TITLE', 'Sort order of display.');

define('MODULE_PAYMENT_WEST_SORT_ORDER_DESC', 'Sort order of display. Lowest is displayed first.');

define('MODULE_PAYMENT_WEST_MIN_AMOUNT_TITLE', 'Minimum amount for Western Union use');

define('MODULE_PAYMENT_WEST_MIN_AMOUNT_DESC', 'The minimum amount to make the Western Union payment method available');

define('MODULE_PAYMENT_WEST_ZONE_TITLE', 'Payment Zone');

define('MODULE_PAYMENT_WEST_ZONE_DESC', 'If a zone is selected, only enable this payment method for that zone.');

define('MODULE_PAYMENT_WEST_ORDER_STATUS_ID_TITLE', 'Set Order Status');

define('MODULE_PAYMENT_WEST_ORDER_STATUS_ID_DESC', 'Set the status of orders made with this payment module to this value');

Затем нам нужно исправить все SQL запросы типа insert, проще говоря, смысл в том, чтобы перенести текст (название и описание настроек модуля) из SQL запросов в языковой файл, т.к. текст мы уже перенесли, теперь нужно удалить его из insert запросов.

Удаляем из запроса поля configuration_title и configuration_description, а также значения для этих полей, т.е., к примеру, нам нужно исправить:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Check/Money Order Module', 'MODULE_PAYMENT_WEST_STATUS', 'True', 'Do you want to accept Check/Money Order payments?', '6', '1', 'vam_cfg_select_option(array('True', 'False'), ', now());");

На:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_WEST_STATUS', 'True', '6', '1', 'vam_cfg_select_option(array('True', 'False'), ', now());");

Точно также исправляем остальные insert запросы, в итоге insert запросы будут выглядеть следующим образом:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_WEST_STATUS', 'True', '6', '1', 'vam_cfg_select_option(array('True', 'False'), ', now());");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_WEST_PAYTO', '', '6', '1', now());");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_WEST_EMAIL', '', '6', '1', now());");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_WEST_SORT_ORDER', '0', '6', '0', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_WEST_MIN_AMOUNT', '100', '6', '0', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_PAYMENT_WEST_ZONE', '0', '6', '2', 'vam_get_zone_class_title', 'vam_cfg_pull_down_zone_classes(', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, use_function, date_added) values ('MODULE_PAYMENT_WEST_ORDER_STATUS_ID', '0', '6', '0', 'vam_cfg_pull_down_order_statuses(', 'vam_get_order_status_name', now())");

Далее в файле /includes/modules/payment/west.php меняем:

//$this->enabled = ((MODULE_PAYMENT_WEST_STATUS == 'True') ? true : false);

На:

$this->enabled = ((MODULE_PAYMENT_WEST_STATUS == 'True') ? true : false);

Если этого не сделать, то у данного модуля в админке не будет изменён статус на установлен и не будут показаны кнопки Удалить и Редактировать.

Затем нам нужно добавить в модуль новую настройку - список разрешённых стран, т.е. для покупателей из каких стран будет доступен данный модуль оплаты.

Для этого в файле /includes/modules/payment/west.php после:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_WEST_STATUS', 'True', '6', '1', 'vam_cfg_select_option(array('True', 'False'), ', now());");

Добавляем:

vam_db_query("insert into ".TABLE_CONFIGURATION." ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_WEST_ALLOWED', '', '6', '0', now())");

Затем в список ключей:

return array('MODULE_PAYMENT_WEST_STATUS', 'MODULE_PAYMENT_WEST_ZONE', 'MODULE_PAYMENT_WEST_ORDER_STATUS_ID', 'MODULE_PAYMENT_WEST_SORT_ORDER', 'MODULE_PAYMENT_WEST_PAYTO', 'MODULE_PAYMENT_WEST_EMAIL', 'MODULE_PAYMENT_WEST_MIN_AMOUNT');

Добавляем MODULE_PAYMENT_WEST_ALLOWED, т.е. изменяем данный текст на:

return array('MODULE_PAYMENT_WEST_STATUS', 'MODULE_PAYMENT_WEST_ALLOWED', 'MODULE_PAYMENT_WEST_ZONE', 'MODULE_PAYMENT_WEST_ORDER_STATUS_ID', 'MODULE_PAYMENT_WEST_SORT_ORDER', 'MODULE_PAYMENT_WEST_PAYTO', 'MODULE_PAYMENT_WEST_EMAIL', 'MODULE_PAYMENT_WEST_MIN_AMOUNT');

И в языковой файл модуля /lang/russian/modules/payment/west.php добавляем описание данной настройки:

define('MODULE_PAYMENT_WEST_ALLOWED_TITLE' , 'Разрешённые страны');

define('MODULE_PAYMENT_WEST_ALLOWED_DESC' , 'Укажите коды стран, для которых будет доступен данный модуль (например RU,DE (оставьте поле пустым, если хотите что б модуль был доступен покупателям из любых стран))');

Всё, на этом переделка модуля закончена.

Если какие-либо моменты Вам не понятны, можете скачать уже изменённый для VaM Shop модуль в файлах и проверить, как правильно менять код.

Далее нужно просто установить модуль:

1. Переписывайте в свой магазин изменённые файлы модуля:

/includes/modules/payment/west.php

/lang/english/modules/payment/west.php

/lang/russian/modules/payment/west.php

2. В Админке - Модули - Оплата установите модуль Western Union Wired Payment.

3. Настройте модуль, т.е. укажите имя получателя платежа, свой e-mail, минимальную сумму заказа для которых будет доступен данный модуль оплаты.

4. Модуль будет показан в списке доступных модулей оплаты при оформлении заказа - рис. 1

рис. 1

Коротко подведу итог, в чём отличия модулей оплаты VaM Shop от модулей оплаты в osCommerce:

1. Расположение языковых файлов.

В osCommerce: /includes/languages/язык.

В VaM Shop: /lang/язык.

2. Все функции в VaM Shop начинаются с vam_ (а не tep_ как в osCommerce).

3. Все настройки модуля, т.е. названия и описания полей в VaM Shop, в отличии от osCommerce, хранятся в языковых файлах.

4. В модуль оплаты при переделке для VaM Shop нужно добавлять новую настройку, в данном примере MODULE_PAYMENT_WEST_ALLOWED, т.е. список разрешённых стран.

Зная эти 4 основных отличия, можно самому переделывать и другие модули оплаты из osCommere в VaM Shop.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Авторизация