Magento创建新支付模块

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"?>
02 <config>
03   <modules>
04     <rikku_mycheckout>
05       <version>1.0.0</version>
06     </rikku_mycheckout>
07   </modules>
08  
09   <global>
10     <models>
11       <mycheckout>
12         <class>Rikku_Mycheckout_Model</class>
13       </mycheckout>
14     </models>
15     <helpers>
16       <mycheckout>
17         <class>Rikku_Mycheckout_Helper</class>
18       </mycheckout>
19     </helpers>
20     <blocks>
21       <mycheckout>
22         <class>Rikku_Mycheckout_Block</class>
23       </mycheckout>
24     </blocks>
25   </global>
26  
27   <default>
28 <payment>
29       <mycheckout>
30         <model>mycheckout/standard</model>// very important thing, here you select the model for your payment method
31         <active>1</active>
32         <order_status>pending</order_status>
33 <payment_action>sale</payment_action>
34         <submit_url>https://someurl.com</submit_url>
35         <merchant_id>Insert merchant id</merchant_id>
36         <allowspecific>0</allowspecific>
37         <sort_order>1</sort_order>
38       </mycheckout>
39     </payment>
40   </default>
41  
42   <frontend>
43     <routers>
44       <mycheckout>
45         <use>standard</use>
46         <args>
47           <module>Rikku_Mycheckout</module>
48           <frontname>customcard</frontname>
49         </args>
50       </mycheckout>
51     </routers>
52   </frontend>
53 </config>

然后,你必须创建 system.xml 文件在 etc 目录内:

01 <?xmlversion="1.0"?>
02 <config>
03 <sections>
04 <payment>
05       <groups>
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>
13           <fields>
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>
22             </active>
23  
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>
32             </order_status>
33             <submit_url>
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>
40             </submit_url>
41             <merchant_id>
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>
48             </merchant_id>
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>
57             </allowspecific>
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>
67             </specificcountry>
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>
75             </sort_order>
76           </fields>
77         </mycheckout>
78       </groups>
79     </payment>
80   </sections>
81 </config>

在这个文件中我们创建了增加了此支付方式的选择,你可以在后台设置中看到这种支付方式,此外,如果你还需要其他的额外选项,你可以添加它们。

最后,就是创建目录与文件名 standard.php 同名的模块,这个模块早在 config.xml 中明确定义过了,如果你仔细阅读代码的话,你应该明白你的结构应该是怎样的,下面是例子:

01 <?php
02  
03 classRikku_Mycheckout_Model_StandardextendsMage_Payment_Model_Method_Abstract
04 {
05  
06     protected$_code='mycheckout';
07  
08     protected$_isInitializeNeeded     = true;
09     protected$_canUseInternal         = false;
10     protected$_canUseForMultishipping = false;
11  
12     /**
13     * Return Order place redirect url
14     *
15     * @return string
16     */
17     publicfunctiongetOrderPlaceRedirectUrl()
18     {
19     //when you click on place order you will be redirected on this url, if you don't want this action remove this method
20    &nbs
类别 :  magento(258)  |  浏览(4478)  |  评论(1)
发表评论(评论将通过邮件发给作者):

Email:
userhead
侯会亮
2011-07-18 11:59:29
http://rikkusorikku.com/magento-create-payment-model.html