businessParams = json_encode($data,JSON_UNESCAPED_UNICODE); $data = $this->bulidRequestParams(); $result = $this->getHttpRequestWithPost($data,'/api/order/queryDeliverFee'); if($result['status'] == 'success'){ return [ 'delivery_time' => '30分钟', //预计送达时间 'delivery_distance' => (int)$result['result']['distance'] . '米', //配送距离 'delivery_price' => '¥' . $result['result']['fee'] . '元', //配送费用 'delivery_no' => $result['result']['deliveryNo'], //配送单号 'time' => '', //预计送达时间 'distance' => $result['result']['distance'], //配送距离 'price' => $result['result']['fee'], //配送费用 'dada' => $result ]; } $this->error = $result['msg']; return false; } /** * 创建订单 - 查询运费后发单接口 */ public function addOrder($data = []) { $post_data = [ 'deliveryNo' => $data['delivery_no']//是 平台订单编号 ]; $this->businessParams = json_encode($post_data,JSON_UNESCAPED_UNICODE); $post_data = $this->bulidRequestParams(); $result = $this->getHttpRequestWithPost($post_data,'/api/order/addAfterQuery'); if($result['status'] == 'success'){ return $result; } $this->error = $result['msg']; return false; } /** * 取消订单 */ public function cancelOrder($order_no) { $post_data = [ 'order_id' => $order_no,//第三方订单编号 'cancel_reason_id' => 4, //取消原因ID //'cancel_reason' => ''//否 取消原因(当取消原因ID为其他时,此字段必填) ]; /* 取消原因ID 1 没有配送员接单 2 配送员没来取货 3 配送员态度太差 4 顾客取消订单 5 订单填写错误 34 配送员让我取消此单 35 配送员不愿上门取货 36 我不需要配送了 37 配送员以各种理由表示无法完成订单 10000 其他 */ $this->businessParams = json_encode($post_data,JSON_UNESCAPED_UNICODE); $post_data = $this->bulidRequestParams(); $result = $this->getHttpRequestWithPost($post_data,'/api/order/formalCancel'); if($result['status'] == 'success'){ return $result; } $this->error = $result['msg']; return false; } /** * 获取城市编码 */ public function getCiytCode($city) { $city = str_replace('市','',$city); $this->businessParams = ''; $post_data = $this->bulidRequestParams(); $post_data['app_secret'] = $this->config['app_secret']; $result = $this->getHttpRequestWithPost($post_data,'/api/cityCode/list'); $code = ''; for($n=0;$nconfig['api_url'] . $url; // json $headers = array( 'Content-Type: application/json', ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_TIMEOUT, 3); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $resp = curl_exec($curl); //var_dump(curl_error($curl));//如果在执行curl的过程中出现异常,可以打开此开关查看异常内容。 $info = curl_getinfo($curl); curl_close($curl); if (isset($info['http_code']) && $info['http_code'] == 200) { return json_decode($resp, true); } return false; } /** * 构造请求数据 * data:业务参数,json字符串 */ private function bulidRequestParams() { $requestParams['app_key'] = $this->config['app_key']; //应用Key,对应开发者账号中的app_key $requestParams['body'] = $this->businessParams; //业务参数,JSON字符串 $requestParams['format'] = 'json'; //请求格式,暂时只支持json $requestParams['source_id'] = $this->config['source_id']; //商户编号,测试环境默认为:73753 $requestParams['timestamp'] = time(); //时间戳,单位秒 $requestParams['v'] = '1.0'; //API版本 $requestParams['signature'] = $this->_sign($requestParams); //签名Hash值 return $requestParams; } /** * 签名生成signature */ private function _sign($data){ //1.升序排序 ksort($data); //2.字符串拼接 $args = ""; foreach ($data as $key => $value) { $args.=$key.$value; } $args = $this->config['app_secret'] . $args . $this->config['app_secret']; //3.MD5签名,转为大写 $sign = strtoupper(md5($args)); return $sign; } }