Статьи

Создание пользовательского метода оплаты в Magento: часть первая

Будучи успешной платформой электронной коммерции, Magento предоставляет множество способов оплаты в самом ядре. Однако вы также можете создать собственное расширение метода оплаты, чтобы подключить выбранный вами платежный шлюз, если он еще не доступен.

В этой серии мы рассмотрим процесс создания расширения для собственного способа оплаты. В этой статье мы начнем с внутреннего раздела, настроив конфигурацию для нашего пользовательского метода оплаты.

Я предполагаю, что вы знакомы с базовым процессом создания модулей в Magento. Если нет, вы можете обратиться к этой статье о разработке пользовательских модулей.

Мы создадим пользовательский модуль «Custompaymentmethod», поэтому давайте посмотрим на список файлов, необходимых для настройки внутренней конфигурации.

  • app/etc/modules/Envato_All.xml : это файл, используемый для включения нашего пользовательского модуля.
  • app/code/local/Envato/Custompaymentmethod/etc/config.xml : это файл конфигурации модуля, в котором мы объявим наш собственный способ оплаты.
  • app/code/local/Envato/Custompaymentmethod/etc/system.xml : это файл конфигурации системы, в котором мы настроим параметры конфигурации для нашего пользовательского метода оплаты.
  • app/code/local/Envato/Custompaymentmethod/sql/custompaymentmethod_setup/install-1.0.0.0.php : это файл SQL, который мы будем использовать для создания настраиваемых полей для нашего пользовательского метода оплаты.

Во-первых, нам нужно создать файл включения модуля. Создайте файл «app / etc / modules / Envato_All.xml» и вставьте следующее содержимое в этот файл. Мы использовали «Envato» в качестве пространства имен нашего модуля и «Custompaymentmethod» в качестве имени нашего модуля. По умолчанию будет включен наш модуль «Custompaymentmethod».

01
02
03
04
05
06
07
08
09
10
11
12
13
<?xml version=»1.0″?>
<config>
  <modules>
    <Envato_Custompaymentmethod>
      <active>true</active>
      <codePool>local</codePool>
       
      <depends>
        <Mage_Payment />
      </depends>
    </Envato_Custompaymentmethod>
  </modules>
</config>

Ничего особенного — мы только что объявили наш модуль в «локальном» пуле кода. Однако важно отметить, что мы объявили, что наше расширение зависит от основного расширения «Mage_Payment».

В дальнейшем создайте файл «app / code / local / Envato / Custompaymentmethod / sql / custompaymentmethod_setup / install-1.0.0.0.php» со следующим содержимым.

01
02
03
04
05
06
07
08
09
10
11
12
13
<?php
$installer = $this;
$installer->startSetup();
$installer->run(«
ALTER TABLE `{$installer->getTable(‘sales/quote_payment’)}`
ADD `custom_field_one` VARCHAR( 255 ) NOT NULL,
ADD `custom_field_two` VARCHAR( 255 ) NOT NULL;
  
ALTER TABLE `{$installer->getTable(‘sales/order_payment’)}`
ADD `custom_field_one` VARCHAR( 255 ) NOT NULL,
ADD `custom_field_two` VARCHAR( 255 ) NOT NULL;
«);
$installer->endSetup();

Это установочный файл нашего модуля, который будет создавать поля «custom_field_one» и «custom_field_two» в таблицах, связанных с оплатой.

Далее нам нужно создать файл конфигурации модуля. Создайте «app / code / local / Envato / Custompaymentmethod / etc / config.xml» и вставьте следующее содержимое в этот файл.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?xml version=»1.0″?>
<config>
  <modules>
    <Envato_Custompaymentmethod>
      <version>1.0.0.0</version>
    </Envato_Custompaymentmethod>
  </modules>
 
  <global>
    <fieldsets>
      <sales_convert_quote_payment>
        <custom_field_one>
          <to_order_payment>*</to_order_payment>
        </custom_field_one>
        <custom_field_two>
          <to_order_payment>*</to_order_payment>
        </custom_field_two>
      </sales_convert_quote_payment>
    </fieldsets>
     
    <helpers>
      <custompaymentmethod>
        <class>Envato_Custompaymentmethod_Helper</class>
      </custompaymentmethod>
    </helpers>
 
    <blocks>
      <custompaymentmethod>
        <class>Envato_Custompaymentmethod_Block</class>
      </custompaymentmethod>
    </blocks>
         
    <models>
      <custompaymentmethod>
        <class>Envato_Custompaymentmethod_Model</class>
      </custompaymentmethod>
    </models>
 
    <resources>
      <custompaymentmethod_setup>
        <setup>
          <module>Envato_Custompaymentmethod</module>
        </setup>
      </custompaymentmethod_setup>
    </resources>
  </global>
 
  <default>
    <payment>
      <custompaymentmethod>
        <active>1</active>
        <model>custompaymentmethod/paymentmethod</model>
        <order_status>pending</order_status>
        <title>CustomPaymentMethod</title>
        <allowspecific>0</allowspecific>
        <payment_action>sale</payment_action>
      </custompaymentmethod>
    </payment>
  </default>
   
  <frontend>
    <routers>
      <custompaymentmethod>
        <use>standard</use>
        <args>
          <module>Envato_Custompaymentmethod</module>
          <frontName>custompaymentmethod</frontName>
        </args>
      </custompaymentmethod>
    </routers>
  </frontend>
