Создание модуля пользовательских платежей в Magento: часть первая

17 января 2018

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

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

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

A Взгляд на установку файла

Мы создадим пользовательский модуль «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, который мы будем использовать для создания настраиваемых полей для нашего пользовательского метода оплаты.

Создание файлов и папок

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

<?xml version="1.0"?>
<config>
  <modules>
    <Envato_Custompaymentmethod>
      <active>true</active>
      <codePool>local</codePool>
      <depends>
        <Mage_Payment />
      </depends>
    </Envato_Custompaymentmethod>
  </modules>
</config>

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

Двигаясь вперед, создайте «код приложения локального файла Envato Custompaymentmethod sql custompaymentmethod_setup install-1.0.0.0.php» со следующим содержимым.

<?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» в таблицах, связанных с платежами.

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

<?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 ". В процессе проверки на стороне входа, когда пользователь выбирает наш пользовательский способ оплаты, мы будем отображать два текстовых поля для ввода информации. Они предназначены только для демонстрации использования пользовательских полей в интерфейсном способе оплаты.

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

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

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

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

<?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», указанный в качестве одного из способов оплаты!

Заключение

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