https://code.tutsplus.com/tutorials/create-a-custom-payment-method-module-in-magento-part-one--cms-23464
首先,要对Magento的基础模型创建程序很熟悉;
国外的一个网址:https://code.tutsplus.com/tutorials/magento-custom-module-development--cms-20643;
这个是国内的比较好的博客文章:http://blog.csdn.net/suese/article/category/1916481
自定义模块的代码池:local
自定义模块的命名空间:Envato
自定义模块的名字: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:这个是和数据库相关的文件,用来给自定义支付方式创建自定义的字段;
创建app/etc/modules/Envato_All.xml
<?xml version="1.0"?>
<config>
<modules>
<Envato_Custompaymentmethod>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Payment />
</depends>
</Envato_Custompaymentmethod>
</modules>
</config>
说明:这个配置文件指定了代码池 ,依赖的核心模块
创建app/code/local/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();
说明:这里在支付模块相关的表单中创建了两个字段;
创建 app/code/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>
说明:
1、在用户确认订单的时候,希望用户可以看见我们的支付方式,当用户选择我们的支付方式的时候,给用户提供两输入信息的提示框;
2、
<fieldsets> 、<sales_convert_quote_payment>这两个标签告诉Magento将这些字段信息和客户订单信息一起保存;
3、helpers、blocks、models标签是其他部分的补充;
4、resources用来定义资源,使用的是<custompaymentmethod_setup>标签;Magento会检测这个文件,然后为我们的模块安装必要的SQL脚本;
5、
<payment> 、<custompaymentmethod>将我们的支付模块插入到Magento的支付模块中;这标签里面可以继续创建支付模块的字段,如支付的状态、订单的状态等;
6、
<frontend>、<routers>在前端给支付方式指定了路由;
创建 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>
说明:为我们的支付方式配置字段的;
创建/app/code/local/Envato/Custompaymentmethod/Helper/Data.php
class Envato_Custompaymentmethod_Helper_Data extends Mage_Core_Helper_Abstract{
//
}
验证: System > Configuration > Sales > Payment Methods查看我们自己的支付方式会显示在列表中;
原文地址:https://code.tutsplus.com/tutorials/create-a-custom-payment-method-module-in-magento-part-one--cms-23464