Advertisement
  1. Code
  2. Magento

Criando um modulo para método de pagamento customizado no Magento: Primeira parte

Scroll to top
Read Time: 5 min
This post is part of a series called Create a Custom Payment Method Module in Magento.
Create a Custom Payment Method Module in Magento: Part Two

() translation by (you can also view the original English article)

Sendo uma estrutura de comércio eletrônico bem sucedido, o Magento oferece vários métodos de pagamento no próprio core. No entanto, você também pode criar uma extensão do método de pagamento personalizada para sua escolha de gateway de pagamento, se ainda não estiver disponível.

Nesta série, nós vamos olhar para o processo de criação de uma extensão do método de pagamento personalizado. Neste artigo, vamos começar com a seção de backend, definindo uma configuração para o nosso método de pagamento personalizado.

Presumo que você está familiarizado com o processo de criação do módulo básico em Magento. Se não, você pode fazer referência a este artigo sobre o desenvolvimento do módulo personalizado.

Um olhar sobre o arquivo de configuração

Vamos criar um módulo personalizado "Custompaymentmethod", então vamos dar uma olhada na lista de arquivos necessários para a configuração do backend.

  • app/etc/modules/Envato_All.xml: É um arquivo usado para habilitar o módulo personalizado.
  • app/code/local/Envato/Custompaymentmethod/etc/config.xml : É um arquivo de configuração do módulo em que nós vamos declarar nosso método de pagamento personalizado.
  • app/code/local/Envato/Custompaymentmethod/etc/system.xml: É um arquivo de configuração do sistema, no qual nós definiremos as opções de configuração para nosso método de pagamento personalizado.
  • app/code/local/Envato/Custompaymentmethod/sql/custompaymentmethod_setup/install-1.0.0.0.php: É um arquivo SQL que usaremos para criar campos personalizados para o nosso método de pagamento personalizado.

Criar arquivos e pastas

Primeiro, precisamos criar um arquivo para habilitar o módulo. Crie um arquivo "app/etc/modules/Envato_All.xml" e cole o seguinte conteúdo neste arquivo. Usamos "Envato" como nosso namespace e "Custompaymentmethod" como o nome do módulo. Isso vai habilitar o nosso módulo de "Custompaymentmethod" por padrão.

1
<?xml version="1.0"?>
2
<config>
3
  <modules>
4
    <Envato_Custompaymentmethod>
5
      <active>true</active>
6
      <codePool>local</codePool>
7
      
8
      <depends>
9
        <Mage_Payment />
10
      </depends>
11
    </Envato_Custompaymentmethod>
12
  </modules>
13
</config>

Nada de especial aqui — só nós declaramos nosso módulo sob a pasta de código "local". No entanto, a coisa importante a notar aqui é que nós declaramos que nossa extensão varia de acordo com o núcleo de extensão "Mage_Payment".

Seguindo em frente, crie um arquivo de "app/code/local/Envato/Custompaymentmethod/sql/custompaymentmethod_setup/install-1.0.0.0.php" com o seguinte conteúdo.

1
<?php
2
$installer = $this;
3
$installer->startSetup();
4
$installer->run("

5
ALTER TABLE `{$installer->getTable('sales/quote_payment')}` 

6
ADD `custom_field_one` VARCHAR( 255 ) NOT NULL,

7
ADD `custom_field_two` VARCHAR( 255 ) NOT NULL;

8
 

9
ALTER TABLE `{$installer->getTable('sales/order_payment')}` 

10
ADD `custom_field_one` VARCHAR( 255 ) NOT NULL,

11
ADD `custom_field_two` VARCHAR( 255 ) NOT NULL;

12
");
13
$installer->endSetup();

É uma instalação de arquivo do nosso módulo que irá criar os campos "custom_field_one" e "custom_field_two" no pagamento de tabelas relacionadas.

Em seguida, precisamos criar um arquivo de configuração do módulo. Crie o arquivo "app/code/local/Envato/Custompaymentmethod/etc/config.xml" e cole o seguinte conteúdo neste arquivo.

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

Vamos dar uma olhada em alguns dos elementos importantes no arquivo "config.xml" . No frontend do checkout, quando um usuário seleciona o nosso método de pagamento personalizado, mostraremos duas caixas de texto para inserir as informações. Isso foi feito apenas com a finalidade de demonstrar o uso de campos personalizados em um método de pagamento.

Veremos isso em detalhes um pouco mais tarde, mas por enquanto apenas precisamos salvar campos personalizados relacionados ao nosso método de pagamento durante a criação da ordem. O <fieldsets> e <sales_convert_quote_payment> são tags exatamente para essa finalidade — eles vão dizer ao Magento para salvar esses campos também com informações de ordem.

Em seguida, nós declaramos o habituais helpers, blocks e models de tags relacionadas, que implementaremos em outras partes desta série. Além disso, nós declaramos o resources para nosso módulo personalizado usando  <custompaymentmethod_setup>. Lembre-se o arquivo "install-1.0.0.0.php" que mencionamos anteriormente. Sim, é exatamente relacionado ao arquivo de instalação. Magento irá detectar esse arquivo e executar o SQL necessário e instalar scripts para nosso módulo.

Finalmente, podemos ligar no nosso método de pagamento personalizado usando a tag <custompaymentmethod>, sob a tag <payment>. Sob essa tag, montamos a configuração padrão para o método de pagamento como "active", "order_status", "payment_action", etc. No final do arquivo, nós declaramos uma rota de frontend para nosso módulo, que será implementado em outras partes desta série.

Vamos passar para o próximo arquivo importante, o "System.xml" . Crie um arquivo "app/code/local/Envato/Custompaymentmethod/etc/system.xml" e cole o seguinte conteúdo neste arquivo.

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

Neste arquivo, nós simplesmente declarar campos configuráveis para nosso método de pagamento personalizado. Vá em frente e ative o módulo no backend. Vá para Sistema > Configuração > Vendas > Métodos de Pagamento, que lista todos os métodos de pagamento. Você deve ver "CustomPaymentMethod módulo" listado como um dos métodos de pagamento!

Back-End Payment Method ConfigurationBack-End Payment Method ConfigurationBack-End Payment Method Configuration

Conclusão

Hoje, nós só olhamos a configuração inicial configuração de backend para o nosso método de pagamento personalizado. Nos próximos artigos desta série, vamos ver sua contraparte de frontend. Não se esqueça de compartilhar seus pensamentos usando o feed abaixo.

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.