二次开发ecshop支付插件-讲座

建站知识

Site of knowledge

二次开发ecshop支付插件-讲座

2014/3/11

二次开发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()方法的调用。