193 行
6.7 KiB
PHP
可执行文件
193 行
6.7 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Common\Business;
|
|
|
|
|
|
use Make\Model\MakeModel;
|
|
|
|
//[1.5.66]
|
|
class Make
|
|
{
|
|
private static $get_order_detail; //订单详情
|
|
private static $cancel_order; //取消订单
|
|
private static $get_delivery_price; //查询价格
|
|
private static $create_order; //创建订单
|
|
private static $verify_token; //查看令牌是否有效
|
|
private static $get_token; //获取令牌
|
|
private static $merchant_id; //商户id
|
|
private static $store_id; //门店id
|
|
private static $data; //其他参数
|
|
private static $domain_name; //域名
|
|
private static $cache_state; //用于处理码科系统清除缓存重新生成token 1更新token
|
|
|
|
//链接
|
|
public function __construct($param)
|
|
{
|
|
self::$get_order_detail = '/addons/make_speed/core/public/index.php/apis/v2/get_order_detail';
|
|
self::$cancel_order = '/addons/make_speed/core/public/index.php/apis/v2/cancel_order';
|
|
self::$get_delivery_price = '/addons/make_speed/core/public/index.php/apis/v2/get_delivery_price';
|
|
self::$create_order = '/addons/make_speed/core/public/index.php/apis/v2/create_order';
|
|
self::$verify_token = '/addons/make_speed/core/public/index.php/apis/v2/verify_token';
|
|
self::$get_token = '/addons/make_speed/core/public/index.php/apis/v2/get_token';
|
|
self::$merchant_id = $param['merchant_id'];
|
|
self::$store_id = $param['store_id'];
|
|
self::$data = $param['data'];
|
|
self::$cache_state = $param['cache_state'] ? $param['cache_state'] : 0;
|
|
$this->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;
|
|
}
|
|
|
|
} |