用户选择某些地址时,支付方式里则可以依据此地址来对货到付款选项进行显示或隐藏。目前仅与顺丰合作,以顺丰提供的数据为准。
使用到的数据库分别如下:
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状态。

ecshop收货地址货到付款修改的更多相关文章

  1. 42 Flutter仿京东商城项目 修改默认收货地址 显示默认收货地址

    CheckOut.dart import 'package:flutter/material.dart'; import '../services/ScreenAdapter.dart'; impor ...

  2. 39 Flutter仿京东商城项目 收货地址列表、增加 修改收货地址布局、弹出省市区选择器

    加群452892873 下载对应39课文件,运行方法,建好项目,直接替换lib目录 pubspec.yaml city_pickers: ^ AddressAdd.dart import 'packa ...

  3. ecshop 订单-》设置默认收货地址,或者删除

    设置位置:ecs_users标的   country字段,默认是0,默认地址是 users_address 的address_id 设置默认收货地址 /** * 设置默认地址 * * @access ...

  4. 微信共享收货地址 edit_address:fail 吐白沫级解决方案

    又被微信坑了一整天,看完官方文档怎么测试都不通过,我一直怀疑是新版本微信支付我没有设置“共享收货地址”开关造成的. 后来经过验证,新版本不需要做这件事了. 那么,我没错,是微信的文档没及时更新... ...

  5. Django商城项目笔记No.16用户部分-用户中心收货地址

    首先完成省市区三级联动 新建areas应用 python ../../manage.py startapp areas 模型类代码 class Area(models.Model): "&q ...

  6. 微信支付开发(7) 收货地址共享接口V2

    关键字:微信公众平台 JSSDK 发送给朋友 收货地址共享接口 openAddress 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-open ...

  7. 【地图API】收货地址详解2

    上次讲解的方法是: 在地图中心点添加一个标注,每次拖动地图就获取地图中心点,再把标注的位置设置为地图中心点.可参考教程:http://www.cnblogs.com/milkmap/p/6126424 ...

  8. GWYAlertSelectView 选择收货地址和选择联系人

    iOS 开发在app内(特别是在类似购物和旅游类)经常会用到选择,添加联系人和收货地址,而且经常都是在跳转界面,很是麻烦,今天我就自己封装了一个类似弹出视图的代码,方便了很多!demo地址: http ...

  9. 方便代理下单的EcStore收货地址一键分析插件,同时支持淘宝/京东/一号店

    使用EcStore开展分销的网站,代理需要经常代客下单,每个客户收货地址都不同,要选择和填写多个内容才能完成地址输入:省.市.区.详细地址.收货人姓名.手机电话等,非常麻烦,也容易输入错误.安装EcS ...

随机推荐

  1. java 操作FTP

    package comm.ftp; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInput ...

  2. MySQL存储过程_创建-调用

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的"脚本" 创建存储过程 调用存储过程 存储过程体 语句块标签 存储过程的参数 in:向过程里传参 out:过程向 ...

  3. web前端技术框架选型参考

    一.出发点 随着Web技术的不断发展,前端架构框架.UI框架.构建工具.CSS预处理等层出不穷,各有千秋.太多的框架在形成初期,都曾在web领域 掀起过一场技术浪潮,可有些却仅仅是昙花一现,随着他们用 ...

  4. NancyFx 2.0的开源框架的使用-Stateless(二)

    继续上一篇Stateless的博文,在上一篇的博文的基础上稍微加点东西 接下来右键解决方案添加新项目,一样建一个空的Web项目 然后在StatelessDemoWeb项目里面添加Views文件夹,Sc ...

  5. wdc网站部署问题

    最近公司新买了一个服务器,将项目迁移到新服务器上,按照wdcp安装方法,部署了lnamp环境,具体方法如下: 安装方法1 只安装wdcp面板看看wget http://down.wdlinux.cn/ ...

  6. iframe 父子页面方法调用

    在写代码的时候经常会用到将一个网页嵌入到另一个网页中,w3c也规定了一个标签<iframe>,这个标签本身就支持跨域,而且所有的浏览器都支持 iframe具有以下属性: 1.framebo ...

  7. ke

    #include <stdio.h> #include <stdlib.h> // For rand() and srand() #include <time.h> ...

  8. swift闭包中解决循环引用的问题

    swift中可以通过三种方法解决循环引用的问题 利用类似oc方法解决循环引用weak var weakSelf = self weak var weakSelf = self loadData = { ...

  9. NodeJS 入门第二天(EJS模板)

    一.复习 复习:Node.js开发服务器,数据.路由.本地关心的效果,交互: Node.js实际上是极客开发出的一个小玩具,不是银弹.有着别人不具备的怪异特点: 单线程.Non-blocking I/ ...

  10. 彻底清除Linux centos minerd木马

    前几天,公司两台linux服务器,一台访问速度很慢,cpu跑满,一台免密码登录失效,公钥文件被改写成redis的key.用htop命令查询发现了minerd木马进程,初步猜测是redis没有配访问权限 ...