print.class.php 4.5 KB

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