首页 » ZenCart » ZenCart » ZenCart教程 » 阅读文章
[6月22号更新]ZenCart支付模块增加某些国家不显示项
众所周知像越南,印度利西亚等国家是出来名的喜欢拒付,为了避免我们的损失我先直接让是这些国家邮件地址的不显示信用卡支付通道,只显示西联
以日付支付模块为例为大家讲解
首先要知道支付模块的核心文件放在includes\modules\payment下,我们打开日付支付模块的核心文件rppay.php
第一步
查找remove方法,来确定rppay支付模块使用的常量前缀
function remove() { //卸载RPPAY支付模块 global $db; $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE_PAYMENT_RPPAY_%'"); //$db->Execute("delete from " . TABLE_ORDERS_STATUS . " where orders_status_name in ('rpapproved', 'rpdeclined', 'rprefund', 'rpunpaid', 'rppending', 'rperror', 'rptestapprove', 'rpcanceled', 'rpchargeback', 'rpfraud')"); }
我们定义禁止国家的常量为DISABLE_COUNTRIES, 从上面可以看到日付常量前缀为MODULE_PAYMENT_RPPAY_,合起来禁止国家的常量为MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES
第二步
确定了禁止国家的常量后,将这个值加入key方法return数组中
function keys() { return array( 'MODULE_PAYMENT_RPPAY_STATUS', 'MODULE_PAYMENT_RPPAY_ZONE', 'MODULE_PAYMENT_RPPAY_ORDER_STATUS_ID', 'MODULE_PAYMENT_RPPAY_SORT_ORDER', 'MODULE_PAYMENT_RPPAY_SITEID', 'MODULE_PAYMENT_RPPAY_PRIVATE_KEY', 'MODULE_PAYMENT_RPPAY_ACTION_URL', 'MODULE_PAYMENT_RPPAY_ORDER_PREFIX', 'MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES' ); }
第三步
我们还要讲禁止国家的常量值加入安装方法中,在上面的key方法中随便找一个其他常量来定位,如MODULE_PAYMENT_RPPAY_STATUS, 在install方法查找这个值
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable RPPAY Module', 'MODULE_PAYMENT_RPPAY_STATUS', 'True', 'Do you want to accept RPPAY payments?', '6', '1', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
我们依葫芦画瓢,将MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES也增加上
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Disable Payment Countries', 'MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES', '', 'Please Enter Country code (like US,GB)', '6', '3', 'zen_cfg_textarea( ', now())");
将上面的代码插入install方法的合适位置
注意上面的configuration_group_id对应的6,我们自己写的也要为6,sort_order排序的话 看你自己的爱好
第四步
查找update_status方法,在这个方法后面增加,2013-6-22更新,原来的函数写复杂了而且有点小bug
//disable countries function disable_countries(){ global $order; if ( $this->enabled == true && MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES!='' ){ $disable_countries_array=explode(',',str_replace(' ','',MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES)); if(in_array($order->delivery['country']['iso_code_2'],$disable_countries_array)){ $this->enabled = false; } } }
注意:如果你是其他的支付模块,记得将禁止国家的常量MODULE_PAYMENT_RPPAY_DISABLE_COUNTRIES改为对应的
第五步
在update_status方法末尾添加
$this->disable_countries();
第六步
到后台卸载日付模块,然后重装后回多出一个选项Disable Payment Countries,这里填写你不想这个模块显示的国家二位码,多个用逗号隔开,如你要禁止美国和英国的邮寄地址使用日付插件,就填写US,GB
声明: 本文由Ezencart原创,转载请保留链接:[6月22号更新]ZenCart支付模块增加某些国家不显示项
评论 共0条 (RSS 2.0) 发表评论