ecshop收货地址货到付款修改

用户选择某些地址时,支付方式里则可以依据此地址来对货到付款选项进行显示或隐藏。目前仅与顺丰合作,以顺丰提供的数据为准。
使用到的数据库分别如下:
ecs_region//地方数据,PRIMARY KEY (`region_id`),
ecs_shipping_area //配送区域(序列配置),PRIMARY KEY (`shipping_area_id`),
ecs_shipping//配送(代码,名称,描述,保价费,状态),PRIMARY KEY (`shipping_id`),
ecs_area_region//配送区域关联(配送区域ID,具体地址ID),PRIMARY KEY (`shipping_area_id`, `region_id`)
ecs_payment //支付工具(代码,名称,费用,描述,排序, 配置,状态,是否货到付款)

 

页面功能解释:

ecshop采用smarty框架从而使数据与页面分离,购物车以及表单提交确认流程flow.php对应的页面显示为flow.dwt。
lib_order.php是购物流程函数库,用于与数据库ecshop数据库打交道,如取得已安装的配送方式,处理序列化的支付、配送的配置参数等。
shopping_flow.js是购物流程javascript函数库,用于页面上改变配送、支付方式等。
transport.js则是在页面与后台php之间起着传输的桥梁,二者之间采用json方式进行交互,通用接口Ajax.call对应于Transport.run。

 

通过购物车进行结算进入订单确认checkout的过程中,页面包含配送方式以及支付方式。
配送方式available_shipping_list读取用户的省、市、区编码分别从关联表ecs_region,ecs_shipping_area以及ecs_shipping取得可用的配送方式列表(其中包含支付、配送的配置参数,按照数组序列化方式存储到数据表ecs_shipping_area当中的configure字段)。 
支付方式available_payment_list读取配送方式是否支持货到付款,货到付款手续费及是否支持在线支付几个值来取得可用的支付方式列表。需求要求以顺丰提供的是否收送数据来进行货到付款判断,针对此情况可新建表单
CREATE TABLE `ecs_shipping_region_cod` (
  `shipping_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'//配送方式id,与ecs_shipping中的shipping_id一致
  `region_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'//地方ID,与ecs_region中的region_id一致。
  `is_cod` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',     //是否收送到达字段,1为可收送,0为不可收送,需自行到指定地方提取
  PRIMARY KEY (`shipping_id`, `region_id`)
)ENGINE=MyISAM
ROW_FORMAT=FIXED CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
 

在取得配送方式字段support_cod的基础上,通过配送方式shipping_id以及地区ID参数读取ecs_shipping_region_cod,判断`ecs_shipping_region_cod` 中的is_cod为0以及配送方式id为顺丰时,修改support_cod为0.具体如下:

$payment_cod = get_payment_code($shipping_list[$key]['shipping_id'], $consignee['district']);
if($payment_cod['is_cod'] == 0 && $payment_cod['shipping_id'] == 8){
    $val['support_cod'] = 0;
    $shipping_list[$key]['support_cod'] = 0;
}
 

在页面选择配送方式时,需注意shopping_flow.js中的selectShipping函数,此函数直接影响到货到付款radio选项是enable或者disable状态。

posted @ 2013-07-15 15:36  wang_tale  阅读(1462)  评论(0编辑  收藏  举报