ECShop是一款流行的B2C独立网店系统,本文将给出开发好的ECSHOP个人免签支付接口插件(支持支付宝/微信扫码支付),并提供开发思路,供有需求的用户参考或快速接入。
本接口插件基于ECSHOP 2.7.3开发,3.6版本测试通过,其余版本正常也是可以用的,可自行尝试。
会员充值展示:
商品购买页面效果:
微信支付页面效果:
支付宝支付页面效果:
将源码包里www文件夹内的文件上传到网站根目录
进入ECSHOP后台 - 系统设置 - 支付方式 - 找到如下图易支付,并安装
APPID和APPKEY在这里获取:http://user./account,其余项根据自己需要填写。
设置回调地址为:http://域名/respond.php?code=ezhifu(设置入口)
至此已安装完成,可以测试下功能是否正常了。
ECSHOP支付功能已经封装得很遍历了,本次新增该个人免签支付,仅增加了两个文件,并且没有更改任何原有文件
语言包文件路径为:languages/zh_cn/payment/ezhifu.php,本次仅开发了简体中文包,如需支持其他语言参考本代码新增一份放相应路径下即可。语言包较为简单,直接展示代码:
global $_LANG;
$_LANG['ezhifu'] = '易支付';
$_LANG['ezhifu_desc'] = 'EZHIFU 易支付(www.ygkfpay.com) 免签约收款接口<br/>在线即可开通,<font color="red"><b>无需签约,快速接入</b></font><br/><a href="/Other/user/index.html" target="_blank"><font color="red">立即在线申请</font></a>';
$_LANG['ezhifu_APPID'] = 'APPID';
$_LANG['ezhifu_APPKEY'] = 'APPKEY';
$_LANG['pay_button'] = '立即支付';
$_LANG['ezhifu_pay_method'] = '选择接口类型';
$_LANG['ezhifu_pay_method_desc'] = '控制支付接口类型';
$_LANG['ezhifu_pay_method_range'][0] = '微信+支付宝';
$_LANG['ezhifu_pay_method_range'][1] = '仅微信';
$_LANG['ezhifu_pay_method_range'][2] = '仅支付宝';
ECSHOP支付接口最重要得文件:includes/modules/payment/ezhifu.php,代码及注释如下:
/**
* EZHIFU 易支付(www.ygkfpay.com) 易支付免签约支付插件
* 无需签约,快速接入
*/
if (!defined('IN_ECS'))
{
die('Hacking attempt');
}
$payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/ezhifu.php';
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'] = 'ezhifu_desc';
/* 是否支持货到付款 */
$modules[$i]['is_cod'] = '0';
/* 是否支持在线支付 */
$modules[$i]['is_online'] = '1';
/* 作者 */
$modules[$i]['author'] = 'EZHIFU';
/* 网址 */
$modules[$i]['website'] = 'http://www.';
/* 版本号 */
$modules[$i]['version'] = '1.0.0';
/* 配置信息 */
$modules[$i]['config'] = array(
array('name' => 'ezhifu_APPID', 'type' => 'text', 'value' => ''),
array('name' => 'ezhifu_APPKEY', 'type' => 'text', 'value' => ''),
array('name' => 'ezhifu_pay_method', 'type' => 'select', 'value' => '')
);
return;
}
/**
* 类
*/
class ezhifu
{
function __construct()
{
$this->ezhifu();
}
/**
* 构造函数
*
* @access public
* @param
*
* @return void
*/
function ezhifu()
{
}
/**
* 生成支付代码
* @param array $order 订单信息
* @param array $payment 支付方式信息
*/
function get_code($order, $payment)
{
if (!defined('EC_CHARSET'))
{
$charset = 'utf-8';
}
else
{
$charset = EC_CHARSET;
}
//整理参数
$url = "?appid={$payment['ezhifu_APPID']}&money={$order['order_amount']}&subject={$order['order_sn']}&logid={$order['log_id']}&returnurl=".urlencode(return_url(basename(__FILE__, '.php')));
$real_method = $payment['ezhifu_pay_method'];
$html = "";
switch ($real_method){
case '0'://双通道
$html = '<a href="/Other/pay/index.html'.$url.'&type=1" target="_blank"><img src="/static/wechat.png" style="height:40px;margin-right:25px"></a><a href="/Other/pay/index.html'.$url.'&type=2" target="_blank"><img src="/static/alipay.png" height="40px"></a>';
break;
case '1'://仅微信
$html = '<a href="/Other/pay/index.html'.$url.'&type=1" target="_blank"><img src="/static/wechat.png" style="height:40px;"></a>';
break;
case '2'://仅支付宝
$html = '<a href="/Other/pay/index.html'.$url.'&type=2" target="_blank"><img src="/static/alipay.png" height="40px"></a>';
break;
}
return '<div style="text-align:center;padding:10px">'.$html.'</div>';
}
/**
* 响应操作
*/
function respond()
{
$payment = get_payment($_GET['code']);
unset($_GET['code']);
$sign = $_GET['sign'];
unset($_GET['sign']);
ksort($_GET);
if(md5(http_build_query($_GET).$payment['ezhifu_APPKEY'])!=$sign){
return false;
}
//校验成功
$order_sn = $_GET['logid'];
/* 检查支付的金额是否相符 */
if (!check_money($order_sn, $_GET['money']))
{
return false;
}
//置订单为成功
order_paid($order_sn);
return true;
}
}
部分单独安装了mobile模块的用户可能进入mobile后台没有显示易支付的选项,可下载下面源码,解压上传后即可。