piaoling 2011-07-18 11:59:14
大家都知道,Magento 自带 paypal 支付模块,但对于中国大陆的网购用户来说,经常用的是网银,支付宝,财付通,等这些第三方支付。如果你的 Magento 跟踪官方升级到最新版本,也许后续版本中会有添加支付方式的后台操作模块,但是现在,我们必须以编程方式创建新的支付方式模块。
下面有一个小例子,Rikku 将解释如何创建一个简单的 Magento 支付模块。
当然,Rikku 在过去的涂鸦中,介绍过如何建立 Magento 模块,如果您不甚了解,那么请看 Rikku 的另外两篇涂鸦。
创建一个简单的自定义模块
如何重写一个Magento核心模块类
如果您知道如何建立,那么请跳过上一步。
首先,你必须在 etc 目录中创建 config.xml 文件,内容如下:
01
|
<?xmlversion="1.0"encoding="UTF-8"?>
|
05
|
<version>1.0.0</version>
|
12
|
<class>Rikku_Mycheckout_Model</class>
|
17
|
<class>Rikku_Mycheckout_Helper</class>
|
22
|
<class>Rikku_Mycheckout_Block</class>
|
30
|
<model>mycheckout/standard</model>// very important thing, here you select the model for your payment method
|
32
|
<order_status>pending</order_status>
|
33
|
<payment_action>sale</payment_action>
|
35
|
<merchant_id>Insert merchant id</merchant_id>
|
36
|
<allowspecific>0</allowspecific>
|
37
|
<sort_order>1</sort_order>
|
47
|
<module>Rikku_Mycheckout</module>
|
48
|
<frontname>customcard</frontname>
|
然后,你必须创建 system.xml 文件在 etc 目录内:
06
|
<mycheckoutmodule="some payment"translate="label comment">
|
07
|
<label>Custom CARD MyCheckOut</label>
|
08
|
<frontend_type>text</frontend_type>
|
09
|
<sort_order>0</sort_order>
|
10
|
<show_in_default>1</show_in_default>
|
11
|
<show_in_website>1</show_in_website>
|
12
|
<show_in_store>1</show_in_store>
|
14
|
<activetranslate="label">
|
15
|
<label>Enabled</label>
|
16
|
<frontend_type>select</frontend_type>
|
17
|
<source_model>adminhtml/system_config_source_yesno</source_model>
|
18
|
<sort_order>10</sort_order>
|
19
|
<show_in_default>1</show_in_default>
|
20
|
<show_in_website>1</show_in_website>
|
21
|
<show_in_store>0</show_in_store>
|
24
|
<order_statustranslate="label">
|
25
|
<label>New Order Status</label>
|
26
|
<frontend_type>select</frontend_type>
|
27
|
<source_model>adminhtml/system_config_source_order_status</source_model>
|
28
|
<sort_order>50</sort_order>
|
29
|
<show_in_default>1</show_in_default>
|
30
|
<show_in_website>1</show_in_website>
|
31
|
<show_in_store>0</show_in_store>
|
34
|
<label>Gateway URL</label>
|
35
|
<frontend_type>text</frontend_type>
|
36
|
<sort_order>58</sort_order>
|
37
|
<show_in_default>1</show_in_default>
|
38
|
<show_in_website>1</show_in_website>
|
39
|
<show_in_store>0</show_in_store>
|
42
|
<label>Merchant ID</label>
|
43
|
<frontend_type>text</frontend_type>
|
44
|
<sort_order>59</sort_order>
|
45
|
<show_in_default>1</show_in_default>
|
46
|
<show_in_website>1</show_in_website>
|
47
|
<show_in_store>0</show_in_store>
|
49
|
<allowspecifictranslate="label">
|
50
|
<label>Payment Applicable From</label>
|
51
|
<frontend_type>select</frontend_type>
|
52
|
<sort_order>60</sort_order>
|
53
|
<source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
|
54
|
<show_in_default>1</show_in_default>
|
55
|
<show_in_website>1</show_in_website>
|
56
|
<show_in_store>0</show_in_store>
|
58
|
<specificcountrytranslate="label">
|
59
|
<label>Countries Payment Applicable From</label>
|
60
|
<frontend_type>multiselect</frontend_type>
|
61
|
<sort_order>70</sort_order>
|
62
|
<source_model>adminhtml/system_config_source_country</source_model>
|
63
|
<show_in_default>1</show_in_default>
|
64
|
<show_in_website>1</show_in_website>
|
65
|
<show_in_store>0</show_in_store>
|
66
|
<depends><allowspecific>1</allowspecific></depends>
|
68
|
<sort_ordertranslate="label">
|
69
|
<label>Sort Order</label>
|
70
|
<frontend_type>text</frontend_type>
|
71
|
<sort_order>100</sort_order>
|
72
|
<show_in_default>1</show_in_default>
|
73
|
<show_in_website>1</show_in_website>
|
74
|
<show_in_store>0</show_in_store>
|
在这个文件中我们创建了增加了此支付方式的选择,你可以在后台设置中看到这种支付方式,此外,如果你还需要其他的额外选项,你可以添加它们。
最后,就是创建目录与文件名 standard.php 同名的模块,这个模块早在 config.xml 中明确定义过了,如果你仔细阅读代码的话,你应该明白你的结构应该是怎样的,下面是例子:
03
|
classRikku_Mycheckout_Model_StandardextendsMage_Payment_Model_Method_Abstract
|
06
|
protected$_code='mycheckout';
|
08
|
protected$_isInitializeNeeded = true;
|
09
|
protected$_canUseInternal = false;
|
10
|
protected$_canUseForMultishipping = false;
|
13
|
* Return Order place redirect url
|
17
|
publicfunctiongetOrderPlaceRedirectUrl()
|
19
|
//when you click on place order you will be redirected on this url, if you don't want this action remove this method
|
侯会亮
http://rikkusorikku.com/magento-create-payment-model.html