</config>

Давайте посмотрим на некоторые важные элементы в файле «config.xml». В процессе оформления заказа, когда пользователь выбирает наш собственный способ оплаты, мы показываем два текстовых поля для ввода информации. Они предназначены только для демонстрации использования пользовательских полей в методе оплаты переднего плана.

Мы увидим это подробнее чуть позже, а пока просто предположим, что нам нужно сохранить пользовательские поля, связанные с нашим пользовательским методом оплаты при создании заказа. Теги <fieldsets> и <sales_convert_quote_payment> предназначены именно для этой цели — они сообщат Magento также сохранить эти поля вместе с информацией о заказе.

Далее мы объявили обычные теги помощников, блоков и моделей, которые мы реализуем в других частях этой серии. Кроме того, мы объявили ресурсы для нашего пользовательского модуля, используя <custompaymentmethod_setup> . Вспомните файл «install-1.0.0.0.php», который мы упоминали ранее. Да, это точно связано с этим установочным файлом. Magento обнаружит этот файл и запустит необходимые сценарии установки SQL для нашего модуля.

Наконец, мы подключаем наш собственный способ оплаты, используя <custompaymentmethod> под тегом <payment> . Под этим тегом мы настроили конфигурацию по умолчанию для нашего метода оплаты, например, «активный», «order_status», «payment_action» и т. Д. В конце файла мы объявили интерфейсный маршрутизатор для нашего модуля. , который будет реализован в других частях этой серии.

Давайте перейдем к следующему важному файлу, файлу «system.xml». Создайте файл «app / code / local / Envato / Custompaymentmethod / etc / system.xml» и вставьте следующее содержимое в этот файл.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version=»1.0″?>
<config>
  <sections>
    <payment>
      <groups>
        <custompaymentmethod translate=»label» module=»custompaymentmethod»>
          <label>CustomPaymentMethod Module</label>
          <sort_order>1000</sort_order>
          <show_in_default>1</show_in_default>
          <show_in_website>1</show_in_website>
          <show_in_store>0</show_in_store>
          <fields>
            <title translate=»label»>
              <label>Title</label>
              <frontend_type>text</frontend_type>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>0</show_in_store>
              <sort_order>1</sort_order>
            </title>
            <active translate=»label»>
              <label>Enabled</label>
              <frontend_type>select</frontend_type>
              <source_model>adminhtml/system_config_source_yesno</source_model>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>0</show_in_store>
              <sort_order>2</sort_order>
            </active>
            <order_status translate=»label»>
              <label>New order status</label>
              <frontend_type>select</frontend_type>
              <source_model>adminhtml/system_config_source_order_status</source_model>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>0</show_in_store>
              <sort_order>3</sort_order>
            </order_status>
            <allowspecific translate=»label»>
              <label>Payment from applicable countries</label>
              <frontend_type>allowspecific</frontend_type>
              <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
              <sort_order>4</sort_order>
            </allowspecific>
            <specificcountry translate=»label»>
              <label>Payment from Specific countries</label>
              <frontend_type>multiselect</frontend_type>
              <source_model>adminhtml/system_config_source_country</source_model>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
              <sort_order>5</sort_order>
            </specificcountry>
          </fields>
        </custompaymentmethod>
      </groups>
    </payment>
  </sections>
</config>

В этом файле мы просто объявляем настраиваемые поля для нашего пользовательского метода оплаты. Идите вперед и включите модуль от серверной части. Перейдите в Система> Конфигурация> Продажи> Способы оплаты , где будут перечислены все способы оплаты. Вы должны увидеть «Модуль CustomPaymentMethod» в списке как один из способов оплаты!

Конфигурация внутреннего способа оплаты

Сегодня мы только что посмотрели на начальную настройку внутренней конфигурации для нашего пользовательского метода оплаты. В следующих статьях этой серии мы увидим его передний конец. Не забудьте поделиться своими мыслями, используя канал ниже.