print.class.php
4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
/**
* ELind Openapi SDK For PHP, Version:1.0
* Api WebSite :http://open.10ss.net/
* Api Doc :http://doc.10ss.net/
* @filename : print.class.php
* @author : heqian@yilianyun.net
* @date : 2016-07-11
*/
class Yprint
{
/**
* 生成签名sign
* @param array $params 参数
* @param string $apiKey API密钥
* @param string $msign 打印机密钥
* @return string sign
*/
public function generateSign($params, $apiKey,$msign)
{
//所有请求参数按照字母先后顺序排
ksort($params);
//定义字符串开始所包括的字符串
$stringToBeSigned = $apiKey;
//把所有参数名和参数值串在一起
foreach ($params as $k => $v)
{
$stringToBeSigned .= urldecode($k.$v);
}
unset($k, $v);
//定义字符串结尾所包括的字符串
$stringToBeSigned .= $msign;
//使用MD5进行加密,再转化成大写
return strtoupper(md5($stringToBeSigned));
}
/**
* 生成字符串参数
* @param array $param 参数
* @return string 参数字符串
*/
public function getStr($param)
{
$str = '';
foreach ($param as $key => $value) {
$str=$str.$key.'='.$value.'&';
}
$str = rtrim($str,'&');
return $str;
}
/**
* 打印接口
* @param int $partner 用户ID
* @param string $machine_code 打印机终端号
* @param string $content 打印内容
* @param string $apiKey API密钥
* @param string $msign 打印机密钥
*/
public function action_print($partner,$machine_code,$content,$apiKey,$msign)
{
$param = array(
"partner"=>$partner,
'machine_code'=>$machine_code,
'time'=>time(),
);
//获取签名
$param['sign'] = $this->generateSign($param,$apiKey,$msign);
$param['content'] = $content;
$str = $this->getStr($param);
return $this->sendCmd('http://open.10ss.net:8888',$str);
}
/**
* 添加打印机
* @param int $partner 用户ID1
* @param string $machine_code 打印机终端号
* @param string $username 用户名
* @param string $printname 打印机名称
* @param string $mobilephone 打印机卡号
* @param string $apiKey API密钥
* @param string $msign 打印机密钥
*/
public function action_addprint($partner,$machine_code,$username,$printname,$mobilephone,$apiKey,$msign)
{
$param = array(
'partner'=>$partner,
'machine_code'=>$machine_code,
'username'=>$username,
'printname'=>$printname,
'mobilephone'=>$mobilephone,
);
$param['sign'] = $this->generateSign($param,$apiKey,$msign);
$param['msign'] = $msign;
$str = $this->getStr($param);
return $this->sendCmd('http://open.10ss.net:8888/addprint.php',$str);
}
/**
* 删除打印机
* @param int $partner 用户ID
* @param string $machine_code 打印机终端号
* @param string $apiKey API密钥
* @param string $msign 打印机密钥
*/
public function action_removeprinter($partner,$machine_code,$apiKey,$msign)
{
$param = array(
'partner'=>$partner,
'machine_code'=>$machine_code,
);
$param['sign'] = $this->generateSign($param,$apiKey,$msign);
$str = $this->getStr($param);
return $this->sendCmd('http://open.10ss.net:8888/removeprint.php',$str);
}
/**
* 发起请求
* @param string $url 请求地址
* @param string $data 请求数据包
* @return string 请求返回数据
*/
public function sendCmd($url,$data)
{
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
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, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 关键CURL会话
return $tmpInfo; // 返回数据
}
}
?>