getToken(); } /** * 订单详情 */ public function get_order_detail() { $result = $this->request_post(self::$domain_name . self::$get_order_detail, self::$data); return $result; } /** * 取消订单 */ public function cancel_order() { $result = $this->request_post(self::$domain_name . self::$cancel_order, self::$data); return $result; } /** * 创建订单 */ public function create_order() { $result = $this->request_post(self::$domain_name . self::$create_order, self::$data); return $result; } /** * 查询价格 */ public function get_delivery_price() { $url = self::$domain_name . self::$get_delivery_price . '?token=' . self::$data['token'] . '&fromcoord=' . self::$data['fromcoord'] . '&tocoord=' . self::$data['tocoord'] . '&shop_id=' . self::$store_id; $result = $this->request_get($url); return $result; } /** * 查看令牌是否有效 */ public function verify_token() { $makeModel = new MakeModel(); $make_info = $makeModel->getFind([ 'merchant_id' => self::$merchant_id ]); $result = $this->request_post(self::$domain_name . self::$verify_token, [ 'token' => $make_info['request_token'] ]); return $result; } /** * 获取token */ public function getToken() { header("Content-type: text/html; charset=utf-8"); $time = time(); $makeModel = new MakeModel(); $make_info = $makeModel->getFind([ 'merchant_id' => self::$merchant_id ]); $title = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://'; if (!empty($make_info)) { self::$domain_name = $title . $make_info['domain_name']; if (empty($make_info['request_token']) || ($make_info['update_time'] + 259197 < $time) || empty($make_info['update_time']) || self::$cache_state == 1) { $result = $this->request_post(self::$domain_name . self::$get_token, [ 'token' => $make_info['token'], 'appid' => $make_info['app_id'] ]); $result = json_decode($result, true); if (!empty($result['token'])) { $makeModel->updateOrder([ 'merchant_id' => self::$merchant_id ], [ 'request_token' => $result['token'], 'update_time' => $time ]); self::$data['token'] = $result['token']; } else { self::$data['token'] = ''; } } else { self::$data['token'] = $make_info['request_token']; } } else { self::$data['token'] = ''; self::$domain_name = $title; } } private function request_post($url = '', $post_data = array()) { if (empty($url) || empty($post_data)) { return false; } $arr = []; foreach ($post_data as $key => $value) { $arr[] = $key . '=' . $value; } $curlPost = implode('&', $arr); $postUrl = $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $postUrl); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch); $err = curl_error($ch); if ($err) { return $err; } curl_close($ch); return $data; } private function request_get($url) { $header = ['Accept: text/html']; $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 0); // 超时设置,以秒为单位 curl_setopt($curl, CURLOPT_TIMEOUT, 1); // 超时设置,以毫秒为单位 // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500); // 设置请求头 curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //设置获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //执行命令 $data = curl_exec($curl); // 显示错误信息 if (curl_error($curl)) { print "Error: " . curl_error($curl); } else { // 打印返回的内容 curl_close($curl); } return $data; } }