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

    一般而言,JQuery可以利用attr来获取元素的属性值, 1.$("元素").attr("属性");                //获取指定属性的值 2. ...

  2. 【算法系列学习】Dijkstra算法变形 [kuangbin带你飞]专题四 最短路练习

    https://vjudge.net/contest/66569#problem/B 类试题:noip2013 货物运输 POJ 1797 Heavy Transportation 方法一:Dijks ...

  3. 深入浅出Node.js(一):什么是Node.js(转贴)

    以下内容转自:http://www.infoq.com/cn/articles/what-is-nodejs/ 作者:崔康 [编者按]:Node.js从2009年诞生至今,已经发展了两年有余,其成长的 ...

  4. Sublime 3 如何使用列编辑模式

    前言 作为一名运维人员,文本IDE的列编辑模式对工作效率的提升很大.以前总用UE,觉得UE的列编辑模式设置很人性化(alt+c).后来接触了sublime,个人觉得它的列编辑模式使用对比UE略有差距. ...

  5. OA办公系统,一个沉淀企业文化的容器

    资源是会枯竭的,唯有文化才会生生不息.一切工业产品都是人类智慧创造的.随着公司规模的扩大,企业中两大根本"人和规则"面临诸多挑战,OA办公系统是一个全员使用的办公软件产品,员工可通 ...

  6. 用ArrayList(解决约瑟夫问题)

    约瑟夫问题(Josephus problem)又称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,约瑟夫问题类似问题又称为约瑟夫环."丢手绢问题". 据 ...

  7. MFC基础程序设计VS2015 最新02

    视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 对于每个函数的帮助资料都应该详细阅读:a)简要说明:能够快速了解函数的功能:b)参数:每一个参数的功能都应该了解它的含 ...

  8. python通过http请求发送soap报文进行webservice接口调用

    最近学习Python调用webservice 接口,开始的时候主要采用suds 的方式生产client调用,后来发现公司的短信接口采用的是soap报文来调用的,然后开始了谷歌,最后采用httplib ...

  9. java面向对象--类加载器及Class对象

    类加载器 jvm 和 类的关系 当调用 java命令运行一个java程序时,会启动一个java虚拟机进程.同一个jvm的所有线程.所有变量都处于同一个进程里,都使用该jvm进程的内存区. jvm进程终 ...

  10. 面试(3)-java-se-java中的匿名内部类总结

    java中的匿名内部类总结 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1 ...