添加网站文件
This commit is contained in:
21
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/ExpressPrintService.php
vendored
Normal file
21
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/ExpressPrintService.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
class ExpressPrintService extends RpcService{
|
||||
|
||||
/**
|
||||
* 面单打印接口
|
||||
* 不支持机型: k4-wh, k4-wa, m1 (k4系列机型不建议使用不干胶热敏纸)
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $content array 面单数据
|
||||
* @param $originId string 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母
|
||||
* @return mixed
|
||||
*/
|
||||
public function index($machineCode, $content, $originId)
|
||||
{
|
||||
return $this->client->call('expressprint/index', array('machine_code' => $machineCode, 'content' => $content, 'origin_id' => $originId));
|
||||
}
|
||||
|
||||
}
|
||||
22
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/OauthService.php
vendored
Normal file
22
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/OauthService.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
class OauthService extends RpcService{
|
||||
|
||||
|
||||
/**
|
||||
* 设置推送URL接口
|
||||
*
|
||||
* @param $cmd string 推送队列键
|
||||
* @param $url string 推送地址
|
||||
* @param $status string 推送开关
|
||||
* @return mixed
|
||||
*/
|
||||
public function setPushUrl($cmd, $url, $status = 'open')
|
||||
{
|
||||
return $this->client->call('oauth/setpushurl', array('cmd' => $cmd, 'url' => $url, 'status' => $status));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
21
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PicturePrintService.php
vendored
Normal file
21
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PicturePrintService.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
class PicturePrintService extends RpcService{
|
||||
|
||||
|
||||
/**
|
||||
* 图形打印接口
|
||||
* 不支持机型: k4-wh, k4-wa, m1
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $pictureUrl string 图片链接地址
|
||||
* @param $originId string 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母
|
||||
* @return mixed
|
||||
*/
|
||||
public function index($machineCode, $pictureUrl, $originId)
|
||||
{
|
||||
return $this->client->call('pictureprint/index', array('machine_code' => $machineCode, 'picture_url' => $pictureUrl, 'origin_id' => $originId));
|
||||
}
|
||||
}
|
||||
19
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PrintMenuService.php
vendored
Normal file
19
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PrintMenuService.php
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
class PrintMenuService extends RpcService{
|
||||
|
||||
/**
|
||||
* 添加应用菜单接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $content string 菜单详情(json)
|
||||
* @return mixed
|
||||
*/
|
||||
public function addPrintMenu($machineCode, $content)
|
||||
{
|
||||
return $this->client->call('printmenu/addprintmenu', array('machine_code' => $machineCode, 'content' => $content));
|
||||
}
|
||||
|
||||
}
|
||||
19
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PrintService.php
vendored
Normal file
19
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PrintService.php
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
class PrintService extends RpcService{
|
||||
|
||||
/**
|
||||
* 打印接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $content string 打印内容
|
||||
* @param $originId string 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母
|
||||
* @return mixed
|
||||
*/
|
||||
public function index($machineCode, $content, $originId)
|
||||
{
|
||||
return $this->client->call('print/index', array('machine_code' => $machineCode, 'content' => $content, 'origin_id' => $originId));
|
||||
}
|
||||
}
|
||||
247
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PrinterService.php
vendored
Normal file
247
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/PrinterService.php
vendored
Normal file
@@ -0,0 +1,247 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
class PrinterService extends RpcService{
|
||||
|
||||
/**
|
||||
* 自有型应用授权终端
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $mSign string 机器密钥
|
||||
* @param string $printName 打印机昵称
|
||||
* @param string $phone gprs卡号
|
||||
* @return mixed
|
||||
*/
|
||||
public function addPrinter($machineCode, $mSign, $printName = '', $phone = '')
|
||||
{
|
||||
$params = array(
|
||||
'machine_code' => $machineCode,
|
||||
'msign' => $mSign,
|
||||
);
|
||||
if (!empty($phone)) {
|
||||
$params['phone'] = $phone;
|
||||
}
|
||||
if (!empty($printName)) {
|
||||
$params['print_name'] = $printName;
|
||||
}
|
||||
return $this->client->call('printer/addprinter', $params);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置内置语音接口
|
||||
* 注意: 仅支持K4-WA、K4-GAD、K4-WGEAD型号
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $content string 在线语音地址链接 or 自定义语音内容
|
||||
* @param bool $isFile true or false
|
||||
* @param string $aid int 0~9 , 定义需设置的语音编号,若不提交,默认升序
|
||||
* @return mixed
|
||||
*/
|
||||
public function setVoice($machineCode, $content, $isFile = false, $aid = '')
|
||||
{
|
||||
$params = array(
|
||||
'machine_code' => $machineCode,
|
||||
'content' => $content,
|
||||
'is_file' => $isFile,
|
||||
);
|
||||
if (!empty($aid)){
|
||||
$params ['aid'] = $aid;
|
||||
}
|
||||
return $this->client->call('printer/setvoice', $params);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除内置语音接口
|
||||
* 注意: 仅支持K4-WA、K4-GAD、K4-WGEAD型号
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $aid int 0 ~ 9 编号
|
||||
* @return mixed
|
||||
*/
|
||||
public function deleteVoice($machineCode, $aid)
|
||||
{
|
||||
return $this->client->call('printer/deletevoice', array('machine_code' => $machineCode, 'aid' => $aid));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除终端授权接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @return mixed
|
||||
*/
|
||||
public function deletePrinter($machineCode)
|
||||
{
|
||||
return $this->client->call('printer/deleteprinter', array('machine_code' => $machineCode));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关机重启接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $responseType string restart or shutdown
|
||||
* @return mixed
|
||||
*/
|
||||
public function shutdownRestart($machineCode, $responseType)
|
||||
{
|
||||
return $this->client->call('printer/shutdownrestart', array('machine_code' => $machineCode, 'response_type' => $responseType));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 声音调节接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $voice string 音量 0 or 1 or 2 or 3
|
||||
* @param $responseType string buzzer (蜂鸣器) or horn (喇叭)
|
||||
* @return mixed
|
||||
*/
|
||||
public function setsound($machineCode, $voice, $responseType)
|
||||
{
|
||||
return $this->client->call('printer/setsound', array('machine_code' => $machineCode, 'voice' => $voice, 'response_type' => $responseType));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取机型打印宽度接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @return mixed
|
||||
*/
|
||||
public function printInfo($machineCode)
|
||||
{
|
||||
return $this->client->call('printer/printinfo', array('machine_code' => $machineCode));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取机型软硬件版本接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @return mixed
|
||||
*/
|
||||
public function getVersion($machineCode)
|
||||
{
|
||||
return $this->client->call('printer/getversion', array('machine_code' => $machineCode));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 取消所有未打印订单接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @return mixed
|
||||
*/
|
||||
public function cancelAll($machineCode)
|
||||
{
|
||||
return $this->client->call('printer/cancelall', array('machine_code' => $machineCode));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 取消单条未打印订单接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $orderId string 未打印的易联云ID
|
||||
* @return mixed
|
||||
*/
|
||||
public function cancelOne($machineCode, $orderId)
|
||||
{
|
||||
return $this->client->call('printer/cancelone', array('machine_code' => $machineCode, 'order_id' => $orderId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置logo接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $imgUrl string logo链接地址
|
||||
* @return mixed
|
||||
*/
|
||||
public function setIcon($machineCode, $imgUrl)
|
||||
{
|
||||
return $this->client->call('printer/seticon', array('machine_code' => $machineCode, 'img_url' => $imgUrl));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 取消logo接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @return mixed
|
||||
*/
|
||||
public function deleteIcon($machineCode)
|
||||
{
|
||||
return $this->client->call('printer/deleteicon', array('machine_code' => $machineCode));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 打印方式接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $responseType string btnopen or btnclose
|
||||
* @return mixed
|
||||
*/
|
||||
public function btnPrint($machineCode, $responseType)
|
||||
{
|
||||
return $this->client->call('printer/btnprint', array('machine_code' => $machineCode, 'response_type' => $responseType));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 接单拒单设置接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $responseType string open or close
|
||||
* @return mixed
|
||||
*/
|
||||
public function getOrder($machineCode, $responseType)
|
||||
{
|
||||
return $this->client->call('printer/getorder', array('machine_code' => $machineCode, 'response_type' => $responseType));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取订单状态接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $orderId string 易联云订单id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getOrderStatus($machineCode, $orderId)
|
||||
{
|
||||
return $this->client->call('printer/getorderstatus', array('machine_code' => $machineCode, 'order_id' => $orderId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取订单列表接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @param $pageIndex int 第几页
|
||||
* @param $pageSize int 查询条数
|
||||
* @return mixed
|
||||
*/
|
||||
public function getOrderPagingList($machineCode, $pageIndex = 1 , $pageSize = 10)
|
||||
{
|
||||
return $this->client->call('printer/getorderpaginglist', array('machine_code' => $machineCode, 'page_index' => $pageIndex, 'page_size' => $pageSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取终端状态接口
|
||||
*
|
||||
* @param $machineCode string 机器码
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPrintStatus($machineCode)
|
||||
{
|
||||
return $this->client->call('printer/getprintstatus', array('machine_code' => $machineCode));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
17
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/RpcService.php
vendored
Normal file
17
vendor/yly-openapi/yly-openapi-sdk/Lib/Api/RpcService.php
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Api;
|
||||
|
||||
use App\Config\YlyConfig;
|
||||
use App\Protocol\YlyRpcClient;
|
||||
|
||||
class RpcService{
|
||||
|
||||
protected $client;
|
||||
|
||||
public function __construct($token, YlyConfig $config)
|
||||
{
|
||||
$this->client = new YlyRpcClient($token, $config);
|
||||
}
|
||||
|
||||
}
|
||||
32
vendor/yly-openapi/yly-openapi-sdk/Lib/Autoloader.php
vendored
Normal file
32
vendor/yly-openapi/yly-openapi-sdk/Lib/Autoloader.php
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
class Autoloader{
|
||||
|
||||
public static function loadByNamespace($name)
|
||||
{
|
||||
$class_path = str_replace('\\', DIRECTORY_SEPARATOR, $name);
|
||||
if (strpos($name, 'App\\') === 0) {
|
||||
$class_file = __DIR__ . substr($class_path, strlen('App')) . '.php';
|
||||
}elseif(empty($class_file) || !is_file($class_file)){
|
||||
$class_file = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . $class_path . ".php";
|
||||
}
|
||||
if (is_file($class_file)) {
|
||||
require_once ($class_file);
|
||||
if (class_exists($name, false)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
spl_autoload_register('\App\Autoloader::loadByNamespace');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
66
vendor/yly-openapi/yly-openapi-sdk/Lib/Config/YlyConfig.php
vendored
Normal file
66
vendor/yly-openapi/yly-openapi-sdk/Lib/Config/YlyConfig.php
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Config;
|
||||
|
||||
use InvalidArgumentException;
|
||||
class YlyConfig{
|
||||
|
||||
private $clientId = '';
|
||||
private $clientSecret = '';
|
||||
private $requestUrl = "https://open-api.10ss.net";
|
||||
private $log;
|
||||
|
||||
public function __construct($clientId, $clientSecret)
|
||||
{
|
||||
|
||||
if ($clientId == null || $clientId == "") {
|
||||
throw new InvalidArgumentException("clientId is required");
|
||||
}
|
||||
|
||||
if ($clientSecret == null || $clientSecret == "") {
|
||||
throw new InvalidArgumentException("clientSecret is required");
|
||||
}
|
||||
|
||||
$this->clientId = $clientId;
|
||||
$this->clientSecret = $clientSecret;
|
||||
}
|
||||
|
||||
public function getClientId()
|
||||
{
|
||||
return $this->clientId;
|
||||
}
|
||||
|
||||
|
||||
public function getClientSecret()
|
||||
{
|
||||
return $this->clientSecret;
|
||||
}
|
||||
|
||||
public function getRequestUrl()
|
||||
{
|
||||
return $this->requestUrl;
|
||||
}
|
||||
|
||||
public function setRequestUrl($requestUrl)
|
||||
{
|
||||
$this->requestUrl = $requestUrl;
|
||||
}
|
||||
|
||||
public function getLog()
|
||||
{
|
||||
return $this->log;
|
||||
}
|
||||
|
||||
public function setLog($log)
|
||||
{
|
||||
if (!method_exists($log, "info")) {
|
||||
throw new InvalidArgumentException("logger need have method 'info(\$message)'");
|
||||
}
|
||||
if (!method_exists($log, "error")) {
|
||||
throw new InvalidArgumentException("logger need have method 'error(\$message)'");
|
||||
}
|
||||
$this->log = $log;
|
||||
}
|
||||
|
||||
}
|
||||
125
vendor/yly-openapi/yly-openapi-sdk/Lib/Oauth/YlyOauthClient.php
vendored
Normal file
125
vendor/yly-openapi/yly-openapi-sdk/Lib/Oauth/YlyOauthClient.php
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
|
||||
namespace App\Oauth;
|
||||
|
||||
use App\Config\YlyConfig;
|
||||
use Exception;
|
||||
class YlyOauthClient{
|
||||
|
||||
private $clientId;
|
||||
private $clientSecret;
|
||||
private $tokenUrl;
|
||||
private $log;
|
||||
|
||||
|
||||
public function __construct(YlyConfig $config)
|
||||
{
|
||||
$this->clientId = $config->getClientId();
|
||||
$this->clientSecret = $config->getClientSecret();
|
||||
$this->tokenUrl = $config->getRequestUrl() . '/oauth/oauth';
|
||||
$this->log = $config->getLog();
|
||||
}
|
||||
|
||||
|
||||
public function getToken($code = '')
|
||||
{
|
||||
$time = time();
|
||||
$params = array(
|
||||
'client_id' => $this->clientId,
|
||||
'timestamp' => $time,
|
||||
'sign' => $this->getSign($time),
|
||||
'id' => $this->uuid4(),
|
||||
'scope' => 'all'
|
||||
);
|
||||
$params['grant_type'] = 'client_credentials';
|
||||
if (!empty($code)) {
|
||||
$params['code'] = $code;
|
||||
$params['grant_type'] = 'authorization_code';
|
||||
}
|
||||
return $this->send($params);
|
||||
}
|
||||
|
||||
|
||||
public function refreshToken($refreshToken)
|
||||
{
|
||||
$time = time();
|
||||
$params = array(
|
||||
'client_id' => $this->clientId,
|
||||
'timestamp' => $time,
|
||||
'sign' => $this->getSign($time),
|
||||
'id' => $this->uuid4(),
|
||||
'scope' => 'all',
|
||||
'grant_type' => 'refresh_token',
|
||||
'refresh_token' => $refreshToken,
|
||||
);
|
||||
return $this->send($params);
|
||||
}
|
||||
|
||||
|
||||
public function getSign($timestamp)
|
||||
{
|
||||
return md5(
|
||||
$this->clientId.
|
||||
$timestamp.
|
||||
$this->clientSecret
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public function uuid4(){
|
||||
mt_srand((double)microtime() * 10000);
|
||||
$charid = strtolower(md5(uniqid(rand(), true)));
|
||||
$hyphen = '-';
|
||||
$uuidV4 =
|
||||
substr($charid, 0, 8) . $hyphen .
|
||||
substr($charid, 8, 4) . $hyphen .
|
||||
substr($charid, 12, 4) . $hyphen .
|
||||
substr($charid, 16, 4) . $hyphen .
|
||||
substr($charid, 20, 12);
|
||||
return $uuidV4;
|
||||
}
|
||||
|
||||
|
||||
public function send($data)
|
||||
{
|
||||
$requestInfo = http_build_query($data);
|
||||
$log = $this->log;
|
||||
if ($log != null) {
|
||||
$log->info("request data: " . $requestInfo);
|
||||
}
|
||||
$curl = curl_init(); // 启动一个CURL会话
|
||||
curl_setopt($curl, CURLOPT_URL, $this->tokenUrl); // 要访问的地址
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
||||
'Expect:'
|
||||
)); // 解决数据包大不能提交
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
|
||||
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
|
||||
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestInfo); // Post提交的数据包
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
|
||||
$requestResponse = curl_exec($curl); // 执行操作
|
||||
$response = json_decode($requestResponse);
|
||||
if (curl_errno($curl)) {
|
||||
if ($log != null) {
|
||||
$log->error("error: " . curl_error($curl));
|
||||
}
|
||||
throw new Exception(curl_error($curl));
|
||||
}
|
||||
if (is_null($response)) {
|
||||
throw new Exception("illegal response :" . $requestResponse);
|
||||
}
|
||||
if ($response->error != 0 && $response->error_description != 'success') {
|
||||
throw new Exception(json_encode($response));
|
||||
}
|
||||
if ($this->log != null) {
|
||||
$this->log->info("response: " . json_encode($response));
|
||||
}
|
||||
curl_close($curl); // 关键CURL会话
|
||||
return $response->body; // 返回数据
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
113
vendor/yly-openapi/yly-openapi-sdk/Lib/Protocol/YlyRpcClient.php
vendored
Normal file
113
vendor/yly-openapi/yly-openapi-sdk/Lib/Protocol/YlyRpcClient.php
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace App\Protocol;
|
||||
|
||||
use App\Config\YlyConfig;
|
||||
use Exception;
|
||||
class YlyRpcClient{
|
||||
|
||||
private $clientId;
|
||||
private $clientSecret;
|
||||
private $requestUrl;
|
||||
private $token;
|
||||
private $log;
|
||||
|
||||
|
||||
public function __construct($token, YlyConfig $config)
|
||||
{
|
||||
$this->clientId = $config->getClientId();
|
||||
$this->clientSecret = $config->getClientSecret();
|
||||
$this->requestUrl = $config->getRequestUrl();
|
||||
$this->log = $config->getLog();
|
||||
$this->token = $token;
|
||||
}
|
||||
|
||||
|
||||
public function call($action, array $params)
|
||||
{
|
||||
$time = time();
|
||||
$params = array_merge(array(
|
||||
'client_id' => $this->clientId,
|
||||
'timestamp' => $time,
|
||||
'sign' => $this->getSign($time),
|
||||
'id' => $this->uuid4(),
|
||||
'access_token' => $this->token,
|
||||
), $params);
|
||||
$result = $this->send($params, $this->requestUrl . '/' .$action);
|
||||
$response = json_decode($result, false, 512, JSON_BIGINT_AS_STRING);
|
||||
if (is_null($response)) {
|
||||
throw new Exception("invalid response.",$response->error);
|
||||
}
|
||||
if (
|
||||
isset($response->error) &&
|
||||
$response->error != 0
|
||||
){
|
||||
$errorDescription = isset($response->body) ? $response->error_description . $response->body : $response->error_description;
|
||||
throw new Exception('Call method ' . $action . ' error code is ' . $response->error . ' error message is ' . $errorDescription,$response->error);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
public function getSign($timestamp)
|
||||
{
|
||||
return md5(
|
||||
$this->clientId.
|
||||
$timestamp.
|
||||
$this->clientSecret
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public function uuid4(){
|
||||
mt_srand((double)microtime() * 10000);
|
||||
$charid = strtolower(md5(uniqid(rand(), true)));
|
||||
$hyphen = '-';
|
||||
$uuidV4 =
|
||||
substr($charid, 0, 8) . $hyphen .
|
||||
substr($charid, 8, 4) . $hyphen .
|
||||
substr($charid, 12, 4) . $hyphen .
|
||||
substr($charid, 16, 4) . $hyphen .
|
||||
substr($charid, 20, 12);
|
||||
return $uuidV4;
|
||||
}
|
||||
|
||||
|
||||
public function send($data,$url)
|
||||
{
|
||||
$requestInfo = http_build_query($data);
|
||||
$log = $this->log;
|
||||
if ($log != null) {
|
||||
$log->info("request data: " . $requestInfo);
|
||||
}
|
||||
$curl = curl_init(); // 启动一个CURL会话
|
||||
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
||||
'Expect:'
|
||||
)); // 解决数据包大不能提交
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
|
||||
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
|
||||
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestInfo); // Post提交的数据包
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
|
||||
$response = curl_exec($curl); // 执行操作
|
||||
if (curl_errno($curl)) {
|
||||
if ($log != null) {
|
||||
$log->error("error: " . curl_error($curl));
|
||||
}
|
||||
throw new Exception(curl_error($curl));
|
||||
}
|
||||
if ($log != null) {
|
||||
$log->info("response: " . $response);
|
||||
}
|
||||
curl_close($curl); // 关键CURL会话
|
||||
return $response; // 返回数据
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user