ECSHOP自动确认收货解决方案 【附代码】

  ecshop系统,本身不带自动确认收货的,网上也找了一下,很多很复杂,且需要在服务器端设置定时任务,如果是虚拟主机,基本上就歇菜了。

 

  某宝有一些卖自动收货的插件,不太了解其机制,不过也比较贵,要1-200一个。没办法,就自己开发吧。以下为解决方案。

 

解决思路:

  跟淘宝的类似,默认设置7天后还没有自动确认收货,那么就会系统强制确认收货。只不过这个强制确认收货,没有在系统里设置常驻内存的程序,也没有设置系统自动任务,为变通的方案。设定为用户在登录成功后,进入用户中心页面,就会扫描自己名下,有没有超过7天还未确认收货的订单,如果有,则启动确认收货程序。没有,则跳过。

 

方案说明:

  1、这个强制确认收货,其实不是完整版的强制确认收货,不一定是到了15天系统就自动确认收货了,而是在下一次用户登录的时候检索是否有超时的订单,所以,这个自动确认收货的时间,其实不一定是准确的。只不过不需要用户再主动点一下;

 

  2、本来有考虑到在网站首页或者其他页面嵌入一个触发点,然后启动自动确认收货程序,但是考虑到,如果系统用户比较多(或者订单比较多),这个遍历的过程可能就会比较长了,系统开销大,也可能页面超时,所以就弄的这个变通方案。

 

  3、ECSHOP有一个计划任务的功能,但是之前没有用过,再次优化的方案,可以写一个程序,然后开启计划任务,这样也可用满足要求。

 

  所以,这个是不圆满版的解决方案,只是修改起来比较简单,菜鸟都会,另外因为是用户登录触发的,所以对系统资源占用不高,所以,有需要的童鞋可以拿去。

 

搜索“if ($action == 'default')”,然后在“$info = get_user_default($user_id);”后面,插入以下代码即可

1
2
3
4
5
6
7
8
9
10
11
$orders  = get_user_orders( $user_id ,1000,0);
foreach ( $orders  as  $ord ){
   if ( $ord [ 'order_status_flg' ]==5 &&  $ord [ 'order_status' ] ==  '已确认,已付款,已发货' ){
     //此条件下的为未确认收货的订单,开始启动自动收货程序
     $ord [ 'order_time' ] =  strtotime ( $ord [ 'order_time' ]);
     $thistime  = time();
     if ( $thistime >( $ord [ 'order_time' ]+86400*7)){ //如果订单日期往后7天大于当前时间  则表示有超时未确认的订单
     affirm_received( $ord [ 'order_id' ],  $user_id ); //强制确认收货
     }
   }
}

程序affirm_received即为确认收货程序。

文章来源:http://www.ledaokj.com/a-wlyx/176/4437.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值