改进ECSHOP客户友好度之【订单付款】,把付款按钮放到首页和订单页面。

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



ECSHOP很好很强大,但是还是有一些不足之处。客户下单,谈好价格后,需要付款,如果您谈好的价格与网站上的价格不一样,您就需要到后台去改价格,然后通知客户找到订单去点击付款。但很多用户都是第一次使用,找到订单的付款按钮也要很久,对于客户来说很烦躁,对于在那边急等成交的您来说,是个煎熬。
我把“订单付款”放到首页,方便客户点击,并且提示客户有几个订单未付款。
演示地址:http://www.bv66.com
您注册下个单就知道效果了。
代码如下:

首先打开文件: includes/lib_insert.php
在文件最下面加一个函数:

/**
* 调用订单数量信息
*
* @accesspublic
* @returnstring
*/
function insert_ord_info()
{

if ($_SESSION['user_id'] > 0)
{
//如果已登陆,找用户未付款付单数量。
$sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('order_info'). " WHERE user_id = '" . $_SESSION['user_id'] . "' and pay_status = 0";
$record_count = $GLOBALS['db']->getOne($sql);

}else
{
$record_count = 0;

}
if ($record_count != 0)
{
// 这里是返回信息,图片文字,随便您自已改了。
$str = '<a href="user.php?act=order_list">您有 ' . $record_count . ' 笔订单未付款。<font color="#FF0"><b>点击付款</b></font></a>';
}else
{
$str = '您有 ' . $record_count . ' 笔订单未付款。';
}
return $str;
}

然后进入管理后台,“库项目管理”中找到模板文件 page_header.lbi 中,在合适的地方,加入代码:

{insert name='ord_info'}

用户的订单信息就会在相应地方显示。点击进去就进入了订单页面。但是客户还是要点击订单进去才能付款,能否像淘宝一下,在订单页面不必进订单详情页面就可以直接点击付款呢?

我后来又作了一些改动,代码如下:

打开根目录下的user.php。找到代码:

/* 查看订单列表 */
elseif ($action == 'order_list')



include_once(ROOT_PATH . 'includes/lib_transaction.php');

后面增加:

include_once(ROOT_PATH . 'includes/lib_payment.php');
include_once(ROOT_PATH . 'includes/lib_order.php');
include_once(ROOT_PATH . 'includes/lib_clips.php');

打开includes/ lib_transaction.php 文件。找到代码:

function get_user_orders($user_id, $num = 10, $start = 0)

将函数里面的$sql定义语句改为:

$sql = "SELECT order_id, order_sn, order_status, shipping_status, pay_status, add_time, pay_id, order_amount, " .
"(goods_amount + shipping_fee + insure_fee + pay_fee + pack_fee + card_fee + tax - discount) AS total_fee ".
" FROM " .$GLOBALS['ecs']->table('order_info') .
" WHERE user_id = '$user_id' ORDER BY add_time DESC";


在代码:

while ($row = $GLOBALS['db']->fetchRow($res))
{

后面增加:

/* 如果是未付款状态,生成支付按钮 */
if ($row['pay_status'] == PS_UNPAYED &&
($row['order_status'] == OS_UNCONFIRMED ||
$row['order_status'] == OS_CONFIRMED))
{
/*
* 在线支付按钮
*/
//支付方式信息
$payment_info = array();
$sql = 'SELECT * FROM ' . $GLOBALS['ecs']->table('payment') . " WHERE pay_id = '" . $row['pay_id'] . "' AND enabled = 1";
$payment_info = $GLOBALS['db']->getRow($sql);

//无效支付方式
if ($payment_info === false)
{
$row['pay_online'] = '';
}
else
{
//取得支付信息,生成支付代码
$payment = unserialize_config($payment_info['pay_config']);

//获取需要支付的log_id
$row['log_id'] = get_paylog_id($row['order_id'], $pay_type = PAY_ORDER);
$row['user_name'] = $_SESSION['user_name'];
$row['pay_desc']= $payment_info['pay_desc'];

/*调用相应的支付方式文件 */
include_once(ROOT_PATH . 'includes/modules/payment/' . $payment_info['pay_code'] . '.php');

/* 取得在线支付方式的支付按钮 */
$pay_obj = new $payment_info['pay_code'];
$row['pay_online'] = $pay_obj->get_code($row, $payment);
}
}
else
{
$row['pay_online'] = '';
}

以前忘记了,还要加一段代码:大概在381行加入:(有些网友找我说不显示按钮,在此说声对不起,我马虎了。)


'pay_online' => $row['pay_online']


定认返回数组:


$arr[] = array('order_id' => $row['order_id'],
'order_sn' => $row['order_sn'],
'order_time'=> local_date($GLOBALS['_CFG']['time_format'], $row['add_time']),
'order_status'=> $row['order_status'],
'total_fee'=> price_format($row['total_fee'], false),
'handler'=> $row['handler'],
'pay_online' => $row['pay_online']);


最后,还得在您的订单页面显示出来:
我是找到代码:{$item.handler}在它前面加入。

{$item.pay_online}
OK,最后显示效果如下:




有不足之处,希望大家指正:
QQ:355521898
网址: http://www.ouwhy.com/posts/3

回答:
在会员中心操作。也不会太复杂把。

这个还是很有用的、支持一个了!!

用户体验好点!支持过

支持下!!

合并订单出现:
  1. Fatal error: Call to undefined function unserialize_config() in D:\PHP\vhosts\baobao\includes\lib_transaction.php on line 332
复制代码