文件
mashangyoujiu/Application/Common/Business/Make.class.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;
}
}