Jump to content

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


Recommended Posts

support

Переделываем модуль оплаты из 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.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...