| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 | <?phpdefined('BASEPATH') OR exit('No direct script access allowed');/** * 本类是为了让商城网站可以查询快递轨迹开发出来的 后期可能会增加其他功能 对外的 */class Apiexpress extends Start_Controller {    public function __construct(){		parent::__construct();        $this->load->_model('Model_logic_order','logic_order');        $this->load->_model('Model_logic_tools','logic_tools');        $this->load->_model('Model_awlgx','awlgx');        $this->load->_model("Model_express","express");    }    private $key = "6amg!pnfrlbpnjgirv"; //加密所需要到的key    private $iv = "6ook4k!2w94m6jtm";//加密所需要到的iv    //定义方法的调用规则 获取URI第二段值    public function _remap($arg,$arg_array)    {               if($arg == 'search')        {            $this->search();        }else{            $this->_a();        }    }    public function _a(){        die();    }    /**     * 搜索订单状态和快递信息接口     * @param $arg_array[0] string 请求店铺      * @param $arg_array[1] string 请求单号     */    public function search(){        $data = file_get_contents('PHP://input');		$data = json_decode($data, true);        $shop = isset($data['shop'])?$data['shop']:"";        $order_no = isset($data['order_no'])?$data['order_no']:"";                $apply_time = isset($data['time'])?$data['time']:0;              $jiami_str = isset($data['key'])?$data['key']:"";                $now_time = time();        if(strlen( $apply_time."") != 10){             die($this->logic_tools->ret_json(-1,"参数异常"));        }        if(empty($shop)){            die($this->logic_tools->ret_json(-1,"请求店铺异常"));        }        $shop_key = $this->logic_tools->getshopname($shop);        if(empty($jiami_str)){            die($this->logic_tools->ret_json(-1,"秘钥信息不存在"));        }        $jiemi_str = $this->logic_tools->toolsjiemi($jiami_str,$this->key,$this->iv);        if(empty($shop_key)){            die($this->logic_tools->ret_json(-1,"该店铺的秘钥不存在"));        }        $jiemi_arr = explode("+",$jiemi_str);        $jiemi_key = isset($jiemi_arr[0])?$jiemi_arr[0]:"";        $jiemi_time = isset($jiemi_arr[1])?$jiemi_arr[1]:"";        if((int)$jiemi_time != (int)$apply_time){            die($this->logic_tools->ret_json(-1,"请求超时"));        }                if( $now_time - $apply_time > 100){            die($this->logic_tools->ret_json(-1,"请求已超时"));        }        if($jiemi_key != $shop_key){            die($this->logic_tools->ret_json(-1,"该店铺的秘钥不正确"));        }                if(empty($order_no)){            die($this->logic_tools->ret_json(-1,"请求单号异常"));        }        $table_name = $this->logic_tools->getOrderTable($shop);        if(empty($table_name)){            die($this->logic_tools->ret_json(-1,"店铺未开通此功能!!!"));        }        $info = $this->logic_order->getInfoByTableName($table_name,"orderinfo = ".$shop.$order_no. " and  shop = ".$shop,"id,express,excontent,expressstate,waybill,dtime,printtime,client,name,country,province,city,address,address2,street,phone,zipcode,dlzemailtime");        if(empty($info)){            die($this->logic_tools->ret_json(-1,"未查询到相关快递信息"));        }        $receive_time = "";//客户签到时间        $shipping_time = "";//快递接受发货时间        $express_trace = [];        $express_info = $this->express->read($info['express']);                if(!empty($info['excontent'])){            $tmp_arr =  explode("<br />",$info['excontent']);            array_pop($tmp_arr);            $re_arr = array_reverse($tmp_arr);            if(strpos($re_arr[0],"[") !== false){                $shipping_time_arr = explode("[",$re_arr[0] ) ;                $shipping_time = $shipping_time_arr[0];                if($info['expressstate'] == 6){                    $receive_tmp_arr =  explode("[",$tmp_arr[0] ) ;                    $receive_time = $receive_tmp_arr[0];                }            }else{                $shipping_time = date("Y-m-d H:i:s",$info['dlzemailtime']);                if($info['expressstate'] == 6){                                        $receive_time = -1;                }            }                        $express_trace = $re_arr;        }        if(empty($info['dtime'])){            $preparing = [                "desc"=>"",                "status"=>0,                "date"=>"",            ];        }else{            $preparing = [                "desc"=>"The Order Has Been Created And TheMerchant lspreparing Your Order.",                "status"=>1,                "date"=>date("Y-m-d H:i:s",$info['dtime']),            ];        }        if(empty($info['printtime'])){            $warehouse_processing = [                "desc"=>"",                "status"=>0,                "date"=>"",            ];        }else{            $warehouse_processing = [                "desc"=>"Packing And Final Check",                "status"=>1,                "date"=>date("Y-m-d H:i:s",$info['printtime']),            ];        }        if(empty($shipping_time)){            $shipping = [                "desc"=>"",                "status"=>0,                "date"=>"",            ];        }else{            $shipping = [                "desc"=>"Courier Company Picked Up The Package",                "status"=>1,                "date"=>$shipping_time,            ];        }               if(empty($receive_time)){            $received = [                "desc"=>"",                "status"=>0,                "date"=>"",            ];        }else{            if($receive_time < 0){                $received = [                    "desc"=>"Order signed for successfully",                    "status"=>1,                    "date"=>0,                ];            }else{                $received = [                    "desc"=>"Order signed for successfully",                    "status"=>1,                    "date"=>$receive_time,                ];            }                   }               $icon = 7;        $final_express_name = $express_name = strtolower($express_info['iscode']);        if(strpos($express_name,"usps") !== false){            $icon = 1;            $final_express_name = "usps";        }        if(strpos($express_name,"dhl") !== false){            $icon = 2;            $final_express_name = "dhl";        }        if(strpos($express_name,"ups") !== false){            $icon = 3;            $final_express_name = "ups";        }        if(strpos($express_name,"fedex") !== false){            $icon = 4;            $final_express_name = "fedex";        }        if(strpos($express_name,"aramex") !== false){            $icon = 5;            $final_express_name = "aramex";        }        if(strpos($express_name,"ges") !== false){            $icon = 6;            $final_express_name = "ges";        }            $ret_arr = [            "order_no"=>$order_no,            'icon'=>$icon,            "express_name"=>strtoupper($final_express_name) ,            "waybill"=>$info['waybill'],            "preparing"=>$preparing,//店家处理            "warehouse_processing"=>$warehouse_processing,//工厂处理            "shipping"=> $shipping,//快递发货            "received"=>$received,//客户收货            "express_trace"=>$express_trace,//快递跟踪信息            "address_info"=>[                "client"=>$info['client'],//客户姓名                "name"=>$info['name'],//收件人姓名                "country"=>$info['country'],//国家                "province"=>$info['province'],//省份                "city"=>$info['city'],//城市                "address"=>$info['address'],//地址                "address2"=>$info['address2'],//地址                "street"=>$info['street'],//街道                "phone"=>$info['phone'],//电话                "zipcode"=>$info['zipcode'],//邮编            ]        ];        die($this->logic_tools->ret_json(1,"success",$ret_arr));    }    }
 |