ecshop创建自定义支付插件并使用
ecshop创建自定义支付插件并使用
1.在 includes/modules/payment文件夹下创建 支付插件.php 文件(例:payplugins.php)
--1.1.payplugins.php 文件内容包含如下内容
<?php
if (!defined('IN_ECS'))
{
die('Hacking attempt');
}
$payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/payplugins.php';
//payplugins.php这个文件名就是languages对应语言包的payment下的文件名
if (file_exists($payment_lang))
{
global $_LANG;
include_once($payment_lang);
}
/* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE)
{
$i = isset($modules) ? count($modules) : 0;
/* 代码 */
$modules[$i]['code'] = basename(__FILE__, '.php');
/* 描述对应的语言项 */
$modules[$i]['desc'] = 'payplugins_desc';//这是对支付方式的描述语言包里对应为$_LANG['payplugins_desc']
//下面的选项自定义填写这里不做修改
/* 是否支持货到付款 */
$modules[$i]['is_cod'] = '0';
/* 是否支持在线支付 */
$modules[$i]['is_online'] = '0';
/* 作者 */
$modules[$i]['author'] = 'ECSHOP TEAM';
/* 网址 */
$modules[$i]['website'] = 'http://www.ecshop.com';
/* 版本号 */
$modules[$i]['version'] = '1.0.0';
/* 配置信息 */
$modules[$i]['config'] = array();
/*
$modules[$i]['config'] = array(
array('name' => 'payplugins_test', 'type' => 'text', 'value' => ''),
array('name' => 'payplugins_pay_method', 'type' => 'select', 'value' => '')
);
//如果按照注释中方法写配置信息
语言文件中应该加入
$_LANG['payplugins_test'] = '';
$_LANG['payplugins_pay_method'] = '';
$_LANG['payplugins_pay_method'][0] = '';
$_LANG['payplugins_pay_method'][1] = '';
$_LANG['payplugins_pay_method'][2] = '';
*/
return;
}
/**
* 类
*/
class payplugins//类名与文件名保持一直
{
/**
* 构造函数
*
* @access public
* @param
*
* @return void
*/
//php5.3版本以上__construct形式构造函数需要在类名同名方法的前面定义
function __construct()
{
$this->payplugins();
}
function payplugins()
{
}
/**
* 提交函数(用于生成支付代码)
*/
function get_code()
{
/*your code*/
return;
}
/**
* 处理函数(响应支付后的操作,可在此处改变订单的状态、验证数据的完整性,也可在有回调地址的时候封装回调php文件改变订单状态和验证数据完整性)
*/
function respond()
{
/*your code*/
return;
}
}
?>
--1.2.respond()方法会被respond.php文件调用,用于判断支付是否完成(respond.php只用于渲染信息)
2.languages/zh_cn/payment/目录下新建一个payplugins.php文件(注:文件名必须和1创建的文件名相同),必要情况下在其他语言文件夹下也创建相同文件。
<?php
global $_LANG;
$_LANG['payplugins'] = '支付插件的名称';//$_LANG['这里的字段一定要与文件名保持一直,否则在后台不出现支付方式的名称']
$_LANG['payplugins_desc'] = '这里是插件的描述信息';
//之后的项目根据不同的支付方式自定义即可一般以$_LANG['payplugins_xxx'] = '';的形式展现
?>
3.创建好上面的文件后在ecshop后台支付方式里面就能出现对应的插件了
4.移动端mobile支付创建
(不同版本的ecshop,mobile文件夹内容可能不同,在根目录下的mobile文件夹----我的目录类似laravel项目目录)
--4.1.在根目录/mobile/app/Plugins/payment文件夹下创建和includes/modules/payment一样文件名的文件payplugins.php,文件内容基本一样,但需要去除插件基本信息和会使使用报错的if (!defined('IN_ECS')){die('Hacking attempt');}
外网引用:
Ecshop把每一种支付方式都封装成一个类,比如支付宝支付方式,对应的文件是
includes\modules\payment\alipay.php,这个文件里面封装了类是alipay,这个类有两个方法,一个是生成支付代码的get_code(),根据不同支付接口所需的参数进行配置,然后生成一个字符串,这个字符串就是支付代码;另外一个是响应操作respond()。其中,接收响应的页面都是通过return_url(basename(__FILE__, '.php'))函数指定的,生成的链接是respond.php?code=,其中code后面的参数就是根据不同的支付方式而不同。Respond.php则根据不同的第三方支付返回的信息进行处理。