您的位置:首页 > 运维架构

二次开发ecshop支付插件

2013-07-08 15:16 239 查看
二次开发ecshop支付插件-讲座12上一讲座我们讲述了ecshop语言包lang的加载原理-讲座11 ,由于最近ecshop二次开发的项目比较多,而且周期也比较长,所以没来得及写教程。今天刚好做一个支付插件.让我又一次深刻的理解了ecshop支付插件的工作原理.

首先我们知道ecshop支付插件,是在后台可以安装和卸载的。ecshop 数据库中有一个表ecs_payment .这个表就是用来存储ecshop支付方式的。

ecshop的插件位于includes\modules\payment目录.文件的名称也就是支付方式的标志代码。

每个支付插件类有两个方法。

1: function get_code($order, $payment)

2:function respond()

说说上面两个方法,一个是获得支付页面提交的参数,第二个就是支付完后返回的动作处理函数.这个文件在跟目录的respond.php里面非常有用.

我们看下支付后返回处理动作.

$pay_code = !empty($_REQUEST['code']) ? trim($_REQUEST['code']) : '';

//获取首信支付方式
if (empty($pay_code) && !empty($_REQUEST['v_pmode']) && !empty($_REQUEST['v_pstring']))
{
$pay_code = 'cappay';
}

//获取快钱神州行支付方式
if (empty($pay_code) && ($_REQUEST['ext1'] == 'shenzhou') && ($_REQUEST['ext2'] == 'ecshop'))
{
$pay_code = 'shenzhou';
}

这里返回要获得支付方式的参数,目的就是获取所用的支付方式名称,然后通过调用支付插件所在文件里面的返回处理函数.

$plugin_file = 'includes/modules/payment/' . $pay_code . '.php';

/* 检查插件文件是否存在,如果存在则验证支付是否成功,否则则返回失败信息 */
if (file_exists($plugin_file))
{
/* 根据支付方式代码创建支付类的对象并调用其响应操作方法 */
include_once($plugin_file);

$payment = new $pay_code();
$msg = ($payment->respond()) ? $_LANG['pay_success'] : $_LANG['pay_fail'];
}
else
{
$msg = $_LANG['pay_not_exist'];
}

大家看下,都是为了respond()方法的调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: